PHP Formulaire, quelques questions.
Magyc41
Messages postés
57
Statut
Membre
-
Alain_42 Messages postés 5413 Statut Membre -
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
Je précise en premier lieu que je suis débutant en PHP. Je réalise un projet dans le cadre de mes études ... projet qui a pour but justement de me faire progresser !
Je vais vous expliquer ce que je veux faire au final, car peut être que ma manière de faire n'est pas la bonne ... en plus de ne pas arriver à la coder. Je ne vais pas balancer mon code tout de suite.
J'ai une table localisation dans ma base de données.
Elle se compose de plusieurs champs : ID_LOCA, ETAGE, SALLE, FRIGO, TIROIR, BAC
J'ai une table bactérie : ID_BACT, ID_LOCA, NOM_BACT, ... ...
J'aimerai réaliser une recherche qui m'indique le nom de ma bactérie en fonction de la localisation que j'ai choisis. Je veux avoir des liste déroulante pour choisir mon étage, puis ma salle, etc ... valider le tout et que sa me retourne mon nom de bactérie.
J'avais dans une premier temps mis toutes mes listes déroulante à la suite avec un bouton envoyer à la fin du type POST. Malheureusement, sa ne marche pas, je pense que que le bouton n'a pas pris en compte mes 5 variables de localisation. Est il possible simplement faire en sorte que mon bouton prenne mes 5 variable en compte d'un coup?
N'y arrivant pas, j'ai tenté une autre technique.
Faire ma première liste (ETAGE) , placer mon bouton et récupérer le résultat dans un $_POST.
Une fois ça fait, faire des if imbriquer :
Si précédente valeur (dans mon $_POST) vide alors rien, sinon balancer ma seconde liste (SALLE) avec un nouveau bouton valider pour récupérer mon étage dans un second $_POST ... et ainsi de suite.
Est ce possible ? (j'ai des erreurs de syntaxe ... et je me dis que ce n'est peut être pas possible.
Si quelqu'un veut bien prendre la peine de m'aider, je lui en serais très reconnaissant.
Je précise en premier lieu que je suis débutant en PHP. Je réalise un projet dans le cadre de mes études ... projet qui a pour but justement de me faire progresser !
Je vais vous expliquer ce que je veux faire au final, car peut être que ma manière de faire n'est pas la bonne ... en plus de ne pas arriver à la coder. Je ne vais pas balancer mon code tout de suite.
J'ai une table localisation dans ma base de données.
Elle se compose de plusieurs champs : ID_LOCA, ETAGE, SALLE, FRIGO, TIROIR, BAC
J'ai une table bactérie : ID_BACT, ID_LOCA, NOM_BACT, ... ...
J'aimerai réaliser une recherche qui m'indique le nom de ma bactérie en fonction de la localisation que j'ai choisis. Je veux avoir des liste déroulante pour choisir mon étage, puis ma salle, etc ... valider le tout et que sa me retourne mon nom de bactérie.
J'avais dans une premier temps mis toutes mes listes déroulante à la suite avec un bouton envoyer à la fin du type POST. Malheureusement, sa ne marche pas, je pense que que le bouton n'a pas pris en compte mes 5 variables de localisation. Est il possible simplement faire en sorte que mon bouton prenne mes 5 variable en compte d'un coup?
N'y arrivant pas, j'ai tenté une autre technique.
Faire ma première liste (ETAGE) , placer mon bouton et récupérer le résultat dans un $_POST.
Une fois ça fait, faire des if imbriquer :
Si précédente valeur (dans mon $_POST) vide alors rien, sinon balancer ma seconde liste (SALLE) avec un nouveau bouton valider pour récupérer mon étage dans un second $_POST ... et ainsi de suite.
Est ce possible ? (j'ai des erreurs de syntaxe ... et je me dis que ce n'est peut être pas possible.
Si quelqu'un veut bien prendre la peine de m'aider, je lui en serais très reconnaissant.
A voir également:
- PHP Formulaire, quelques questions.
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
14 réponses
sur le principe ta 2ème solution est la meilleure, mais dans la mise en place, ça va être assez lourd à gérer, mais pas impossible.
en général pour ce genre de chose, on utilise de l'ajax, mais c'est un peu prématuré pour toi je pense.
Par contre, il serait plus judicieux de passer en GET, ça sera plus facile à gérer
en général pour ce genre de chose, on utilise de l'ajax, mais c'est un peu prématuré pour toi je pense.
Par contre, il serait plus judicieux de passer en GET, ça sera plus facile à gérer
En GET plus facile ?
si c'est une liste select en POST ça ne pose aucun problème et ça évite bien des url à rallonge dans la barre d'adresse.
En Ajax c'est sur que ce sera plus fluide, pas de rechargement de page, mais pour apprendre le php, tu peux très bien tout faire en php avec rechargement de la page
Il faut par contre que tu pense garder la selection précédemment faite dans ta liste 1, lors du rechargement de la page pour la liste 2
Quand tu en sera la on te donnera l'astuce pour cela.
si c'est une liste select en POST ça ne pose aucun problème et ça évite bien des url à rallonge dans la barre d'adresse.
En Ajax c'est sur que ce sera plus fluide, pas de rechargement de page, mais pour apprendre le php, tu peux très bien tout faire en php avec rechargement de la page
Il faut par contre que tu pense garder la selection précédemment faite dans ta liste 1, lors du rechargement de la page pour la liste 2
Quand tu en sera la on te donnera l'astuce pour cela.
Merci de vos réponse, je vais donc essayer la seconde solution si elle est plus réalisable.
J'ai essayé de réaliser dans un premier temps mon premier étage de if, les autres devant je l'espère suivre le même principe.
Je confirme que je préfère rester en PHP et essayer de le maitriser un minimum avant de passer à autres choses !
Voilà le code que j'ai fait, avec l'erreur que j'ai actuellement.
L'erreur :
Parse error: syntax error, unexpected '<' in D:\Magyc\programme\wamp\www\Projet\test.php on line 48
Le code :
J'ai essayé de réaliser dans un premier temps mon premier étage de if, les autres devant je l'espère suivre le même principe.
Je confirme que je préfère rester en PHP et essayer de le maitriser un minimum avant de passer à autres choses !
Voilà le code que j'ai fait, avec l'erreur que j'ai actuellement.
L'erreur :
Parse error: syntax error, unexpected '<' in D:\Magyc\programme\wamp\www\Projet\test.php on line 48
Le code :
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- Test de forumulaire emplacement -->
Veuillez selectionner un etage : <br><br>
<form method="post">
<select name="search1">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)):
echo "<option>".$valeur1["ETAGE"]."</option>";
endwhile; ?>
</select><br><br>
<input type="submit" value="Envoyer">
<?php if (empty($_POST['search1'])) :
echo "test recherche1";
else :
echo '<br><br>';
echo 'Veuillez selectionner une salle';
echo '<br><br>';
<select name="search2">
<option value=' '>---Votre choix---</option>
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)):
echo "<option>".$valeur2["SALLE"]."</option>";
endwhile;
</select>
<input type="submit" value="Envoyer">
endif;
?>
<!-- echo $_POST['search1']; -->
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je ne voit pas la différences entre GET et POST pour faire la manip dont tu parles, et il serait quand même judicieux de laisser toutes les listes déja utilisées , l'utilisateur peut changer d'avis.
Et il faut faire le submit sur le onchange des listes (pas de bouton)
Et il faut faire le submit sur le onchange des listes (pas de bouton)
Les données des listes ne dépendent pas les une des autres.
J'ai un nombre de localisation définit et elles sont toutes créés. Dans chaque liste, il n'y a que deux ou trois choix maximum a faire et il n'y a que deux cas possible quelque soit le choix :
Un nom de bactérie est retourné
Ou l'emplacement est vide.
J'ai un nombre de localisation définit et elles sont toutes créés. Dans chaque liste, il n'y a que deux ou trois choix maximum a faire et il n'y a que deux cas possible quelque soit le choix :
Un nom de bactérie est retourné
Ou l'emplacement est vide.
Je vais faire un c/c partiel de ma table localisation, se sera peut être plus clair ^^
J'ai au total 2 étage, 4 salles (2 par étage), 8 frigo (2 par salle), 24 tiroirs (trois par frigo) et 48 bac (2 par tiroir).
Ils ont tous les même nom (1 ou 2 / A ou B etc ..) C'est la combinaison de ses chiffres qui définit un BAC bien précis, qui a une ID unique.
http://img15.hostingpics.net/pics/803630localisation.png
J'ai au total 2 étage, 4 salles (2 par étage), 8 frigo (2 par salle), 24 tiroirs (trois par frigo) et 48 bac (2 par tiroir).
Ils ont tous les même nom (1 ou 2 / A ou B etc ..) C'est la combinaison de ses chiffres qui définit un BAC bien précis, qui a une ID unique.
http://img15.hostingpics.net/pics/803630localisation.png
Le code de ma première solution sans les if imbriqués.
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form method="post">
<select name="search1">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)):
echo "<option>".$valeur1["ETAGE"]."</option>";
endwhile; ?>
</select><br><br>
<!-- SELECTION D'UNE SALLE -->
Veuillez selectionner une salle <br><br>
<select name="search2">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)):
echo "<option>".$valeur2["SALLE"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN FRIGO -->
Veuillez selectionner un frigo <br><br>
<select name="search3">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct FRIGO FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur3=mysql_fetch_array($liste)):
echo "<option>".$valeur3["FRIGO"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN TIROIR -->
Veuillez selectionner un tiroir <br><br>
<select name="search4">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct TIROIR FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur4=mysql_fetch_array($liste)):
echo "<option>".$valeur4["TIROIR"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN BAC -->
Veuillez selectionner un tiroir <br><br>
<select name="search5">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct BAC FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur5=mysql_fetch_array($liste)):
echo "<option>".$valeur5["BAC"]."</option>";
endwhile;?>
</select><br><br>
</form>
<?php if (empty($_POST['search1']) OR ($_POST['search2']) OR ($_POST['search3']) OR ($_POST['search4']) OR ($_POST['search5'])):
echo " ";
else:
$sql4= "SELECT NOM_BACT FROM bacterie WHERE ID_LOCA = ( SELECT ID_LOCA FROM localisation WHERE ETAGE= '".$_POST["search1"]."', SALLE='".$_POST["search2"]."', FRIGO='".$_POST["search3"]."', TIROIR='".$_POST["search4"]."', BAC='".$_POST["search5"]."' )";
$resultat = mysql_query($sql4);
while($ligne=mysql_fetch_array($resultat)):
echo"test";
echo "La bacterie recherchee est : "; echo $ligne['NOM_BACT']."<br />";echo"<br>";
endwhile;
endif;
?>
<br><br>
<input type="submit" value="Rechercher">
<br>
<br>
J'ai mis ça, mais toujours le même soucis.
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form method="post">
<select name="search1">
<option value='".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."'>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)):
echo "<option>".$valeur1["ETAGE"]."</option>";
endwhile; ?>
</select><br><br>
<!-- SELECTION D'UNE SALLE -->
Veuillez selectionner une salle <br><br>
<select name="search2">
<option value='".$valeur1["SALLE"].">".$valeur1["SALLE"]."'>---Votre choix---</option>
<?php
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)):
echo "<option>".$valeur2["SALLE"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN FRIGO -->
Veuillez selectionner un frigo <br><br>
<select name="search3">
<option value='".$valeur1["FRIGO"].">".$valeur1["FRIGO"]."'>---Votre choix---</option>
<?php
$sql3= "SELECT distinct FRIGO FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur3=mysql_fetch_array($liste)):
echo "<option>".$valeur3["FRIGO"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN TIROIR -->
Veuillez selectionner un tiroir <br><br>
<select name="search4">
<option value='".$valeur1["TIROIR"].">".$valeur1["TIROIR"]."'>---Votre choix---</option>
<?php
$sql3= "SELECT distinct TIROIR FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur4=mysql_fetch_array($liste)):
echo "<option>".$valeur4["TIROIR"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN BAC -->
Veuillez selectionner un tiroir <br><br>
<select name="search5">
<option value='".$valeur1["BAC"].">".$valeur1["BAC"]."'>---Votre choix---</option>
<?php
$sql3= "SELECT distinct BAC FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur5=mysql_fetch_array($liste)):
echo "<option>".$valeur5["BAC"]."</option>";
endwhile;?>
</select><br><br>
</form>
<?php if (empty($_POST['search1']) OR ($_POST['search2']) OR ($_POST['search3']) OR ($_POST['search4']) OR ($_POST['search5'])):
echo " ";
else:
$sql4= "SELECT NOM_BACT FROM bacterie WHERE ID_LOCA = ( SELECT ID_LOCA FROM localisation WHERE ETAGE= '".$_POST["search1"]."', SALLE='".$_POST["search2"]."', FRIGO='".$_POST["search3"]."', TIROIR='".$_POST["search4"]."', BAC='".$_POST["search5"]."' )";
$resultat = mysql_query($sql4);
while($ligne=mysql_fetch_array($resultat)):
echo"test";
echo "La bacterie recherchee est : "; echo $ligne['NOM_BACT']."<br />";echo"<br>";
endwhile;
endif;
?>
<br><br>
<input type="submit" value="Rechercher">
<br>
<br>
non, tu as modifié au mauvais endroit, c'était très bien comme c'était à ces lignes, c'est dans ton while qu'il faut le faire.
Tu as modifié la ligne par défaut, qui doit renvoyer une valeur vide (tu as mis un espace, mais peu importe), alors que ce que tu veux, c'est que quand on sélectionne une ligne de la liste, ça renvoie la valeur associée.
Tu as :
comme il n'y a pas de value, ça ne renvoie rien, il faut changer en :
Tu as modifié la ligne par défaut, qui doit renvoyer une valeur vide (tu as mis un espace, mais peu importe), alors que ce que tu veux, c'est que quand on sélectionne une ligne de la liste, ça renvoie la valeur associée.
Tu as :
echo "<option>".$valeur1["ETAGE"]."</option>";
comme il n'y a pas de value, ça ne renvoie rien, il faut changer en :
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";
Haa je me disais aussi ... ^^
J'ai un autre problème maintenant ... Dans ma première liste déroulante j'ai bien mes choix 1 ou 2 pour les étage, mais j'ai plus rien dans les autres listes.
Le code :
J'ai un autre problème maintenant ... Dans ma première liste déroulante j'ai bien mes choix 1 ou 2 pour les étage, mais j'ai plus rien dans les autres listes.
Le code :
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form method="post">
<select name="search1">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";;
endwhile; ?>
</select><br><br>
<!-- SELECTION D'UNE SALLE -->
Veuillez selectionner une salle <br><br>
<select name="search2">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["SALLE"].">".$valeur1["SALLE"]."</option>";;
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN FRIGO -->
Veuillez selectionner un frigo <br><br>
<select name="search3">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct FRIGO FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur3=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["FRIGO"].">".$valeur1["FRIGO"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN TIROIR -->
Veuillez selectionner un tiroir <br><br>
<select name="search4">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct TIROIR FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur4=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["TIROIR"].">".$valeur1["TIROIR"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN BAC -->
Veuillez selectionner un tiroir <br><br>
<select name="search5">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct BAC FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur5=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["BAC"].">".$valeur1["BAC"]."</option>";
endwhile;?>
</select><br><br>
</form>
<?php if (empty($_POST['search1']) OR ($_POST['search2']) OR ($_POST['search3']) OR ($_POST['search4']) OR ($_POST['search5'])):
echo " ";
else:
$sql4= "SELECT NOM_BACT FROM bacterie WHERE ID_LOCA = ( SELECT ID_LOCA FROM localisation WHERE ETAGE= '".$_POST["search1"]."', SALLE='".$_POST["search2"]."', FRIGO='".$_POST["search3"]."', TIROIR='".$_POST["search4"]."', BAC='".$_POST["search5"]."' )";
$resultat = mysql_query($sql4);
while($ligne=mysql_fetch_array($resultat)):
echo"test";
echo "La bacterie recherchee est : "; echo $ligne['NOM_BACT']."<br />";echo"<br>";
endwhile;
endif;
?>
<br><br>
<input type="submit" value="Rechercher">
<br>
<br>
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";;
un ; en trop, c'est peut être ça
Malheureusement non, j'ai enlevé le ' ; ' en trop aux deux endroits mais toujours rien qui s'affiche mise à part dans ma première liste !
quand tu fais ça, tu mélanges 2 choses : le HTML et le PHP
une ligne d'un select en HTML ça donne :
le PHP permet d'afficher dynamiquement quelque chose dans cette ligne et de construire le code HTML voulu. Je ne sais pas si je suis très clair...
la 1ère $valeur1["SALLE"] donne la valeur qui sera récupérée par le POST du formulaire, la 2nde permet l'affichage dans la page. Tu me suis ?
une ligne d'un select en HTML ça donne :
<option value="valeurdelaligne">intitulé de la ligne</option>
le PHP permet d'afficher dynamiquement quelque chose dans cette ligne et de construire le code HTML voulu. Je ne sais pas si je suis très clair...
la 1ère $valeur1["SALLE"] donne la valeur qui sera récupérée par le POST du formulaire, la 2nde permet l'affichage dans la page. Tu me suis ?
ton 2ème while, tu fais :
mais ensuite tu fais :
je te laisse deviner l'erreur ;)
attention aux copier/coller ^^
while ($valeur2=mysql_fetch_array($liste)):
mais ensuite tu fais :
echo "<option value=".$valeur1["SALLE"].">".$valeur1["SALLE"]."</option>";
je te laisse deviner l'erreur ;)
attention aux copier/coller ^^
ton if n'est pas correct, la condition sera toujours vraie.
comme ton traitement est dans ton else, on n'y entrera jamais.
quelque chose comme ça serait mieux :
avec ça ?
if (empty($_POST['search1']) OR ($_POST['search2']) OR ($_POST['search3']) OR ($_POST['search4']) OR ($_POST['search5'])):
comme ton traitement est dans ton else, on n'y entrera jamais.
quelque chose comme ça serait mieux :
if ( $_POST['search1'] != ' ' && $_POST['search2'] != ' ' && $_POST['search3'] != ' ' && $_POST['search4'] != ' ' && $_POST['search5'] != ' ' )
avec ça ?
Hum, j'avais des suspicions sur mon if oui, alors je l'ai remplacé par le tiens, en rajoutant : à la fin et j'ai des messages d'erreurs
Notice: Undefined index: search1 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search2 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search3 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search4 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search5 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
Notice: Undefined index: search1 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search2 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search3 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search4 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search5 in D:\Magyc\programme\wamp\www\Projet\text.php on line 124
Call Stack
# Time Memory Function Location
1 0.0004 699744 {main}( ) ..\text.php:0
Voilà le code.
Après celui ci, j'ai mis les erreurs affichées. Les erreurs sont les même au premier chargement de page et après remplissage du formulaire.
Je me demandais aussi si mon bouton était correct
( ! ) Notice: Undefined index: search1 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search2 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search3 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search4 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search5 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\Magyc\programme\wamp\www\Projet\text.php on line 135
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
2 0.0084 714072 mysql_fetch_array ( ) ..\text.php:135
array (size=0)
empty
Après celui ci, j'ai mis les erreurs affichées. Les erreurs sont les même au premier chargement de page et après remplissage du formulaire.
Je me demandais aussi si mon bouton était correct
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form method="post">
<select name="search1">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)):
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";
endwhile; ?>
</select><br><br>
<!-- SELECTION D'UNE SALLE -->
Veuillez selectionner une salle <br><br>
<select name="search2">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)):
echo "<option value=".$valeur2["SALLE"].">".$valeur2["SALLE"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN FRIGO -->
Veuillez selectionner un frigo <br><br>
<select name="search3">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct FRIGO FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur3=mysql_fetch_array($liste)):
echo "<option value=".$valeur3["FRIGO"].">".$valeur3["FRIGO"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN TIROIR -->
Veuillez selectionner un tiroir <br><br>
<select name="search4">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct TIROIR FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur4=mysql_fetch_array($liste)):
echo "<option value=".$valeur4["TIROIR"].">".$valeur4["TIROIR"]."</option>";
endwhile;?>
</select><br><br>
<!-- SELECTION D'UN BAC -->
Veuillez selectionner un tiroir <br><br>
<select name="search5">
<option value=' '>---Votre choix---</option>
<?php
$sql3= "SELECT distinct BAC FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur5=mysql_fetch_array($liste)):
echo "<option value=".$valeur5["BAC"].">".$valeur5["BAC"]."</option>";
endwhile;?>
</select><br><br>
</form>
<?php
// if (empty($_POST['search1']) OR ($_POST['search2']) OR ($_POST['search3']) OR ($_POST['search4']) OR ($_POST['search5'])):
if ( isset($_POST['search1']) && $_POST['search1'] != ' ' && isset($_POST['search2']) && $_POST['search2'] != ' ' && isset($_POST['search3']) && $_POST['search3'] != ' ' && isset($_POST['search4']) && $_POST['search4'] != ' ' && isset($_POST['search5']) && $_POST['search5'] != ' ' ) :
echo " TEST ";
else:
$sql4= "SELECT NOM_BACT FROM bacterie WHERE ID_LOCA = ( SELECT ID_LOCA FROM localisation WHERE ETAGE= '".$_POST["search1"]."', SALLE='".$_POST["search2"]."', FRIGO='".$_POST["search3"]."', TIROIR='".$_POST["search4"]."', BAC='".$_POST["search5"]."' )";
$resultat = mysql_query($sql4);
while($ligne=mysql_fetch_array($resultat)):
echo"test";
echo "La bacterie recherchee est : "; echo $ligne['NOM_BACT']."<br />";echo"<br>";
endwhile;
endif;
if ( isset($_POST) ) {
var_dump($_POST);
}
?>
<br><br>
<input type="submit" value="Rechercher">
<br>
<br>
( ! ) Notice: Undefined index: search1 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search2 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search3 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search4 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Notice: Undefined index: search5 in D:\Magyc\programme\wamp\www\Projet\text.php on line 133
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\Magyc\programme\wamp\www\Projet\text.php on line 135
Call Stack
# Time Memory Function Location
1 0.0009 703760 {main}( ) ..\text.php:0
2 0.0084 714072 mysql_fetch_array ( ) ..\text.php:135
array (size=0)
empty
Haaa .. il y a du mieux semble il !
J'ai changé mon bouton pour le mettre dans le forme donc. J'ai toujours mes messages d'erreurs au premier chargement de page mais quand remplis mes listes et que je valide avec le bouton, les erreurs disparaissent et j'ai ça maintenant :
TEST
array (size=5)
'search1' => string '1' (length=1)
'search2' => string '2' (length=1)
'search3' => string 'B' (length=1)
'search4' => string '2' (length=1)
'search5' => string '1' (length=1)
J'ai changé mon bouton pour le mettre dans le forme donc. J'ai toujours mes messages d'erreurs au premier chargement de page mais quand remplis mes listes et que je valide avec le bouton, les erreurs disparaissent et j'ai ça maintenant :
TEST
array (size=5)
'search1' => string '1' (length=1)
'search2' => string '2' (length=1)
'search3' => string 'B' (length=1)
'search4' => string '2' (length=1)
'search5' => string '1' (length=1)
essaye de changer ton if comme ça :
if ( isset($_POST) && isset($_POST['search1']) && $_POST['search1'] != ' ' && isset($_POST['search2']) && $_POST['search2'] != ' ' && isset($_POST['search3']) && $_POST['search3'] != ' ' && isset($_POST['search4']) && $_POST['search4'] != ' ' && isset($_POST['search5']) && $_POST['search5'] != ' ' )
salut, je m'insère dans la discution, voici une solution, si ça te convient je peux ensuite te donner l'astuce pour qu'au réaffichage de la pge les choix dans les listes restent affichés.
<?php
// on se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// on sélectionne la base
mysql_select_db('projet',$db);
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form name="form1"method="post" action="" >
<select name="search1">
<option value=''>---Votre choix---</option>
<!-- ci dessus il ne faut pas mettre value=' ' (espace) mais value='' (vide) car au test empty un espace ce n'est pas vide !! -->
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)){
//tes boucles while avec des {} c'est plus facile a débugger avec un editeur genre notepad il détecte les debut de { et fin de } correspondants
//et mets le début et fin de chaine echo avec des ' comme cela tu peux mettre la value="....."
echo '<option value="'.$valeur1['ETAGE'].'">'.$valeur1['ETAGE'].'</option>';
}
?>
</select>
<br /><br />
<!-- saut de ligne c'est <br /> et pas <br>
<!-- SELECTION D'UNE SALLE -->
Veuillez selectionner une salle <br><br>
<select name="search2">
<option value=''>---Votre choix---</option>
<?php
$sql3= "SELECT distinct SALLE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur2=mysql_fetch_array($liste)){
echo '<option value="'.$valeur2['SALLE'].'">'.$valeur2['SALLE'].'"</option>';
}
?>
</select>
<br /><br />
<!-- SELECTION D'UN FRIGO -->
Veuillez selectionner un frigo <br><br>
<select name="search3">
<option value=''>---Votre choix---</option>
<?php
$sql3= "SELECT distinct FRIGO FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur3=mysql_fetch_array($liste)){
echo '<option value="'.$valeur3['FRIGO'].'">'.$valeur3['FRIGO'].'</option>';
}
?>
</select>
<br /><br />
<!-- SELECTION D'UN TIROIR -->
Veuillez selectionner un tiroir <br><br>
<select name="search4">
<option value=''>---Votre choix---</option>
<?php
$sql3= "SELECT distinct TIROIR FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur4=mysql_fetch_array($liste)){
echo '<option value="'.$valeur4['TIROIR'].'">'.$valeur4['TIROIR'].'</option>';
}
?>
</select>
<br /><br />
<!-- SELECTION D'UN BAC -->
Veuillez selectionner un bac <br><br>
<select name="search5">
<option value=''>---Votre choix---</option>
<?php
$sql3= "SELECT distinct BAC FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur5=mysql_fetch_array($liste)){
echo '<option value="'.$valeur5['BAC'].'">'.$valeur5['BAC'].'</option>';
}?>
</select>
<br /><br />
</form>
<?php
//du fait que dans tes listes tu avait un esapce dans la value de la première ligne -- Votre choix--
//c'est jamais empty
//donc maintenant avec vlaue='' on peut tester par empty
if (!empty($_POST['search1']) AND !empty($_POST['search2']) AND !empty($_POST['search3']) AND !empty($_POST['search4']) AND !empty($_POST['search5'])){
//si tous ne sont pas vides on va interroger la BDD
//les conditions dans WHERE ne sont pas séparées par des virgules mais par des AND ou des OR
$sql4= "SELECT NOM_BACT FROM bacterie WHERE ID_LOCA = ( SELECT ID_LOCA FROM localisation WHERE ETAGE= '".$_POST["search1"]."' AND SALLE='".$_POST["search2"]."' AND FRIGO='".$_POST["search3"]."' AND TIROIR='".$_POST["search4"]."' AND BAC='".$_POST["search5"]."' )";
$resultat = mysql_query($sql4) or die ("pb requette bacterie: ".mysql_error()); //la on met une trace d'erreur si req pas conforme
$ligne=mysql_fetch_array($resultat); //si un seul résultat pas besoin de boucle while
echo "La bacterie recherchee est : "; echo $ligne['NOM_BACT']."<br />";
}else{
echo "Vous devez faire votre choix dans toutes les listes ";
}
?>
<br /><br />
<input type="submit" name="rechercher" value="Rechercher">
</form>
if ( isset($_POST) && isset($_POST['search1']) && $_POST['search1'] != ' ' && isset($_POST['search2']) && $_POST['search2'] != ' ' && isset($_POST['search3']) && $_POST['search3'] != ' ' && isset($_POST['search4']) && $_POST['search4'] != ' ' && isset($_POST['search5']) && $_POST['search5'] != ' ' )
avec ça et en supprimant le else
ha oui ok javait sauté un bout de la discussion
perso je préfère mettre -1 plutôt qu'un espace, c'est quand même plus facile à lire dans un echo de debuggage
perso je préfère mettre -1 plutôt qu'un espace, c'est quand même plus facile à lire dans un echo de debuggage
voilà l'astuce que tu attend
ensuite si aucun résultat ne s'affiche revoir la requette
<?php
///// astuce pour conserver la selection dans liste au rechargement de la page ////
//je te le fait pour une liste tu fais pareil pour les autres
// tout d'abord dès le debut du script, on récupère le choix dans la liste
//methode "traditionnelle"
if(isset($_POST['search1']){
$search1=$_POST['search1'];
}else{
$search1=""; //si pas encore posté = vide
}
//methode ternaire
//variable = condition ? si vrai : si faux
$search1=isset($_POST['search1']) ? $_POST['search1'] : "";
//voilà tu chosit celle qui te plait le mieux et tu fais idem pour toutes tes listes
?>
<!-- SELECTION D'UN etage -->
Veuillez selectionner un etage : <br><br>
<form name="form1"method="post" action="" >
<select name="search1">
<option value=''>---Votre choix---</option>
<?php
$sql3= "SELECT distinct ETAGE FROM localisation ";
$liste = mysql_query($sql3);
while ($valeur1=mysql_fetch_array($liste)){
//on passe par une variable $option c'est plus clair
//debut option
$option='<option value="'.$valeur1['ETAGE'].'"';
//si le choix correspond à la value de la ligne option on rajoute selected
if($search1==$valeur1['ETAGE']){$option.= ' selected="selected" ';}
//suite option
$option.='>'.$valeur1['ETAGE'].'</option>';
//affichage de la ligne option
echo $option;
}
?>
</select>
<br /><br />
ensuite si aucun résultat ne s'affiche revoir la requette