Undefined variable

Résolu/Fermé
starterPHP - 18 déc. 2012 à 11:21
Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 - 18 déc. 2012 à 14:42
Bonjour,

J'ai un souci d'undefined variable, et je ne trouve pas de solution:
(Notice: Undefined variable: content in C:\wamp\www\pdf.php on line 17)

La ligne 17 correspond à la ligne "Prénom" dans $content...

Pourriez-vous m'aider? Merci!


<?php

try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

$reponse = $bdd->query("SELECT nom, possesseur FROM jeux_video WHERE possesseur='JG'");

while ($donnees = $reponse->fetch())
{$content.= 
	"Nom : ".$donnees['nom']."rn".
	"Prenom : ".$donnees['possesseur']."rn";
	}


5 réponses

Stanislas Poisson Messages postés 423 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 66
18 déc. 2012 à 11:23
bien, déja a tu essayer de faire un print_r de donnée dans ton while? cela pourrait t'aider, essaye aussi dans ta requete de retirer l'espace apres la virgule de nom
0
En retirant l'espace, j'ai du coup 2 undefined variables (ligne 16 et 17).
Où devrai-je placer le print_r ? Je n'utilise qu'echo en général, je suis en débutant...
0
Stanislas Poisson Messages postés 423 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 66
18 déc. 2012 à 11:33
Lorsque tu fais
while ($donnees = $reponse->fetch())
{


tu rajoute alors le
print_r($donnees);


ca devrait te donner l'architecture de ta variable. et comme tu utilise pdo, tu peux placer dans le fetch, l'un de c'est parametres:
PDO::FETCH_BOTH
PDO::FETCH_ASSOC
PDO::FETCH_BOUND
PDO::FETCH_CLASS
PDO::FETCH_INTO
PDO::FETCH_Lazy
PDO::FETCH_NUM
PDO::FETCH_OBJ


je te recommande le assoc qui te fourni un tableau tel que tu le demande par la suite.
0
Avec le print_r j'obtiens un "Fatal error: Can't use function return value in write context in C:\wamp\www\pdf.php on line 14" ligne 14...
0
Stanislas Poisson Messages postés 423 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 66
18 déc. 2012 à 12:02
heu... redonne ton code avec la modif?
0
<?php

try
{
	$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}

$reponse = $bdd->query("SELECT nom possesseur FROM jeux_video WHERE possesseur='JG'");

while (print_r($donnees) = $reponse->fetch())
{$content.= 
	"Nom : ".$donnees['nom']."rn".
	"Prenom : ".$donnees['possesseur']."rn";
	}
0
Stanislas Poisson Messages postés 423 Date d'inscription samedi 1 décembre 2012 Statut Membre Dernière intervention 22 mai 2018 66
Modifié par Stanislas Poisson le 18/12/2012 à 13:10
.... j'ai dis avec la modif, pas en ayant pas mis le print_r et en ayant supprimmer la virgule qui est obligatoire mais pas l'espace...


Tiens:

<?php 

try{ 
 $bdd=new PDO('mysql:host=localhost;dbname=test', 'root', ''); 
}catch(Exception $e){ 
        die('Erreur : '.$e->getMessage()); 
} 
$con=''; 
$rep=$bdd->query("SELECT nom,possesseur FROM jeux_video WHERE possesseur='JG'"); 
while($don=$rep->fetch($rep,PDO::FETCH_ASSOC)){ 
 $con.='Nom : '.$don['nom'].'<br>Prenom : '.$don['possesseur'].'<br>'; 
}


un code plus concis, et sans problème normalement et le print_r c'est dans le while pas dans la condition.
le fetch doit avoir comme premier paramètre le retour du query...
0
Merci de prendre ce temps pour moi.
En revanche, quand j'utilise ton code, voilà ce qui en ressort:

Warning: PDOStatement::fetch() expects parameter 1 to be long
0
Finalement j'ai enlevé le contenu de la parenthèse fetch et ça marche, merci beaucoup!
0

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

Posez votre question
Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 14
18 déc. 2012 à 14:42
Bonjour,

Au cas où tu voudrais quand même trouver la solution à ton code, on ne peut faire
$content.= ...
qu'à la condition que la variable "$content" soit déjà définie quelque part.

Ajoute
$content=null;
juste avant de rentrer dans la boucle.
0