Problème formulaire / php

Fermé
Utilisateur anonyme - 4 mai 2004 à 16:41
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 6 mai 2004 à 19:30
Salut !

Je me lance dans l'accès à des bases de données sous php; et là je bloque sur 1 truc.
J'ai une zone de liste avec différentes valeurs. Quand l'utilisateur clique sur une valeur de cette zone, un script est déclanché.
Le problème, c'est que le script ne se déclanche pas, ou en tout cas mal : à chaque clic, la page est mise à jour mais revient toujours à son état initial.
Pour être + clair, voici un lien : http://www.lepont.asso.fr/motDirecteur.php

Pour être plus complet, le code source du php :
<FORM METHOD = "Get" ACTION = "motDirecteur.php">

<SELECT NAME="cbochoisir" SIZE="1" ONCHANGE="form.submit()">
<OPTION VALUE="-1"> Sélectionner </OPTION>
<OPTION VALUE="0"> Tous les mots </OPTION>
<?

$connexion = mysql_pconnect("sql5","lepont","nZGSrtUo");
if ($connexion == FALSE) print("connexion pas OK !");
$acces = mysql_select_db("lepont",$connexion);
if ($acces == FALSE) print("acces base pas OK !");

$reqSQL = "SELECT * FROM mots WHERE Personne='directeur'";

$curseur = mysql_query($reqSQL, $connexion);

if ($curseur)
{ $enreg = mysql_fetch_object($curseur);

while ($enreg)
{
print("<OPTION Value=\"$enreg->num_mot\">$enreg->date_mot $enreg->intitule_mot </OPTION>");
$enreg = mysql_fetch_object($curseur);
}

}
else
{
print ("requete pas bonne !<BR>");
}





$reqSQL = "SELECT * FROM mots WHERE Personne='directeur'";
if ($cbochoisir >0)
{
$reqSQL= $reqSQL . " AND num_mot=$cbochoisir";
}

$curseur = mysql_query($reqSQL, $connexion);

if ($curseur)
{
$enreg = mysql_fetch_object($curseur);
while ($enreg)
{

print ("$enreg->date_mot $enreg->intitule_mot $enreg->mot<BR>");
$enreg =mySQL_fetch_object($curseur);

}
}
else
{
print ("requete pas bonne !<BR>");
}


mysql_close($connexion);
?>
</SELECT>
</FORM>

</body>
</html>

En espérant que quelqu'un puisse m'éclairer.


A oui, au fait, le script doit me faire afficher les infos de la base de données suivant l'enregistrement sélectionné...

Merci et @+
A voir également:

24 réponses

Une erreur à corriger:

$reqSQL= $reqSQL . " AND num_mot=$cbochoisir";

doit devenir

$reqSQL= $reqSQL . " AND num_mot=".$cbochoisir;

A part ça, je te conseille de changer de mot de passe pour la connection à la base de donnée, car maintenant toute la planète le connait... ;)

hector
http://www.hec.unil.ch/infocentre
0
Utilisateur anonyme
6 mai 2004 à 08:35
Merci de m'avoir répondu, mais là c'est pire, il me fout un message d'erreur.
Pour le mot de passe, tu m'étonnes, trop con...
En fait, j'essayé un peu tout, et à bout de nerf, je me suis dit "laisse tomber, ça fait 2 heures que tu es dessus, vas poser la question, il y a qqc qui doit sauter aux yeux". Et j'ai fait un c/c de tout le merdier sans réfléchir...
Mais merci !
@+
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 09:09
Si tu utilises une version de PHP qui est la 4.2 ou plus récente, tu dois récupérer les résultats de ton formulaire avec la variable d'environnement $_GET["nomdelavariable"].

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 10:08
Merci, mais je sais que c'est la version 4 et/ou 5.
En tous cas, j'ai essayé, et c'est exactement la même chose.
Qq a une idée ???
0

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

Posez votre question
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 10:17
Tu as un message d'erreur? Si oui lequel?

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 10:24
Non, je n'ai pas de message d'erreur, mais vas voir sur le site ce que ça fait : http://www.lepont.asso.fr/motDirecteur.php
Tu vois, la zone de liste se reinitialise à chaque fois et ne me fait pas afficher les résultats.
Ca me prendre la tête !
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 10:33
Et tu as bien rajouté ça:
$cbochoisir = $_GET["cbochoisir"]; ?
C'est bizarre...

Essaie ça pour voir:
$reqSQL= $reqSQL . " AND num_mot='".$cbochoisir."'";

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 10:35
Ça n'apparaît pas très clairement à l'écran donc je rajoute des espaces pour que tu voies bien:
$reqSQL= $reqSQL . " AND num_mot=' ".$cbochoisir." ' ";

En gros tu mets le contenu de $cbochoisir entre quotes simples.

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 11:06
Merci, mais ça n'a eu aucune influence...
Ca m'énnerve !
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 11:07
Là je suis à court d'idées... Désolé :(

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 11:10
C'est pas grave, merci quand même.
Je remets le code, au cas où :

<FORM METHOD = "Get" ACTION = "motDirecteur.php">
		
		<SELECT NAME="cbochoisir" SIZE="1" ONCHANGE="form.submit()"> 
                <OPTION VALUE="-1"> Sélectionner </OPTION>
                <OPTION VALUE="0"> Tous les mots </OPTION>
		<?	

			$connexion = mysql_pconnect("xx","xx","xx");
			if ($connexion == FALSE) print("connexion pas OK !");
  			$acces = mysql_select_db("xx",$connexion);	
			if ($acces == FALSE) print("acces base pas OK !");
	
			$reqSQL = "SELECT * FROM mots WHERE Personne='directeur'";

			$curseur = mysql_query($reqSQL, $connexion);
			
			if ($curseur)
			{  $enreg = mysql_fetch_object($curseur);

			   while  ($enreg)
			   {
				print("<OPTION Value=\"$enreg->num_mot\">$enreg->date_mot $enreg->intitule_mot </OPTION>");
				$enreg = mysql_fetch_object($curseur);
			   }
				
			}
			else
			{
				print ("requete pas bonne !<BR>");
			}
	

			
		

		$reqSQL = "SELECT * FROM mots WHERE Personne='directeur'";
		if (cbochoisir >0)
		{
			$reqSQL= $reqSQL . " AND num_mot='".$cbochoisir."'";
		}

		$curseur = mysql_query($reqSQL, $connexion);

		if ($curseur)
		{
			$enreg = mysql_fetch_object($curseur);
			while ($enreg)
			{
					
				print ("$enreg->date_mot $enreg->intitule_mot $enreg->mot<BR>");
				$enreg =mySQL_fetch_object($curseur);
				
			}
		}
		else
		{
			print ("requete pas bonne !<BR>");
		}
	
	
		mysql_close($connexion);
	?>
	   </SELECT>
	</FORM>

0
Utilisateur anonyme
6 mai 2004 à 11:33
fait un echo $curseur pour verifier que la requete marche bien

sinon essaie en la tapant entierement

$reqSQL="SELECT * FROM mots WHERE Personne='directeur' and num_mot = $cbochoisir";
0
Utilisateur anonyme
6 mai 2004 à 11:45
Salut et merci, mais non, cette fois j'ai un message d'erreur : Parse error: parse error, unexpected T_STRING in /home/lepont/www/motDirecteur.php on line 47
(la ligne 47 correspond à la ligne de la requête)
Et le echo ne donne rien (même avant d'avoir changé la requête).
0
Utilisateur anonyme
6 mai 2004 à 11:50
if (cbochoisir >0)
{ $reqSQL= $reqSQL . " AND num_mot='".$cbochoisir."'";
}

-> if ($cbochoisir > 0)
0
Si tu mets les tags

</SELECT>
</FORM>

après le dernier </OPTION> (et non pas à la fin de ton script !), ça devrait aller mieux!

Tu peux aussi ajouter des or die (mysql_error()); après des fonctions propres à mysql, comme ça tu auras des messages d'erreur si ça marche pas.

p.ex:

$curseur = mysql_query($reqSQL, $connexion);

devient

$curseur = mysql_query($reqSQL, $connexion) or die (mysql_error());


hector
http://www.hec.unil.ch/infocentre
0
Utilisateur anonyme
6 mai 2004 à 13:53
NoSFe : ça ne change rien.

hector : le or die ne change rien, et le </select> </form> non plus, au contraire : http://www.lepont.asso.fr/motDirecteur.php

De toute façon l'accès à la base est correct car dans la liste les valeurs sont bien ajoutées (1ère partie du script).
Merci tout de même à vous !
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
6 mai 2004 à 13:59
Ah non mais là tu l'as placé trop tôt ton </select></form> !
:D

Il faut que tu les mettes juste après ce morceau de code:
while ($enreg) 
{ 
print("<OPTION Value=\"$enreg->num_mot\">$enreg->date_mot $enreg->intitule_mot </OPTION>"); 
$enreg = mysql_fetch_object($curseur); 
} 


.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 14:04
Merci mais ça me met une erreur
parse error, unexpected '<' in /home/lepont/www/motDirecteur.php on line 43 
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281 > Utilisateur anonyme
6 mai 2004 à 14:08
Ben forcément puisque là c'est plus du php c'est de l'html!
Il faut que tu fasses echo "</select></form>"; ou alors tu fais ?></select></form><? .

:)

.::: "A trop vouloir feindre de faire fi, on finit 
par faire fi de vouloir feindre." 
:::.
0
Utilisateur anonyme
6 mai 2004 à 14:07
J'ai refermé le code php avec les sin select et form et réouvert juste derrière.
Le formulaire est rafraichi tout de même http://www.lepont.asso.fr/motDirecteur.php
0
Utilisateur anonyme
6 mai 2004 à 14:00
fait un echo $reqSQL pour voir a quoi ressemble ta requete
0
Utilisateur anonyme
6 mai 2004 à 14:01
fait un echo $reqSQL pour voir a quoi ressemble ta requete
0
Utilisateur anonyme
6 mai 2004 à 14:13
Donc, voici ce que j'ai http://www.lepont.asso.fr/motDirecteur.php

avec ce code
<FORM METHOD = "Get" ACTION = "motDirecteur.php">
		
		<SELECT NAME="cbochoisir" SIZE="1" ONCHANGE="form.submit()"> 
                <OPTION VALUE="-1"> Sélectionner </OPTION>
                <OPTION VALUE="0"> Tous les mots </OPTION>
	

<?	

			$connexion = mysql_pconnect("sql5","lepont","ghdhrfq");
			if ($connexion == FALSE) print("connexion pas OK !");
  			$acces = mysql_select_db("lepont",$connexion);	
			if ($acces == FALSE) print("acces base pas OK !");
	
			$reqSQL = "SELECT * FROM mots WHERE Personne='directeur'";

			$curseur = mysql_query($reqSQL, $connexion);
			
			if ($curseur)
			{  $enreg = mysql_fetch_object($curseur);

			   while  ($enreg)
			   {
				print("<OPTION Value=\"$enreg->num_mot\">$enreg->date_mot $enreg->intitule_mot </OPTION>");
				$enreg = mysql_fetch_object($curseur);
			   }
				
			}
			else
			{
				print ("requete pas bonne !<BR>"); 
			}
?>
	</SELECT>
	</FORM>
<?
		$reqSQL="SELECT * FROM mots WHERE Personne='directeur'";

		if ($cbochoisir >0)
		{
		$reqSQL="SELECT * FROM mots WHERE Personne='directeur' ";
		}

echo $reqSQL;		
$curseur = mysql_query($reqSQL, $connexion) or die (mysql_error());

		if ($curseur)
		{
			$enreg = mysql_fetch_object($curseur);
			while ($enreg)
			{
					
				print ("$enreg->date_mot $enreg->intitule_mot $enreg->mot<BR>");
				$enreg =mySQL_fetch_object($curseur);
				
			}
		}
		else
		{
			print ("requete pas bonne !<BR>");
		}
	
	
		mysql_close($connexion);
	?>


Là il faut que je m'absente 1 ou 2 heures, mais votre aide est la bienvenue !
Merci encore et à tout'.
0
Utilisateur anonyme
6 mai 2004 à 14:18
rajoute dans
if ($cbchoisir > 0)
$reqSql = $reqsql."and num_mot=$cbochoisir";

et laisse le echo pour voir si ta requete est bien modifiee dans le if
0