Select avec variable

Résolu/Fermé
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 - 12 avril 2010 à 15:50
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 - 13 avril 2010 à 20:00
Bonjour je voudrais faire un select avec 2 variables :

$sql = "SELECT '".$arg."' FROM utilisateurs WHERE id= '" .$id. "'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data = mysql_fetch_assoc($req)) 
{ 		
    $retour = $data[$arg];
}
	echo $retour;


le problème est qu'il me dit : Undefined variable: retour

le problème doit venir du $data[$ard] mais j'ai essayé avec des simple cote ou double cote mais rien du tout, je désespère.

Si quelqu'un pouvait m'aider, merci beaucoup d'avance !



6 réponses

Slt,

Si $arg != de id il aura du mal a tirai quoi que ceux soit
les guillemet peut être aussi !
$arg = "id";
'SELECT '".$arg."' FROM utilisateurs WHERE id= "' .$id.'"'; est --> $data['id']; retire le dollard dans les cote de $data est je pense pas que sa soit $arg puisque tu interroge id !
et pourquoi faire un select avec deux variable ?
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
13 avril 2010 à 07:51
Je n'ai pas tout compris mais je ne veux pas retirer le $ de id dans $data[$arg] le but est justement de pouvoir ressortir n'importe quel champ de mon select

si je veux ressortir pseudo je fais :
$arg = "pseudo";
$id = "1";

$sql = "SELECT '".$arg."' FROM utilisateurs WHERE id= '" .$id. "'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data = mysql_fetch_assoc($req)) 
{ 		
    $retour = $data[$arg];
}
	echo $retour;



mais
$retour = $data[$arg];

ne fonctionne pas.
0
Bonjour

$retour = $data[$arg]; fonctionne certainement, mais n'est très probablement pas exécuté parce que ta requête ne renvoie aucun résultat.
Comme ce site transforme les accents graves (ASCII 96) en simples apostrophes, pas facile de vérifier si ta requête est correcte. As-tu bien des accents graves autour de $args, et non pas de apostrophes (ASCII 39) ?
sinon, juste avant le while, ajoute
echo mysql_num_rows($req); pour voir combien il y a de réponses
0
Il y a aussi le fait que $retour est déclaré dans la boucle while et donc que celle-ci n'existe qu'a l'intérieur de cette boucle.
Donc quand le while se termine la variable $retour meurt.

Fait :

$sql = "SELECT '".$arg."' FROM utilisateurs WHERE id= '" .$id. "'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
$retour;
while($data = mysql_fetch_assoc($req)) 
{ 		
    $retour = $data[$arg];
}
	echo $retour;

0
Rectification pour la durée de vie des variables, ce que j'ai écrit est valable en JAVA et non PHP.

Par contre il est quand même conseiller de mettre
$retour="";
avant la boucle pour permettre à ta requêtes de ne rien renvoyer.
0
Comme quoi on peut se tromper, mais c'est pas pour cela qu'il faut s'énerver et arrêter de s'en prendre au gens pour rien pfff.
0
Qui conseille de mettre $retour = ""; ? Pas le manuel PHP, en tous cas, et cela ne change rien du tout à la possibilité pour la requête de ne rien renvoyer.
C'est vrai qu'on a toujours tort de s'énerver, mais depuis le temps que je suis sur ce forum, je commence à être las de ne plus pouvoir aider les gens parce que les fils de discussion sont interrompus par des interventions de gens qui affirment des erreurs.
0

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

Posez votre question
Il y a aussi le fait que $retour est déclaré dans la boucle while et donc que celle-ci n'existe qu'a l'intérieur de cette boucle
TOTALEMENT FAUX
Il vaut mieux ne rien répondre plutôt qu'envoyer les gens sur des fausses pistes. Visiblement, tu ne connais rien au PHP.
0
Michael le PGM
13 avril 2010 à 10:04
Il est vrai que 'Jessy' c'est peut-être trompé (je ne connais pas personnellement ce langage), mais ce qui est sur c'est que ton message n'est guère plus pertinent.
0
Je rectifie jute sur la durée de vie de la variable que j'ai confondu avec les variables dans l'environnement JAVA.

Le problème que j'ai exposé n'est peut-être pas la cause directe mais elle renvoie une erreur tout de même.

Imaginons que sa requêtes ne retourne aucunes lignes et que ce ne soit pas un problème car on considère qu'elle puisse ne rien renvoyer.
Dans ce cas la variable $retour ne sera jamais créée et on retournera une variable inexistante.
0
c'est que ton message n'est guère plus pertinentSi c'est pertinent. Il y a de beaucoup trop nombreuses réponses sur ce site faites par des gens pleins de bonne volonté, certes, mais qui aiguillent ceux qui posent des question vers des fausses pistes.
Dans ce cas la variable $retour ne sera jamais créée et on retournera une variable inexistante Merci d'approuver ce que je disais dans mon premier message
0
Oui mais ce que j'essaye de te dire c'est que retourner une variable inexistante renvoie une erreur.
Donc il y a à faire un choix, soit décider que la requêtes retournera toujours quelque chose, soit ajouter l'initialisation de la variable pour éviter toutes erreurs dans le echo.
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
13 avril 2010 à 14:11
Merci de bien vouloir m'aider, même si la réponse est fausse, au moins Jessy se donne la peine de m'aider.

j'ai trouvé, en fait ce n'est pas
$retour = $data[$arg];

qui pose problème mais c'est le $arg du select.

voici le code qui fonctionne :
$sql = "SELECT $arg FROM utilisateurs WHERE id= $id";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data = mysql_fetch_assoc($req)) 
    { 		
        $retour = $data[$arg];
    }
echo $retour;



merci de votre aide.
0
Cool alors si tu as trouvé la solution.
J'avoue qu'il m'arrive de mettre $variable en dehors des guillemets et je n'ai jamais eu de souci.
C'est bon à savoir quand même.
En espérant que ta solution serve à d'autre personnes.
0
C'est bien ce que j'avais dit dès mon premier message. Tu avais sûrement mis des apostrophes autour de $args au lieu d'accents graves, mais ce site ne permet pas de s'en assurer. Ta requête aurait été correcte avec des accents graves autour de $args - comme elle l'est sans accents ni apostrophes.Fais l'essai.
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
13 avril 2010 à 20:00
désolé "le père" je n'avais pas compris ça comme ça.
je vais essayer avec des accents grave.

Faut que je trouve aussi une fois pour toute, quand utiliser les accents, simple cote ou double cote.

merci à vous
0