Je recoit se msg Undefined variable: id

Fermé
f@tiz Messages postés 15 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 9 juin 2015 - 9 mars 2015 à 04:34
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 9 mars 2015 à 21:25
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

jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
Modifié par jordane45 le 9/03/2015 à 08:20
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
f@tiz Messages postés 15 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 9 juin 2015
9 mars 2015 à 12:35
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
jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
9 mars 2015 à 13:16
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
f@tiz Messages postés 15 Date d'inscription lundi 9 mars 2015 Statut Membre Dernière intervention 9 juin 2015
9 mars 2015 à 13:46

<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
jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
9 mars 2015 à 15:35
ben... ça veut dire que ta classe PAYS n'est pas chargée...
Tu dois l'include avant....
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
9 mars 2015 à 16:22
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
jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
9 mars 2015 à 21:21
@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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 9/03/2015 à 21:26
'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