Je recoit se msg Undefined variable: id

f@tiz Messages postés 20 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
public function recupVille()
{
$id=$_GET['id'];

$req = mysql_query("select * from ville where id_pays=".mysql_real_escape_string($id));
if($req){
while($array=mysql_fetch_row($req)){
echo " <option value=". $array[0];">".$array[1]."</option>";
}

}
else {echo 'Invalid query: ' . mysql_error() . "\n";

}
}

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    tu as quoi dans ton url au moment où tu appelles cette fonction ?

    Ajoutes au début de la fonction
    print_r($_GET); 
    et dis nous ce que çà t'affiche.

    Cordialement,
    Jordane
    0
    1. f@tiz Messages postés 20 Statut Membre
       
      Bonjour jordan merci votre attention ;
      voila mon nouveau code :

      <?php

      require './connect.php';


      class ville extends pays {

      public function recupVille()
      {
      print_r($_GET);
      $id=$_GET['id'];

      $req = mysql_query("select * from ville where id_pays=".$this->id);
      if($req){
      while($array=mysql_fetch_row($req)){
      echo " <option value=". $array[0];">".$array[1]."</option>";
      }

      }
      else {echo 'Invalid query: ' . mysql_error() . "\n";

      }
      }


      }
      tjr j ai eu l mm msg que id n est defini
      et aussi : Invalid query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
      0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Je vois ... tu appelles une fonction présente dans une class... donc... les variables GET ne lui sont pas transmises...

    L'idéal dans ce cas est de faire comme ceci :

    <?php
    
    require './connect.php';
    
    
    class ville extends pays {
    
    public function recupVille($id){
     if($id){
     $sql="select * 
           from ville 
           where id_pays='$id' ";
      $req = mysql_query($sql);
      if($req){
       $result = "";
       while($array=mysql_fetch_row($req)){
        $result .= " <option value=". $array[0];">".$array[1]."</option>";
       } 
      }else {
       $result = 'Invalid query: ' . mysql_error() ."<br> Requete:<br>" .$sql."\n";
      }
    }else[
     $result = "No ID";
    }
    return $result;
    } 
    
    


    Et dans le code où tu appelles cette fonction :
    $id=isset($_GET['id'])?$_GET['id']:NULL;
     $oVille = new ville();
    echo $oVille->recupVille($id);
    


    PS: Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
    0
    1. f@tiz Messages postés 20 Statut Membre
       

      <code php>
      <?php

      require './connect.php';


      class ville extends pays {

      public function recupVille($id){
      if($id){
      $sql="select *
      from ville
      where id_pays='$id' ";
      $req = mysql_query($sql);
      if($req){
      $result = "";
      while($array=mysql_fetch_row($req)){
      $result .= " <option value=". $array[0];">".$array[1]."</option>";
      }
      }else {
      $result = 'Invalid query: ' . mysql_error() ."<br> Requete:<br>" .$sql."\n";
      }
      }else{
      $result = "No ID";
      }
      return $result;
      }
      }

      </code>

      voila le code d'apple du method :

      
      <?php
      require './ville.php';
      
      $id=isset($_GET['id'])?$_GET['id']:NULL;
       $oVille = new ville();
      echo $oVille->recupVille($id);
      
       je reçu c msg : Class 'pays' not found in C:\wamp\www\lecourrierdupharmacien (1)\ville.php on line 6
      
      mm si j ai une page pays.php
      
      
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      ben... ça veut dire que ta classe PAYS n'est pas chargée...
      Tu dois l'include avant....
      0
    3. Pitet Messages postés 2845 Statut Membre 530
       
      Pour info le tableau des paramètres GET est une variable superglobale, donc accessible depuis une méthode de classe : https://www.php.net/manual/fr/language.variables.scope.php#example-123
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Pitet Messages postés 2845 Statut Membre
         
        @Pitet : Oui c'est sûr... sauf que c'est quand même fortement déconseillé....et en tout cas.. ce n'est clairement pas "propre".


        @Fetiz
        Quoi qu'il en soit...
        A moins que tu n'utilises un AutoLoader pour tes CLASS .. il faut les inclure manuellement....

        <?php
        require './pays.php';
        require './ville.php';
        
        $id=isset($_GET['id'])?$_GET['id']:NULL;
         $oVille = new ville();
        echo $oVille->recupVille($id);
        
        0
  3. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut, avant que ton code ne devienne gros, et en urgence:
    arrête d'utiliser l'extension MySQL, elle est OBSOLÈTE et même DANGEREUSE!
    from human import idiocy
    del idiocy
    0