[resolu] Fetch_object

Fetch_object [resolu] - PHP - Programmation

Marsh Posté le 10-03-2013 à 00:13:08    

Bonjours à tous, ce la fait trois jours que je m'arrche les cheuveux sur un probleme.
 
Je fais un mysql_fetch_object sur des champs, et je n'ai rien en retour, la variable qui est sencé prendre les objets reçoit faux  en retour  :sweat:  
 
La requette SQL est bonne, les champs envoyés sont bon...  j'ai essayé de mettre des alias aux champs et de les appeler ensuite avec l'objet mais  
 
toujours rien... je ne comprend pas pourquoi, mon pojet d'informatique est a rendre pour le 8 avril, pour mon BTS, et la je suis bloqué.
 
Merci de m'aider...
 

Code :
  1. $query = "
  2.    SELECT
  3.    ARTICLE_CONSOLE.id_article_console,
  4.    FICHE_CONSOLE.nom_fiche_console,
  5.    CLIENT.nom_client,
  6.    EMPLOYE.nom_employe,
  7.    ARTICLE_CONSOLE.date_achat_console,
  8.    ARTICLE_CONSOLE.prix_vente_console,
  9.    ARTICLE_CONSOLE.commentaire_console,
  10.    ARTICLE_CONSOLE.etat_console
  11.    FROM
  12.    ARTICLE_CONSOLE,FICHE_CONSOLE,EMPLOYE,CLIENT
  13.    WHERE
  14.    CLIENT.id_client = ARTICLE_CONSOLE.id_client_console
  15.    AND
  16.    EMPLOYE.id_employe = ARTICLE_CONSOLE.id_employe_console
  17.    AND
  18.    ARTICLE_CONSOLE.id_fiche_console = FICHE_CONSOLE.id_fiche_console
  19.    AND
  20.    FICHE_CONSOLE.nom_fiche_console = '$nom_console' $filtre_zone $etat_console ;";
  21.   $bdd = new connexion();
  22.    $req = mysql_query($query)or die(mysql_error());
  23.   $tableau_console = array();
  24.   $i=0;
  25.   while($resultat = mysql_fetch_object($req))
  26.   {
  27.    $tableau_console[$i] = $resultat->id_article_console;
  28.    $i=$i+1;
  29.    $tableau_console[$i] = $resultat->nom_fiche_console;
  30.    $i=$i+1;
  31.    $tableau_console[$i] = $resultat->nom_client;
  32.    $i=$i+1;
  33.    $tableau_console[$i] = $resultat->nom_employe;
  34.    $i=$i+1;
  35.    $tableau_console[$i] = $resultat->date_achat_console;
  36.    $i=$i+1;
  37.    $tableau_console[$i] = $resultat->prix_vente_console;
  38.    $i=$i+1;
  39.    $tableau_console[$i] = $resultat->commentaire_console;
  40.    $i=$i+1;
  41.    $tableau_console[$i] = $resultat->etat_console;
  42.    $i=$i+1;
  43.   }
  44.    unset($bdd);
  45.    $_SESSION['tableau_console'] = $tableau_console;
  46.   if(!$resultat)
  47.     {
  48.      echo"<script type='text/javascript'>alert('Erreur : Verifiez les champs renseignes');document.location.href='../accueil.php';</script>";
  49.      die;
  50.     }
  51.    else
  52.     {
  53.      $redirection="../accueil.php";
  54.      header("Location: $redirection" );
  55.      die;
  56.     }


Message édité par Profil supprimé le 14-03-2013 à 11:03:51
Reply

Marsh Posté le 10-03-2013 à 00:13:08   

Reply

Marsh Posté le 10-03-2013 à 11:33:03    

:hello:  !
 
D'après la page d'aide de la fonction mysql_fetch_object, cell-ci retourne false dans le cas où il n'y a pas de lignes retournées.
Tu es sûr que ta requête retourne bien un résultat ? As-tu essayé de faire un echo sur ta requête générée ?  :??:


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 10-03-2013 à 13:13:43    

