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   -
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.



Configuration: Windows / Firefox 74.0


--
A voir également:

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
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.
0
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   2
 
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.


--
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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
echo $sql;
, pour vérifier que cette requête est bien utilisable, et pour comprendre ce que fait ton code.
0
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   2
 
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>

--
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
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.
0
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   2
 
Désolé pour l'absence de balise ..

<!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;

--
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
je vois bien que tu utilises directement document..., et je suggère que tu passes par une variable, ce sera plus clair.
fais également echo $sql;, pour vérifier que cette requête est bien utilisable, et pour comprendre ce que fait ton code.
0

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

Posez votre question
danielos77 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   2
 
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 = ''

--
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
comprends-tu la requête SQL?
as-tu vérifié ce que retournait
echo $num
?
quel est le type du champ Num dans la table?
es-tu au courant que l'extension php mysql est en fin de vie? https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
0