|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
Bonjour,
En ce moment, j'ai un projet de programmation où je dois reprendre le code d'un ancien collègue pour corriger ses erreurs. Malheureusement, ce n'est pas de tout repos !! Le code ci-dessous doit généré un tableau, mais lorsque j'affiche ma page, l'erreur suivante apparait au dessus de mon tableau : "Notice: Undefined offset: 890 in C:\wamp\www\absence\gestweekend.php on line 27 Call Stack" Je suis encore loin d'être un expert, et je voulais d'abord savoir si c'est une erreur PHP ou MySQL (je pense que c'est une erreur MySQL !). Code de la page : Code :
D'après ce que j'ai pu voir c'est le fait d'utiliser un "for" dans ces conditions qui peut poser problème, est-ce vraiment ça ? Si oui, comment parrer à ce problème ? Merci pour votre aide. Cordialement Quentin |
||
|
|
00
|
|
|
#2 |
![]() ![]() Sébastien Ingénieur réalisateur Inscription : mars 2011 Messages : 779 ![]() |
Bonjour,
C'est ton for qui est foireux Tu es censé utiliser la même variable partout...
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles. - avant de poster ![]() - Je ne réponds pas aux questions techniques en MP. |
|
|
00
|
|
|
#3 | ||||||
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
Okay, merci beaucoup, maintenant je sais sur quoi me concentrer !
"$var[0][5*$i]" est bien un tableau double ? for($boucletableau=0; $Jourtransmid[0][5*$boucletableau] !== NULL ; $boucletableau++){ Comment refaire le for en testant un tableau double ? Dois-je de fixer la variable de la sorte $i = $Jourtransmid[0][0]; avant ma boucle ? Voici ce que je viens d'essayer mais sans succès : Code :
Code :
Code :
Merci |
||||||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Adeline Consultant informatique Inscription : décembre 2011 Messages : 20 ![]() |
est-ce que tu peux nous dire ce qu'il y a dans ton tableau Jourtransmid avec un var_dump($Jourtransmid) par exemple avant la boucle.
|
|
|
00
|
|
|
#5 | |
|
Membre expérimenté
![]() |
Salut ; je crois que la ligne 27 fait référence a :
Citation:
|
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 727 ![]() |
Salut
A mon avis, quoi que tu fasse à ce niveau là, tu conserveras toujours un algo quelque peu pas très zen (pour ne pas dire tordu). L'origine du problème vient de l'étape d'avant, c'est à dire de la manière dont est construit le formulaire. Si tu veux obtenir quelque chose de plus propre, de plus logique qui au bout facilitera les traitements comme les UPDATE, INSERT (entre autre), c'est au niveau du formulaire qu'il faudrait agir. Ton prédécesseur ne savait pas apparemment qu'il est possible de structurer un formulaire de façon à renvoyer les données dans un (ou plusieurs) tableaux à plusieurs dimensions, ce qui justement facilite grandement les choses. Il a opté pour des astuces avec ces pléiades de tirets qui oblique à décortiquer les données. C'est ingérable vu la quantité de données concerné. Exemple basique : Code :
-> $_POST[tab]['element'][0] (valeur 1) -> $_POST[tab]['element'][1] (valeur 2) Une simple boucle avec foreach ($_POST[tab]['element'] as $element) (ou sur "tab) permet de récupérer tous les éléments. Difficile de faire plus simple. Mais dans ton cas il y a du boulot, malheureusement. De mon coté, il m'est impossible d'éplucher ton code, trop ... vaut mieux rien dire.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
J'avoue qu'il y a pas mal de problèmes dans la base de la programmation mais j'avoue aussi ne pas avoir vraiment l'envie de tout refaire !!!
D'après ce que j'ai compris suite à plusieurs essais, c'est que ma boucle tourne jusqu'à ce qu'une case du tableau soit vide, or comme aucune case du tableau n'est vide, la boucle tourne donc jusqu'à dépasser la taille du tableau, c'est pourquoi, en testant une case qui n'existe pas, j'obtiens forcément une erreur ! J'aimerai donc tester la taille de mon tableau. Si j'ai un tableau : $tab[][]; et que je fait : sizeof($tab); est-ce que j'obtient le nombre de cases de la première dimension ? et si je fait : sizeof($tab[0]); est-ce que j'obtient le nombre de cases de la seconde dimension de mon tableau ? Merci pour toutes vos réponses ! |
|
|
00
|
|
|
#9 | ||
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
Voici ce qui se trouve dedans :
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Adeline Consultant informatique Inscription : décembre 2011 Messages : 20 ![]() |
et si tu remplaces ta condition d’arrêt de la boucle par quelque chose qui ressemble à isset($Jourtransmid[0][5*$boucletableau]) ça devrai tester l’existence de la case.
|
|
|
10
|
|
|
#11 |
|
Invité régulier
![]() Quentin PETITÉtudiant Inscription : décembre 2011 Messages : 18 ![]() |
Génial, c'est ça !!!
Merci beaucoup. |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé
![]() ![]() |
Tu as aussi la possibilité de modifier un peu l'en-tête de la boucle ainsi :
Code :
Fais bien attention à ce que tous les tableaux aient bien les même dimensions.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com