elle retourne bien une ligne, même deux...la je ne sais plus quoi faire, même en mysqli ça ne passe pas... :-( je suis perdu de chez perdu la...

Reply

Marsh Posté le 10-03-2013 à 13:17:36    

un echo"$req" me retourne : Resource id #5

Reply

Marsh Posté le 10-03-2013 à 13:24:48    

et le echo $query te retourne quoi ? :??:


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 11-03-2013 à 09:47:48    

Bien il me retourne la requette SQl ^^
 
Je ne sais pas, mais alors vraiment pas la, j'ai eu un message d'erreur une fois, ça parlait d'allocation mémoire ??!!

Reply

Marsh Posté le 11-03-2013 à 21:31:08    

La requete SQL quand tu la colles dans PhpMyadmin ça donne quoi ?

Reply

Marsh Posté le 12-03-2013 à 09:38:19    

ça....
 
 
1|nintendo 64 |Ruaz|gregoire|2013-03-07|75.75|Aticle bien modifié|1
 

Reply

Marsh Posté le 12-03-2013 à 10:40:21    

Dans ta boucle while, tu pourrais faire un var_dump ou un print_r de $resultat ? avant même de remplir ton tableau et nous dire ce qu'il en ressort?
 
De plus si tu veux te simplifier la vie, pas besoin de compteur ($i dans ton cas) en php pour ce que tu fais.
 

Code :
  1. <?php
  2. $maList =  array();
  3. $maList[] = 'foo';
  4. $maList[] = 'bar';
  5. // $maList[0] vaudra foo et $maList[1] vaudra bar
  6. ?>

Reply

Marsh Posté le 12-03-2013 à 11:12:07    

xaeon a écrit :

Dans ta boucle while, tu pourrais faire un var_dump ou un print_r de $resultat ? avant même de remplir ton tableau et nous dire ce qu'il en ressort?
 
De plus si tu veux te simplifier la vie, pas besoin de compteur ($i dans ton cas) en php pour ce que tu fais.
 

Code :
  1. <?php
  2. $maList =  array();
  3. $maList[] = 'foo';
  4. $maList[] = 'bar';
  5. // $maList[0] vaudra foo et $maList[1] vaudra bar
  6. ?>



 
Merci de l'astuce pour le compteur, bien j'ai fais un echo,un print, et bien il ne me lance même pas la boucle, il passe directement au message d'erreur, ce ne serai pas une histoire de pointeur qui serait déja en fin de ligne, mais ça me parrait assez bizard du fait que j'ai déja fait exactement la même chose sur une appli, et ça fonctionnait parfaitement  :??:  :cry:

Reply

Marsh Posté le 12-03-2013 à 11:12:07   

Reply

Marsh Posté le 12-03-2013 à 12:10:42    

Une petite piste j'espère http://forum-images.hardware.fr/icones/message/icon3.gif :
d'après la doc de mysql_query, La chaîne de requête ne doit pas se terminer par un point-virgule.
Si tu l'enlèves de ta requête, il se passe quoi ? :??:


---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 12-03-2013 à 14:56:58    

non rien, toujours pareil... la fetch_objcet ne veut rien savoir....

Reply

Marsh Posté le 12-03-2013 à 16:00:08    

sous phpMyadmin quand je lance des jointures simple, j'ai  
unknown table status: TABLE_TYPE
en notifications, mais il me sort bien le tableau, mais sous DosMysql, il ne me dit rien....  Des idées ?

Reply

Marsh Posté le 12-03-2013 à 16:39:55    

Juste comme ça :
 

Citation :

mysql_fetch_object
 
Valeurs de retour
 
Retourne un objet avec les propriétés qui correspondent à la ligne récupérée, ou FALSE s'il n'y a plus de lignes.


 
Donc forcément tu entreras toujours dans ta condition if(!$resultat)

Reply

Marsh Posté le 12-03-2013 à 21:37:10    

Franchement, y'a pas 50 solutions possibles car si la requête était foireuse d'entrée tu entrerais dans ton die(mysql_error()).  
 
Tu peux juste faire afficher ta requète une fois qu'elle est prête à être envoyée à MySQL (juste avant l'instanciation de $bdd) avec un die juste derrière pour vraiment t'assurer que ta requête renvoie vraiment quelque chose.
 

Reply

Marsh Posté le 14-03-2013 à 10:31:22    

c'est corrigé, merci pour vos aides,  
 
En faite même si je ne mettais rien dans le formumaire,
 
bien cela prenais une valeur '', donc le  isset était vrai donc bien il me mettait a jour la requette sql avec un bout de sql vide...
 
genre table.machin='' and table.machin='0'...
 
Donc forcément, ça donnait rien du tout....
 
Ma seconde érreur à été de déclarer le $resultat  en array(); alors qu'il recoit des objet.
 
Petit optimisation, faire des doubles tableaux
du style  
 
$monTab[$i][numeroDeCase] = $resultat->maColonne;
 
Voila ça marche, un grand merci à tous pour votre attention porté a mon problème, surtout que c'est pour mon BTS sio :)
 
Encore Merci les Hfrien, a bientot

Reply

Marsh Posté le 14-03-2013 à 10:33:14    

bistouille a écrit :

Juste comme ça :

 
Citation :

mysql_fetch_object

 

Valeurs de retour

 

Retourne un objet avec les propriétés qui correspondent à la ligne récupérée, ou FALSE s'il n'y a plus de lignes.

 

Donc forcément tu entreras toujours dans ta condition if(!$resultat)

 

oui j'ai fait un

 

$numrow = mysql_num_rows($req);

 

Ensuite :

 

    SI $numrow = 0 ALORS afficher "Erreur : t'es un gros boulet" SINON afficher "ok" FIN SI

 

et voila  :jap:  


Message édité par Profil supprimé le 14-03-2013 à 10:33:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed