Undefined variable

Résolu
starterPHP -  
Tralala8 Messages postés 128 Statut Membre -
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

  1. Stanislas Poisson Messages postés 775 Statut Membre 66
     
    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
  2. starterPHP
     
    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
  3. Stanislas Poisson Messages postés 775 Statut Membre 66
     
    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
  4. starterPHP
     
    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
    1. Stanislas Poisson Messages postés 775 Statut Membre 66
       
      heu... redonne ton code avec la modif?
      0
    2. starterPHP
       
      <?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
    3. Stanislas Poisson Messages postés 775 Statut Membre 66
       
      .... 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
    4. starterPHP
       
      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
    5. starterPHP
       
      Finalement j'ai enlevé le contenu de la parenthèse fetch et ça marche, merci beaucoup!
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Tralala8 Messages postés 128 Statut Membre 14
     
    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