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. 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
  2. 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);
      
  3. 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