Je recoit se msg Undefined variable: id

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. Contributeur
    '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
    1. Modérateur
      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

      1. <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
        
        
      2. Modérateur
        ben... ça veut dire que ta classe PAYS n'est pas chargée...
        Tu dois l'include avant....
      3. Modérateur
        @Pitet@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);
        
    2. Modérateur
      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
      1. 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