[RESOLU] variable non reconnue !!!

Petit nouveau ! | 5 Messages

02 janv. 2022, 21:18

Bonjour à tous !

Voila mon problème :

dans un formulaire, j'ai une liste déroulante dynamique dans laquelle je récupère l'id, le nom et le prénom du client.
$nom_prenom=$_POST['form'] ['nom_client'];
$nom_prenom2 = implode(",", $nom_prenom);

Jusque la tout va bien !!!

en suite, je filtre le résultat pour récupérer que l'id
$id = (int) filter_var($nom_prenom2, FILTER_SANITIZE_NUMBER_INT);

Jusque la tout va bien !!!

Puis j'affiche la valeur de $id pour vérifier si c'est bon
echo("Le numero du client est : $id \n");

SUPER, ça marche, ça m'affiche bien l'id du client !!! sauf que ???

je fais une requette pour recupérer toutes les données du client
$result = $mysqli->query('SELECT * FROM Clients WHERE id_client = $id') ;

if (!$result) {
die('<p>ERREUR Requête invalide : '.$mysqli->error.'</p>');
}
for ($i=0 ; $i < $result->num_rows ; $i++) {
$row = $result->fetch_assoc() ;
$nom = $row['nom'] ;
$prenom = $row['prenom'] ;
echo '<p>'.$prenom.' '.$nom.'</p>'."\r\n" ;
}

$result->free() ;

$mysqli->close() ;
et la, j'obtiens un message sur ma page

Le numero du client est : 91
ERREUR Requête invalide : Unknown column '$id' in 'where clause'

Je bloque depuis ce matin et je ne comprends pas d'ou ça vien.
Je me doute que c'est tout bête mais je ne vois pas.

Pouvez vous m'aider ?

Merci à tous

Mammouth du PHP | 2703 Messages

02 janv. 2022, 21:47

echo 'SELECT * FROM Clients WHERE id_client = $id';
cela affiche quoi ?

Petit nouveau ! | 5 Messages

02 janv. 2022, 22:03

Merci de te pencher sur mon problème !
Si je fait un echo 'SELECT * FROM Clients WHERE id_client = $id'; il est évident qu'il m'affiche ce qu'il y à entre les guillemets '' donc il affiche SELECT * FROM Clients WHERE id_client = $id
Alors que si je remplace $id dans ma requête par un numéro d'id présent dans mes enregistrements BDD, la requête s'exécute et affiche le bon résultat

Mammouth du PHP | 2703 Messages

02 janv. 2022, 22:13

$id = 91;
echo 'SELECT * FROM Clients WHERE id_client = $id';

il faut donc modifier la seconde ligne pour que cela affiche bien :
SELECT * FROM Clients WHERE id_client = 91
une fois qu'une manière juste de concaténer des variables aura été trouvée, cela fonctionnera mieux.

Petit nouveau ! | 5 Messages

02 janv. 2022, 22:36

Le probleme, est que l'id est envoyé par le formulaire avec le nom et le prenom
$nom_prenom=$_POST['form'] ['nom_client'];
Je le traite apres pour ne recupérer que le numéroen
$nom_prenom2 = implode(",", $nom_prenom);
$id = (int) filter_var($nom_prenom2, FILTER_SANITIZE_NUMBER_INT);
quand je fais un
echo $id;
Il m'affiche bien le numéro d'id mais quand j'utilise $id dans ma requette, il n'est plus reconnu.

Petit nouveau ! | 5 Messages

02 janv. 2022, 22:54

C'est bon, j'avance !!!
Il fallait juste que j'entoure $id avec des guillemets.
$result = $mysqli->query("SELECT * FROM Clients WHERE id_client = '$id' ") ;