Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1499 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  impossible de rentrer dans mon foreach

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

impossible de rentrer dans mon foreach

n°2048365
Azax
Posté le 12-01-2011 à 12:13:49  profilanswer
 

Tout d'abord bonjour,
 
je suis actuellement entrain de développer un intranet a travers un framework, copix 3.
 
Le code sera plus explicatif.
 
 

Code :
  1. function getMatriculeAv($num){
  2.   $i=0;
  3.   $tab = array();
  4.   $req = _doQuery('Select MATRICULE from cartemulti Where BADGE ='.$num.';');
  5.   print_r($req);break;
  6.   foreach($req as $rep){
  7.    $tab[$i][0] = $rep->MATRICULE;
  8.    $i++;
  9.    echo "pupuce";break;
  10.   }
  11. }


 
le résultat du de la requête est le suivant.
Array ( [0] => stdClass Object ( [MATRICULE] => 10223 ) ).
Le problème étant que pour une raison obscure il ne veut pas rentrer dans mon foreach pour extraire mon resultat(10223).
 
Si quelqu'un peut m'expliquer je lui en serais reconnaissant. Je planche sur cette erreur depuis 9h ce matin :/
 
Merci d'avance

mood
Publicité
Posté le 12-01-2011 à 12:13:49  profilanswer
 

n°2048367
gzii
court-circuit
Posté le 12-01-2011 à 12:17:30  profilanswer
 

C'est pour quoi le premier break ?

n°2048368
Azax
Posté le 12-01-2011 à 12:20:24  profilanswer
 

c'était juste pour avoir le resultat de ma requête.
Même sans il ne passe pas dans le foreach.

n°2048374
gzii
court-circuit
Posté le 12-01-2011 à 12:45:45  profilanswer
 

me rappelle plus des vagues trucs que j'ai faits en php, array() ça te crée un tableau utilisable en bidimensionnel directement ?

n°2048375
gzii
court-circuit
Posté le 12-01-2011 à 12:47:12  profilanswer
 

Y'avait pas un truc pour éviter le $i++,
comme $tab[]=$valeur  
sans préciser l'indice ?

n°2048376
esox_ch
Posté le 12-01-2011 à 12:47:31  profilanswer
 

Donc déjà vire tes 2 breaks. Ensuite, ton print_r($req) il est bien interprété et te donne ce que tu veux?
Ensuite, fous un echo en ligne 7 (1ère ligne dans ton foreach)
 
Reviens avec les résultats du code corrigé


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2048379
Azax
Posté le 12-01-2011 à 12:52:38  profilanswer
 

Code :
  1. function getMatriculeAv($num){
  2.   $i=0;
  3.   $tab = array();
  4.   $req = _doQuery('Select MATRICULE from cartemulti Where BADGE ='.$num.';');
  5.   //print_r($req);break;
  6.   foreach ($req as $repo){
  7.    echo "blabla";
  8.    $tab[$i][0] = $repo->MATRICULE;
  9.    $i++;
  10.   }


 
oui mon $req a bien récupéré ce que je veux, mon '10223' mais dans un tableau.
Pour le echo de la première ligne il ne s'affiche pas. (même avec un break derrière j'ai aussi testé).
Le truck c'est que je fais la même manipe pour d'autre fonction, avec des requêtes semblables et cela fonctionne parfaitement.

n°2048382
esox_ch
Posté le 12-01-2011 à 13:00:42  profilanswer
 

Mais arrête de foutre des breaks dans tous les sens vu que manifestement t'as absolument pas compris ce qu'ils font.  
Donc à la ligne 5, tu enlèves le break, tu remets le print_r et tu nous colles ici l'output de print_r
 
Accessoirement (ça doit être seulement la 25 fois depuis le début de l'année que je le répète en plus) : Il ne faut PAS écrire vos requêtes SQL comme ça, utilise PDO. On n'est plus en PHP3 depuis un moment...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2048383
Azax
Posté le 12-01-2011 à 13:04:49  profilanswer
 

Alors d'une sur le code la le break est en commentaire.
De deux je travail via un framework je suis obligé d'utiliser le break sinon ma page est automatiquement redirigé et n'affiche donc pas les echo etc...
De trois le resultat de cette requête si tu avais lu mon premier post en entier est déjà posté.
 
Sinon oui je tout ouï pour ta façon d'écrire les requêtes sql.

n°2048390
esox_ch
Posté le 12-01-2011 à 13:20:31  profilanswer
 

Oui d'accord mais ton break va t'éjecter directement de ta fonction. Donc si tu veux éviter que ton FW intervienne, faut arrêter le traitement à fa fin de la fonction (en mettant un exit, die ou autre)  
À part ça, t'es sur que c'est pas justement ton framework qui te joue des tours? Parce que là je vois aucune raison pour laquelle tu ne devrais pas rentrer dans ton foreach...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
mood
Publicité
Posté le 12-01-2011 à 13:20:31  profilanswer
 

n°2048392
Azax
Posté le 12-01-2011 à 13:32:53  profilanswer
 

Ba c'est bien ça le soucis, moi non plus je ne vois pas de raison.
 
Et si cela vient de framework je vois mal comment régler le problème.
Surtout que comme dit plus haut cela fonctionne parfaitement pour d'autre fonction.
 
Je vais essayer d'explorer de nouvelles pistes.
 
Si je trouve une solution je reviendrais ici la poster.

n°2048393
smaragdus
whores, drugs & J.S. Bach
Posté le 12-01-2011 à 13:37:16  profilanswer
 

Azax a écrit :

Alors d'une sur le code la le break est en commentaire.
De deux je travail via un framework je suis obligé d'utiliser le break sinon ma page est automatiquement redirigé et n'affiche donc pas les echo etc...


 
Ton framework en bois ne gère pas des log ?  [:zytrasnif]  
 

Citation :

Sinon oui je tout ouï pour ta façon d'écrire les requêtes sql.


 
Tout framework digne de ce nom se doit d'avoir un DBAL avec un ORM. Utilise le [:spamafote]

n°2048394
esox_ch
Posté le 12-01-2011 à 13:38:35  profilanswer
 

smaragdus a écrit :


 
Ton framework en bois ne gère pas des log ?  [:zytrasnif]  
 

Citation :

Sinon oui je tout ouï pour ta façon d'écrire les requêtes sql.


 
Tout framework digne de ce nom se doit d'avoir un DBAL avec un ORM. Utilise le [:spamafote]


 
Relis ton post et essaie de répondre à ta "question" sur la connexion avec le SGBD :D


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2048397
Azax
Posté le 12-01-2011 à 13:50:29  profilanswer
 

Code :
  1. function getMatriculeAv($num){
  2.   $tab = array();
  3.   $req = _doQuery('Select * from cartemulti Where BADGE ='.$num.';');
  4.   if(count($req)>0){
  5.   foreach ($req as $i=>$repo){
  6.    $tab[$i][0] = $repo->MATRICULE;
  7.   }
  8.   } else{
  9.   }
  10.    return $tab;
  11.  }


 
Voila cela fonctionne.
Ce coup ci il passe bien dans ma boucle et je peux récupérer la valeur qui m'intéressais.
 
Merci a toi esox pour avoir essayé de m'aider.

n°2048398
gzii
court-circuit
Posté le 12-01-2011 à 13:53:12  profilanswer
 

Ah oui c'est clair que si ça ne contenait rien je ne vois pas comment ça aurait pu passer dans la boucle, donc l'affichage du contenu de $req que tu nous a donné était faux ;)

