par
Snheed » 27 déc. 2006, 11:42
Merci zeus, je comprends mieux.
Par contre, j'aurais dû être plus clair au départ car ce n'est pas encore tout à fait ce que je veux. J'ai simplifié au maximum en espérant pouvoir m'en sortir tout seul par la suite mais je n'y arrive pas. Je vais donc essayer d'être plus clair.
J'ai un tableau qui contient des informations (types de voiture, couleurs, options,...) et je souhaiterais afficher certaines lignes de ce tableau en fonction d'informations saisies dans un formulaire de recherche. Sachant que mon formulaire contient 10 critères de recherche et que l'utilisateur à la possibilité de faire une recherche sur qu'un seul critère, je ne vais pas imbriquer des "IF" pour avoir toutes les possibilités. C'est pourquoi, j'avais pensé tester la saisie des différents critères et créer une variable de condition qui une fois générée pourrait être appelée pour afficher le résultat.
J'ai simplifié mon code à 3 critères pour vous montrer :
Code : Tout sélectionner
<html>
<body>
<form method="POST">
<table>
<tr>
<td>voiture :</td>
<td>
<select name="voiture" size="1">
<option> </option>
<option value="1">205</option>
<option value="2">206</option>
<option value="3">207</option>
</select>
</td>
</tr>
<tr>
<td>couleur :</td>
<td>
<select name="couleur" size="1">
<option> </option>
<option value="1">rouge</option>
<option value="2">bleu</option>
<option value="3">vert</option>
</select>
</td>
</tr>
<tr>
<td>option :</td>
<td>
<select name="option" size="1">
<option> </option>
<option value="1">vitres éléctriques</option>
<option value="2">fermeture centralisée</option>
<option value="3">ABS</option>
</select>
</td>
</tr>
</table>
<input type="Submit" value="OK">
</form>
<?php
error_reporting(0);
$tableau[0]=array(1,1,1);
$tableau[1]=array(1,1,2);
$tableau[2]=array(1,2,1);
$tableau[3]=array(2,1,1);
$tableau[4]=array(2,1,2);
$tableau[5]=array(3,1,1);
if ($_POST["voiture"]){$action= $action && ($_POST['voiture']==$tableau[$i][0]);}
if ($_POST["couleur"]){$action= $action && ($_POST['couleur']==$tableau[$i][1]);}
if ($_POST["option"]){$action= $action && ($_POST['option']==$tableau[$i][2]);}
for ($i=0;$i<10;$i++){
if (eval($action)){
echo $tableau[$i][0]."-".$tableau[$i][1]."-".$tableau[$i][2]."<br>";
}
}
?>
</body>
</html>
Vos premières réponses m'ont bien permis de comprendre comment imbriquer mes différents tests mais j'ai l'impression que la variable de condition finale n'est pas interprété correctement.
Peut être y'a t'il une solution plus simple d'aborder le problème...
Merci encore pour votre aide.
Snheed
Merci zeus, je comprends mieux.
Par contre, j'aurais dû être plus clair au départ car ce n'est pas encore tout à fait ce que je veux. J'ai simplifié au maximum en espérant pouvoir m'en sortir tout seul par la suite mais je n'y arrive pas. Je vais donc essayer d'être plus clair.
J'ai un tableau qui contient des informations (types de voiture, couleurs, options,...) et je souhaiterais afficher certaines lignes de ce tableau en fonction d'informations saisies dans un formulaire de recherche. Sachant que mon formulaire contient 10 critères de recherche et que l'utilisateur à la possibilité de faire une recherche sur qu'un seul critère, je ne vais pas imbriquer des "IF" pour avoir toutes les possibilités. C'est pourquoi, j'avais pensé tester la saisie des différents critères et créer une variable de condition qui une fois générée pourrait être appelée pour afficher le résultat.
J'ai simplifié mon code à 3 critères pour vous montrer :
[code]<html>
<body>
<form method="POST">
<table>
<tr>
<td>voiture :</td>
<td>
<select name="voiture" size="1">
<option> </option>
<option value="1">205</option>
<option value="2">206</option>
<option value="3">207</option>
</select>
</td>
</tr>
<tr>
<td>couleur :</td>
<td>
<select name="couleur" size="1">
<option> </option>
<option value="1">rouge</option>
<option value="2">bleu</option>
<option value="3">vert</option>
</select>
</td>
</tr>
<tr>
<td>option :</td>
<td>
<select name="option" size="1">
<option> </option>
<option value="1">vitres éléctriques</option>
<option value="2">fermeture centralisée</option>
<option value="3">ABS</option>
</select>
</td>
</tr>
</table>
<input type="Submit" value="OK">
</form>
<?php
error_reporting(0);
$tableau[0]=array(1,1,1);
$tableau[1]=array(1,1,2);
$tableau[2]=array(1,2,1);
$tableau[3]=array(2,1,1);
$tableau[4]=array(2,1,2);
$tableau[5]=array(3,1,1);
if ($_POST["voiture"]){$action= $action && ($_POST['voiture']==$tableau[$i][0]);}
if ($_POST["couleur"]){$action= $action && ($_POST['couleur']==$tableau[$i][1]);}
if ($_POST["option"]){$action= $action && ($_POST['option']==$tableau[$i][2]);}
for ($i=0;$i<10;$i++){
if (eval($action)){
echo $tableau[$i][0]."-".$tableau[$i][1]."-".$tableau[$i][2]."<br>";
}
}
?>
</body>
</html>[/code]
Vos premières réponses m'ont bien permis de comprendre comment imbriquer mes différents tests mais j'ai l'impression que la variable de condition finale n'est pas interprété correctement.
Peut être y'a t'il une solution plus simple d'aborder le problème...
Merci encore pour votre aide.
Snheed