PHP Formulaire, quelques questions.

Fermé
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015 - 22 févr. 2013 à 09:59
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 22 févr. 2013 à 19:30
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.


A voir également:

14 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:06
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
0
bishop je retrouve plus notre discussion
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:18
elle a peut être été supprimée comme elle était au mauvais endroit.
Si tu crées un compte tu pourras suivre tes messages, ça sera plus simple pour toi.
0
ta une solution pour ce que jtai demander?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:21
non parce que ton message était beaucoup trop flou. Par contre, si tu veux une réponse, refais un message, parce que ici c'est pas le sujet.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2013 à 10:23
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.
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:25
s'il le fait en GET, il pourra cacher les listes déjà utilisées et ainsi éviter des erreurs de manipulations, enfin, c'est comme ça que je le vois moi.
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 10:37
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 :

<?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']; -->
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2013 à 10:38
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)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:42
sauf qu'il peut se retrouver avec des données qui n'auront pas de sens, vu que les données des listes suivantes dépendent des listes précedentes, à moins de faire un form par liste ?
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 10:44
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.
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 10:45
Pour précisions et que se soit plus explicite

Etage : 1 ou 2
Salle : 1 ou 2
Frigo : A ou B
Tiroir : 1 , 2 ou 3
BAC : 1 ou 2
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 10:47
les salles sont les mêmes pour tous les étages ? Les frigos sont les mêmes pour toutes les salles ?

A moins que je n'ai rien compris (ce qui est possible je vous rassure !), je vois mal comment les données peuvent ne pas être liées les unes aux autres ^^
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 10:51
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
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:05
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>
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 11:08
pour commencer il manque l'attribut value dans tes options, c'est lui qui va passer une valeur en POST, l'affichage se fait correctement sinon ?
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:10
L'affichage se fait bien oui, juste que quand j'appuie sur le bouton, je n'ai rien qui s'affiche !

Il faut donc que je mette un value pour chacun de mes select ? Un value différent je suppose ?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
Modifié par ThEBiShOp le 22/02/2013 à 11:14
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";


comme ça partout
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:18
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>
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 11:23
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 :
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>";
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:31
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 :

<?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>
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 11:37
echo "<option value=".$valeur1["ETAGE"].">".$valeur1["ETAGE"]."</option>";;


un ; en trop, c'est peut être ça
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:43
Malheureusement non, j'ai enlevé le ' ; ' en trop aux deux endroits mais toujours rien qui s'affiche mise à part dans ma première liste !
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:45
Par contre, je ne suis pas sur de comprendre la ligne que tu m'as demandé de rajouter

"<option value=".$valeur1["SALLE"].">".$valeur1["SALLE"]."

Pourquoi deux fois le valeur séparé d'un > ?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
Modifié par ThEBiShOp le 22/02/2013 à 11:49
quand tu fais ça, tu mélanges 2 choses : le HTML et le PHP

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 ?
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 11:45
ton 2ème while, tu fais :
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 ^^
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:46
Hum ... aurais-je laisser valeur1 a chaque fois ? héhé ... bien possible ça :D
Je test ça
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 11:48
Haa j'ai récupéré mes valeurs dans toutes mes listes ... mais rien quand j'appuie sur mon bouton !

Au passage, merci de ton aide et du temps que tu m'accorde !
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 11:54
ton if n'est pas correct, la condition sera toujours vraie.

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 ?
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 12:01
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
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 12:03
Oui, pardon c'est ma faute ça ^^

if ( isset($_POST) && $_POST['search1'] != ' ' && $_POST['search2'] != ' ' && $_POST['search3'] != ' ' && $_POST['search4'] != ' ' && $_POST['search5'] != ' ' )


ça devrait être mieux, non ?
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 12:25
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

<?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
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 12:27
ah oui... je suis un peu fatigué.

ton bouton doit être dans ton form, juste avant la balise </form>
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 13:57
Je suis de retour et j'essaye ça !
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 13:59
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)
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 14:04
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'] != ' ' )
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 14:07
Toujours mes messages d'erreurs. J'ai mis un echo ' TEST' au lieux de echo ' ' pour voir ce qu'il m'affiche ... et donc il m'affiche le TEST.
Donc oui, c'est bien le if qui bug ... même si tu dois t'en douter ^^
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2013 à 14:56
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>
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 14:58
le empty avait été enlevé logiquement ;)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2013 à 15:07
oui mais alors par quel moyen tu testes que le choix n'a pas été fait dans une des listes ?

essaies comme je t'ai proposé
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 15:10
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
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 févr. 2013 à 15:14
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
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 févr. 2013 à 15:16
j'avoue que je n'aurais pas mis ça non plus, c'est vrai que c'est mieux de mettre quelque chose de plus explicite.
On va dire que je me suis concentré sur le reste ^^
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 15:29
Merci à vous deux donc, j'ai lu ta version Alain_42. Aucun résultat ne s'affiche mais sa doit pas être grand chose, je vais me pencher la dessus.
Mais avoir les deux versions m'aide à comprendre des choses et certaines subtilités différentes.

Merci de votre aide, de vos conseils et astuces.
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 15:30
Doit être par ce que dans la liste salle, j'ai 1 et 2 a sélectionner mais 1" et 2"
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 15:33
A priori s'était pas ça mais pas grave, je regarderai ça plus tard a tête reposée.
0
Magyc41 Messages postés 56 Date d'inscription dimanche 17 février 2013 Statut Membre Dernière intervention 9 décembre 2015
22 févr. 2013 à 16:15
Au passage, si tu as ton astuce pour garder les formulaires saisis avec un refresh ! JE suis preneur !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 22/02/2013 à 19:32
voilà l'astuce que tu attend
<?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
0