n°2048403
Azax
Posté le 12-01-2011 à 14:03:37  profilanswer
 

Même pas.
 
C'est ca qui est le plus étrange.
Car maintenant je viens de re-tester mon code lors de la création de ce sujet. et il fonctionne :/
 
Donc je ne sais toujours pas d'ou venait l'erreur.  
Parfois en informatique il vaut mieux pas chercher :D

n°2048431
esox_ch
Posté le 12-01-2011 à 15:17:27  profilanswer
 

Azax a écrit :

Même pas.
 
C'est ca qui est le plus étrange.
Car maintenant je viens de re-tester mon code lors de la création de ce sujet. et il fonctionne :/
 
Donc je ne sais toujours pas d'ou venait l'erreur.  
Parfois en informatique il vaut mieux pas chercher :D


 
Très bonne approche pour avoir l'air un peu con lorsque la pète lors de la mise en prod :bounce:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2048451
Azax
Posté le 12-01-2011 à 16:21:55  profilanswer
 

Très peu de chance, déjà c'était étrange a l'origine. Mais alors que je remette le même code et que cela fonctionne. Vu que toutes mes autres fonctions ont la même syntaxe je vois pas ou cela pose problème.
 
Mais je trouve que passer de 9h à 15h sur une simple boucle qui était surement un caprice du FW c'est suffisamment chercher.

n°2048459
gzii
court-circuit
Posté le 12-01-2011 à 16:30:21  profilanswer
 

C'est rare d'avoir un comportement aléatoire au niveau logiciel.

n°2048462
esox_ch
Posté le 12-01-2011 à 16:35:45  profilanswer
 

Justement, ce genre de machin où le dev se dit "bof maintenant ça marche ... pas chercher" c'est génial quand ça merde devant le client ... C'est des grands moments de solitude pour le dev, et là le site qui tombe pendant 9 ou 15h, ça peut coûter cher ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2048468
Azax
Posté le 12-01-2011 à 16:43:35  profilanswer
 

Oui fin bon escuse moi, simple stagiaire en fin de bts. De ne pas passer ma journée sur un problème sans queue ni tête. Surtout quand cette fonction n'est pas primordiale.
 
J'ai d'autres avancements a faire sur le site.
 
Comme tu la dis toi-même cela n'avais aucune raison de ne pas fonctionner. C'était surement une erreur dans le controller et pas dans la classe.  
 
Sur ce, je vous remercie de m'avoir aidé.


Message édité par Azax le 12-01-2011 à 16:44:39
n°2048553
misterakm
Posté le 12-01-2011 à 21:08:35  profilanswer
 

Voir des break pour arrêter l'exécution d'un framework me fait assez peur.
 


function xyz () {
    // instructions avec print_r, boucles, debug, etc
    die('Je suis en train de faire des petits tests qui contiennent des requêtes ouvertes aux injections SQL :D...');
}


 
Tu auras tout l'output nécessaire.
 
Lorsque la variable que tu print_r est NULL, bah tu vas juste voir NULL (cela ne te dit rien ?) et du coup tu n'entreras pas dans le foreach car $req n'était pas un array...
 
Dernier conseil pour le futur : toujours chercher à comprendre d'où vient une erreur. Cela peut coûter en temps aujourd'hui mais te permettra de garder tes cheveux dans 10 ans :D !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  impossible de rentrer dans mon foreach

 

Sujets relatifs
Impossible de déployer un fichier WAR sur Jonas 5.1.5Impossible de telecharger MP3 d'un site Web!!
Récuperer plusieurs variables $_POST dans un foreachimpossible de lire les musiques
[Résolu] Impossible télécharger un fichier *.icotaille polices impossible ie
Impossible de copier/coller un path dans un input type file sous FF3Access, impossible d'atteindre nouvel enregistrement
comment verifier existence valeur dans array sans passer par foreach? 
Plus de sujets relatifs à : impossible de rentrer dans mon foreach


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR