Pb déclaration variable pour WHERE dans requête sql dans script php

Résolu/Fermé
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 4 avril 2020 à 10:27
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 - 4 avril 2020 à 16:05
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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 Ambassadeur 1 552
4 avril 2020 à 11:06
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 samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
4 avril 2020 à 11:28
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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 avril 2020 à 11:39
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 samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
4 avril 2020 à 12:16
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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 avril 2020 à 12:52
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 samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
4 avril 2020 à 14:44
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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 avril 2020 à 15:39
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 samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
4 avril 2020 à 15:47
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 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
Modifié le 4 avril 2020 à 16:13
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