impossible de rentrer dans mon foreach - PHP - Programmation
Marsh Posté le 12-01-2011 à 12:20:24
c'était juste pour avoir le resultat de ma requête.
Même sans il ne passe pas dans le foreach.
Marsh Posté le 12-01-2011 à 12:45:45
me rappelle plus des vagues trucs que j'ai faits en php, array() ça te crée un tableau utilisable en bidimensionnel directement ?
Marsh Posté le 12-01-2011 à 12:47:12
Y'avait pas un truc pour éviter le $i++,
comme $tab[]=$valeur
sans préciser l'indice ?
Marsh Posté le 12-01-2011 à 12:47:31
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é
Marsh Posté le 12-01-2011 à 12:52:38
Code :
|
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.
Marsh Posté le 12-01-2011 à 13:00:42
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...
Marsh Posté le 12-01-2011 à 13:04:49
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.
Marsh Posté le 12-01-2011 à 13:20:31
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...
Marsh Posté le 12-01-2011 à 13:32:53
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.
Marsh Posté le 12-01-2011 à 13:37:16
Azax a écrit : Alors d'une sur le code la le break est en commentaire. |
Ton framework en bois ne gère pas des log ?
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
Marsh Posté le 12-01-2011 à 13:38:35
smaragdus a écrit :
|
Relis ton post et essaie de répondre à ta "question" sur la connexion avec le SGBD
Marsh Posté le 12-01-2011 à 13:50:29
Code :
|
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.
Marsh Posté le 12-01-2011 à 13:53:12
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
Marsh Posté le 12-01-2011 à 14:03:37
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
Marsh Posté le 12-01-2011 à 15:17:27
Azax a écrit : Même pas. |
Très bonne approche pour avoir l'air un peu con lorsque la pète lors de la mise en prod
Marsh Posté le 12-01-2011 à 16:21:55
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.
Marsh Posté le 12-01-2011 à 16:30:21
C'est rare d'avoir un comportement aléatoire au niveau logiciel.
Marsh Posté le 12-01-2011 à 16:35:45
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 ..
Marsh Posté le 12-01-2011 à 16:43:35
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é.
Marsh Posté le 12-01-2011 à 21:08:35
Voir des break pour arrêter l'exécution d'un framework me fait assez peur.
|
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 !
Marsh Posté le 12-01-2011 à 12:13:49
Tout d'abord bonjour,
je suis actuellement entrain de développer un intranet a travers un framework, copix 3.
Le code sera plus explicatif.
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