Pb déclaration variable pour WHERE dans requête sql dans script php
Résolu
danielos77
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Au départ, dans un formulaire, il y a un input type text.
<input type="text" name="Num" id="Num" maxlength="5" pattern="[0-9]{3}[_][0-9]" required placeholder="000_0"/>
La valeur entrée dans cet input doit servir à réaliser une requête située un peu plus bas toujours dans le formulaire mais dans un script php.
$sql = 'SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num='document.getElementById("Num").value;' ;
Mais ça ne fonctionne pas...snif
La requête sans le WHERE fonctionne très bien, mais retourne évidement tous les enregistrements, alors qu'on ne veut que les enregistrements correspondant à la saisie faite dans l'input.
Quel serait la bonne syntaxe pour cette requête ?
Un grand merci d'avance à celui ou celle qui pourra me dépanner.
--
Au départ, dans un formulaire, il y a un input type text.
<input type="text" name="Num" id="Num" maxlength="5" pattern="[0-9]{3}[_][0-9]" required placeholder="000_0"/>
La valeur entrée dans cet input doit servir à réaliser une requête située un peu plus bas toujours dans le formulaire mais dans un script php.
$sql = 'SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num='document.getElementById("Num").value;' ;
Mais ça ne fonctionne pas...snif
La requête sans le WHERE fonctionne très bien, mais retourne évidement tous les enregistrements, alors qu'on ne veut que les enregistrements correspondant à la saisie faite dans l'input.
Quel serait la bonne syntaxe pour cette requête ?
Un grand merci d'avance à celui ou celle qui pourra me dépanner.
Configuration: Windows / Firefox 74.0
--
A voir également:
- Pb déclaration variable pour WHERE dans requête sql dans script php
- Déclaration - Guide
- En plus des revenus, il ne faut surtout pas oublier de faire cette déclaration en ligne aux impôts - Guide
- Script vidéo youtube - Guide
- Where is it - Télécharger - Gestion de fichiers
- Easy php - Télécharger - Divers Web & Internet
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
as-tu fait echo de la valeur entrée dans cet input? es-tu certain de la récupérer correctement dans ton code PHP?
fais également
tu ne nous montres qu'une petite partie de ton code, l'erreur est peut-être ailleurs.
as-tu fait echo de la valeur entrée dans cet input? es-tu certain de la récupérer correctement dans ton code PHP?
fais également
echo $sql;, pour vérifier que cette requête est bien utilisable.
tu ne nous montres qu'une petite partie de ton code, l'erreur est peut-être ailleurs.
Bonjour yg_be,
Merci de t'intéresser à mon pb.
La valeur entrée dans l'input est bien là car je la récupère dans un popup d'affichage récapitulatif avant d'envoyer les valeurs dans la base.
Par contre, c'est certainement dans la récupération de cette valeur pour la requête que ça doit pêcher... J'utilise (mais sûrement mal) la récupération de la valeur par 'document.getElementById("Num").value;' pour la comparer à une valeur d'un champ de ma base.
--
Merci de t'intéresser à mon pb.
La valeur entrée dans l'input est bien là car je la récupère dans un popup d'affichage récapitulatif avant d'envoyer les valeurs dans la base.
Par contre, c'est certainement dans la récupération de cette valeur pour la requête que ça doit pêcher... J'utilise (mais sûrement mal) la récupération de la valeur par 'document.getElementById("Num").value;' pour la comparer à une valeur d'un champ de ma base.
--
tu ne nous montres qu'une petite partie de ton code, l'erreur est peut-être ailleurs.
si tu récupères la valeur entrée en input dans une variable, pourquoi ne pas utiliser cette variable pour la requête?
fais également
si tu récupères la valeur entrée en input dans une variable, pourquoi ne pas utiliser cette variable pour la requête?
fais également
echo $sql;, pour vérifier que cette requête est bien utilisable, et pour comprendre ce que fait ton code.
Voilà
En mettant les parties php en commentaire, on a bien la valeur de l'input dans la popup en cliquant sur Print.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test Base de donnée</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script>
function popup()
{
w=open("",'popup','width=400,height=600,toolbar=no,scrollbars=yes,resizable=yes');
w.document.write("<BODY>");
w.document.write("Identifiant : "+document.forms[0].elements["Num"].value+"<BR><BR>");
w.document.write("</BODY>");
w.document.close();
w.print();
}
</script>
</head>
<body>
<form method="post" action="EnvoiInscription.php">
<BR><p>
<input type="text" name="Num" id="Num" maxlength="5" pattern="[0-9]{3}[_][0-9]" required placeholder="000_0" />
</p><BR><BR>
<?php //Connection avec la BDD.
include('secure/config.php');
mysql_connect($SQLhost, $SQLlogin, $SQLpass) or die(mysql_error());
mysql_select_db('ssa.pvm.ulm') or die(mysql_error());
$sql = 'SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num=document.getElementById("Num").value;
$res = mysql_query($sql) or die('Erreur requête SQL !<br>'.$sql.'<br>'.mysql_error());
?>
<table>
<tr>
<th>N°</th>
<th>Stage</th>
<th>nationale ou locale</th>
</tr>
<?php //On affiche les lignes du tableau une à une à l'aide d'une boucle
while($donnees = mysql_fetch_array($res))
{
?>
<tr>
<td><?php echo $donnees['Num'];?></td>
<td><?php echo $donnees['Stage'];?></td>
<td><?php echo $donnees['Action'];?></td>
</tr>
<?php
} //fin de la boucle, le tableau contient toute la BDD
mysql_close(); //deconnection de mysql
?>
</table>
<BR>
<form method="post" action="EnvoiInscription.php">
<p><input type="button" name="Print" value="Print" onClick="JavaScript:popup();"></form>
<p> </p>
<p><input type="submit" value="Envoyer" size="24" />
</p>
</form>
</body>
</html>
--
En mettant les parties php en commentaire, on a bien la valeur de l'input dans la popup en cliquant sur Print.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test Base de donnée</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script>
function popup()
{
w=open("",'popup','width=400,height=600,toolbar=no,scrollbars=yes,resizable=yes');
w.document.write("<BODY>");
w.document.write("Identifiant : "+document.forms[0].elements["Num"].value+"<BR><BR>");
w.document.write("</BODY>");
w.document.close();
w.print();
}
</script>
</head>
<body>
<form method="post" action="EnvoiInscription.php">
<BR><p>
<input type="text" name="Num" id="Num" maxlength="5" pattern="[0-9]{3}[_][0-9]" required placeholder="000_0" />
</p><BR><BR>
<?php //Connection avec la BDD.
include('secure/config.php');
mysql_connect($SQLhost, $SQLlogin, $SQLpass) or die(mysql_error());
mysql_select_db('ssa.pvm.ulm') or die(mysql_error());
$sql = 'SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num=document.getElementById("Num").value;
$res = mysql_query($sql) or die('Erreur requête SQL !<br>'.$sql.'<br>'.mysql_error());
?>
<table>
<tr>
<th>N°</th>
<th>Stage</th>
<th>nationale ou locale</th>
</tr>
<?php //On affiche les lignes du tableau une à une à l'aide d'une boucle
while($donnees = mysql_fetch_array($res))
{
?>
<tr>
<td><?php echo $donnees['Num'];?></td>
<td><?php echo $donnees['Stage'];?></td>
<td><?php echo $donnees['Action'];?></td>
</tr>
<?php
} //fin de la boucle, le tableau contient toute la BDD
mysql_close(); //deconnection de mysql
?>
</table>
<BR>
<form method="post" action="EnvoiInscription.php">
<p><input type="button" name="Print" value="Print" onClick="JavaScript:popup();"></form>
<p> </p>
<p><input type="submit" value="Envoyer" size="24" />
</p>
</form>
</body>
</html>
--
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
dans quelle variable as-tu récupéré la valeur entrée en input?
réutilise cette variable pour la requête.
fais également echo $sql;, pour vérifier que cette requête est bien utilisable, et pour comprendre ce que fait ton code.
dans quelle variable as-tu récupéré la valeur entrée en input?
réutilise cette variable pour la requête.
fais également echo $sql;, pour vérifier que cette requête est bien utilisable, et pour comprendre ce que fait ton code.
Désolé pour l'absence de balise ..
Le tout dans mon fichier ***.php
Je n'ai pas de variable pour récupérer la valeur de l'input puisque j'utilise directement document.getElementById("Num").value;
--
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Test Base de donnée</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script> function popup() { w=open("",'popup','width=400,height=600,toolbar=no,scrollbars=yes,resizable=yes'); w.document.write("<BODY>"); w.document.write("Identifiant : "+document.forms[0].elements["Num"].value+"<BR><BR>"); w.document.write("</BODY>"); w.document.close(); w.print(); } </script> </head> <body> <form method="post" action="EnvoiInscription.php"> <BR><p> <input type="text" name="Num" id="Num" maxlength="5" pattern="[0-9]{3}[_][0-9]" required placeholder="000_0" /> </p><BR><BR>
<?php //Connection avec la BDD. include('secure/config.php'); mysql_connect($SQLhost, $SQLlogin, $SQLpass) or die(mysql_error()); mysql_select_db('ssa.pvm.ulm') or die(mysql_error()); $sql = 'SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num=document.getElementById("Num").value; $res = mysql_query($sql) or die('Erreur requête SQL !<br>'.$sql.'<br>'.mysql_error()); ?>
<table> <tr> <th>N°</th> <th>Stage</th> <th>nationale ou locale</th> </tr>
<?php //On affiche les lignes du tableau une à une à l'aide d'une boucle while($donnees = mysql_fetch_array($res)) { ?>
<tr> <td><?php echo $donnees['Num'];?></td> <td><?php echo $donnees['Stage'];?></td> <td><?php echo $donnees['Action'];?></td> </tr>
<?php } //fin de la boucle, le tableau contient toute la BDD mysql_close(); //deconnection de mysql ?>
</table> <BR> <form method="post" action="EnvoiInscription.php"> <p><input type="button" name="Print" value="Print" onClick="JavaScript:popup();"></form> <p> </p> <p><input type="submit" value="Envoyer" size="24" /> </p> </form> </body> </html>
Le tout dans mon fichier ***.php
Je n'ai pas de variable pour récupérer la valeur de l'input puisque j'utilise directement document.getElementById("Num").value;
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai remplacé ma requête par
$sql = "SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num = '$Num'";
et j'ai bien mon tableau qui s'affiche mais vide ;-(
et echo $sql me retourne
SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num = ''
--
$sql = "SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num = '$Num'";
et j'ai bien mon tableau qui s'affiche mais vide ;-(
et echo $sql me retourne
SELECT * FROM Inscriptions LEFT JOIN Stages ON Inscriptions.ChoixStage = Stages.NumStage WHERE Num = ''
--