2013-05-30 4 views
-1

J'ai une table mysql d'un produit avec plus de 6 services ajoutés (colonne).comment sélectionner une ligne mysql avec des valeurs mutliple correspondre

Les colonnes que vous pouvez considérer comme service1, service2, service3, service4, service5, service6

Maintenant, je suis affichant la table des données sur une page. Pour filtrer cette table en conséquence, j'utilise un formulaire incluant des cases à cocher pour chaque service.

chaque case a un value = "Yes"

Maintenant, quand je sélectionne les services et appuyez sur le bouton d'envoi il mettra à jour la page avec le passage de paramètre de requête comme celui-ci

page.php?service1=Yes&service2=Yes&service3=&service4=&service5=Yes&service6= 

ici ces services sont vides que signifie que je n'ai pas sélectionné dans le formulaire afin qu'ils viennent vide ici. Si je les sélectionne, il y aura une valeur Oui.

Je souhaite sélectionner les lignes du tableau avec des services ayant des valeurs "Oui". et ignorez les valeurs qui ne sont pas des valeurs.

comment faire?

+0

C'est assez simple avec une clause WHERE. Avez-vous essayé quelque chose? – enenen

+0

S'il vous plaît essayer de résoudre votre problème vous-même avant de demander ici. Si vous arrivez à un point où vous ne pouvez pas progresser parce que vous ne comprenez pas où est le problème, alors demandez. mais cela signifie que vous pouvez poser une question spécifique, pas quelque chose comme "comment puis-je programmer quelque chose" ... – arkascha

+0

oui mais s'il n'y aura pas de valeur sur le paramètre de requête je veux ignorer cela. comme si service1 = Oui et service2 n'est pas = oui ou vide il ne sera pas mis sur la clause WHERE –

Répondre

1

J'écris une réponse, mais s'il vous plaît essayer de faire un peu d'effort avant de demander la prochaine fois:

HTML:

<form name="form" method="get" action=""> 
    Service 1: <input type="checkbox" name="service1"/><br/> 
    Service 2: <input type="checkbox" name="service2"/><br/> 
    Service 3: <input type="checkbox" name="service3"/><br/> 
    Service 4: <input type="checkbox" name="service4"/><br/> 
    Service 5: <input type="checkbox" name="service5"/><br/> 
    Service 6: <input type="checkbox" name="service6"/><br/><br/> 
    <input type="submit" value="Search" name="submit"/> 
</form> 

PHP:

if(isset($_GET['submit'])) { // If the form is submitted 
    $services = array(); // Define an empty array 

    for($i = 1; $i<=6; $i++) { 
     if($_GET["service$i"]) { // If Service(x) checkbox is checked 
      $services[] = "service$i = 'Yes'"; // Add to array 
     } 
    } 

    if(count($services) > 0) { 
     print_r($services); // Here are all choosed services 

     $selectQuery = "SELECT * FROM products WHERE " . implode(' AND ', $services) . ";"; 
     // Take a look what implode function does: http://php.net/manual/en/function.implode.php 

     echo $selectQuery; // Now fetch the result using this query 
    } else { 
     // There is not any service checked. Maybe you can just get all the information from the table in this case. 
    } 
} 
0

-vous est-ce que vous voulez vérifier que vous voulez que certains champs soient vides et que certains soient 'Oui'?

Si donc quelque chose comme ceci: -

<?php 

$RequiredVars = array('service1'=>'Yes','service2'=>'Yes','service3'=>'Yes','service4'=>'Yes','service5'=>'Yes','service6'=>'Yes'); 

$Clause = array(); 
foreach($_REQUEST AS $Field=>$Value) 
{ 
    if (array_key_exists($Field, $RequiredVars)) 
    { 
     $Clause[] = " $Field = '".mysql_real_escape_string($Value)."' "; 
    } 
} 

$sql = "SELECT * FROM SomeTable "; 

if (count($Clause) > 0) 
{ 
    $sql .= "WHERE ".implode(' AND ', $Clause); 
} 

?> 
Questions connexes