[PHP] Variables déclarées / Non déclarées ...
Résolu/Fermé
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
-
27 avril 2011 à 10:28
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 - 28 avril 2011 à 10:17
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 - 28 avril 2011 à 10:17
A voir également:
- [PHP] Variables déclarées / Non déclarées ...
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Nuage de points excel 4 variables - Forum Excel
- Br php ✓ - Forum PHP
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
15 réponses
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
27 avril 2011 à 10:56
27 avril 2011 à 10:56
Bonjour,
du code, du code, du code!! scande-t-il au milieu de la foule.
montre-nous comment tu déclares tes variables, comment tu remplis ton tableau, les "calculs que tu fait, la ou ca plante enfin tout quoi ^^
du code, du code, du code!! scande-t-il au milieu de la foule.
montre-nous comment tu déclares tes variables, comment tu remplis ton tableau, les "calculs que tu fait, la ou ca plante enfin tout quoi ^^
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
27 avril 2011 à 11:57
27 avril 2011 à 11:57
Encore toi ! ^^
Code :
Dans un formulaire : // Ecriture d'une ligne d'INPUT - $type_ligne[$l]."_".$m étant un tableau ne mémoire donc admettons 3 INPUT de nom : [0] = A-[1] = B - [2] = C
for ($m=1;$m<13;$m++)
{
echo "<td><INPUT size=6 name='".$type_ligne[$l]."_".$m."' value='".$row99["mois_".$m]."' ></td>\n";
}
//Vérification des variables moyennes => Si pas validé = NULL / Si validé = valeur de la variable
if (isset (${'moyenne2_'.$l})==true)
{
echo "<td><INPUT readonly name='moyenne2_".$l."' value='".${'moyenne2_'.$l}."' size=6></td>";
}
else
{
echo "<td><INPUT readonly name='moyenne2_".$l."' value='NULL' size=6></td>";
}
Calcul :
$nbdiv=0;
for ($l=1;$l<13;$l++)
{
${'mois_'.$l} = $row99["mois_".$l];
${'nbrdir_'.$l} = $_POST["nbrdir_".$l];
${'nbrindir_'.$l} = $_POST["nbrindir_".$l];
${'nbrstruc_'.$l} = $_POST["nbrstruc_".$l];
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l};
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
{
if (${'moyenne2_'.$l}>0)
{
$nbdiv++;
}
if ($type_ligne[$i]="nbrdir")
{
$moyenne2_4 = ($nbrdir_1 + $nbrdir_2 + $nbrdir_3 + $nbrdir_4 + $nbrdir_5 + $nbrdir_6 + $nbrdir_7 + $nbrdir_8 + $nbrdir_9 + $nbrdir_10 + $nbrdir_11 + $nbrdir_12) / $nbdiv;
}
if ($type_ligne[$i]="nbrindir")
{
${'moyenne2_5'} = ($nbrindir_1 + $nbrindir_2 + $nbrindir_3 + $nbrindir_4 + $nbrindir_5 + $nbrindir_6 + $nbrindir_7 + $nbrindir_8 + $nbrindir_9 + $nbrindir_10 + $nbrindir_11 + $nbrindir_12) / $nbdiv;
}
if ($type_ligne[$i]="nbrstruc")
{
${'moyenne2_6'} = ($nbrstruc_1 + $nbrstruc_2 + $nbrstruc_3 + $nbrstruc_4 + $nbrstruc_5 + $nbrstruc_6 + $nbrstruc_7 + $nbrstruc_8 + $nbrstruc_9 + $nbrstruc_10 + $nbrstruc_11 + $nbrstruc_12) / $nbdiv;
}
--
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
Code :
Dans un formulaire : // Ecriture d'une ligne d'INPUT - $type_ligne[$l]."_".$m étant un tableau ne mémoire donc admettons 3 INPUT de nom : [0] = A-[1] = B - [2] = C
for ($m=1;$m<13;$m++)
{
echo "<td><INPUT size=6 name='".$type_ligne[$l]."_".$m."' value='".$row99["mois_".$m]."' ></td>\n";
}
//Vérification des variables moyennes => Si pas validé = NULL / Si validé = valeur de la variable
if (isset (${'moyenne2_'.$l})==true)
{
echo "<td><INPUT readonly name='moyenne2_".$l."' value='".${'moyenne2_'.$l}."' size=6></td>";
}
else
{
echo "<td><INPUT readonly name='moyenne2_".$l."' value='NULL' size=6></td>";
}
Calcul :
$nbdiv=0;
for ($l=1;$l<13;$l++)
{
${'mois_'.$l} = $row99["mois_".$l];
${'nbrdir_'.$l} = $_POST["nbrdir_".$l];
${'nbrindir_'.$l} = $_POST["nbrindir_".$l];
${'nbrstruc_'.$l} = $_POST["nbrstruc_".$l];
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l};
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
{
if (${'moyenne2_'.$l}>0)
{
$nbdiv++;
}
if ($type_ligne[$i]="nbrdir")
{
$moyenne2_4 = ($nbrdir_1 + $nbrdir_2 + $nbrdir_3 + $nbrdir_4 + $nbrdir_5 + $nbrdir_6 + $nbrdir_7 + $nbrdir_8 + $nbrdir_9 + $nbrdir_10 + $nbrdir_11 + $nbrdir_12) / $nbdiv;
}
if ($type_ligne[$i]="nbrindir")
{
${'moyenne2_5'} = ($nbrindir_1 + $nbrindir_2 + $nbrindir_3 + $nbrindir_4 + $nbrindir_5 + $nbrindir_6 + $nbrindir_7 + $nbrindir_8 + $nbrindir_9 + $nbrindir_10 + $nbrindir_11 + $nbrindir_12) / $nbdiv;
}
if ($type_ligne[$i]="nbrstruc")
{
${'moyenne2_6'} = ($nbrstruc_1 + $nbrstruc_2 + $nbrstruc_3 + $nbrstruc_4 + $nbrstruc_5 + $nbrstruc_6 + $nbrstruc_7 + $nbrstruc_8 + $nbrstruc_9 + $nbrstruc_10 + $nbrstruc_11 + $nbrstruc_12) / $nbdiv;
}
--
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
27 avril 2011 à 14:06
27 avril 2011 à 14:06
et l'erreur arrive a quelle ligne? quelles variables il te dit qu'il ne connait pas?
lol et oui encore moi xD
lol et oui encore moi xD
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
27 avril 2011 à 14:21
27 avril 2011 à 14:21
Bah la je n'ai mis que 3 variables mais il y en a beaucoup plus.
C'est la :
if ($type_ligne[$i]="nbrstruc")
{
${'moyenne2_6'} = ($nbrstruc_1 + $nbrstruc_2 + $nbrstruc_3 + $nbrstruc_4 + $nbrstruc_5 + $nbrstruc_6 + $nbrstruc_7 + $nbrstruc_8 + $nbrstruc_9 + $nbrstruc_10 + $nbrstruc_11 + $nbrstruc_12) / $nbdiv;
}
bah il marque $nbrstruc_2 à 12 ( pas la 1 ) dont le svariables ne sont pas définies.
C'est la :
if ($type_ligne[$i]="nbrstruc")
{
${'moyenne2_6'} = ($nbrstruc_1 + $nbrstruc_2 + $nbrstruc_3 + $nbrstruc_4 + $nbrstruc_5 + $nbrstruc_6 + $nbrstruc_7 + $nbrstruc_8 + $nbrstruc_9 + $nbrstruc_10 + $nbrstruc_11 + $nbrstruc_12) / $nbdiv;
}
bah il marque $nbrstruc_2 à 12 ( pas la 1 ) dont le svariables ne sont pas définies.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
27 avril 2011 à 14:33
27 avril 2011 à 14:33
t'es sur que tes $_POST["nbrstruc_".$l] sont tous définis et remplis?
au debut de ta page fait un print_r($_POST); tu vera toutes les variables qui arrivent et surtout si il en manque ou pas
au debut de ta page fait un print_r($_POST); tu vera toutes les variables qui arrivent et surtout si il en manque ou pas
Bonjour
Je pense que l'accolade de fin de ton for ($l=1;$l<13;$l++) n'est pas au bon endroit.
Elle devrait être après ${'moyenne2_'.$l} = ...
Comme tu ne refermes pas ton for, seule laes variables avec _1 sont définies quand tu abordes tes autres boucles
De plus, es-tu bien sûr que tu voulais faire if ($type_ligne[$i]="nbrdir") ? ce ne serait pas plutôt == ?
Je pense que l'accolade de fin de ton for ($l=1;$l<13;$l++) n'est pas au bon endroit.
Elle devrait être après ${'moyenne2_'.$l} = ...
Comme tu ne refermes pas ton for, seule laes variables avec _1 sont définies quand tu abordes tes autres boucles
De plus, es-tu bien sûr que tu voulais faire if ($type_ligne[$i]="nbrdir") ? ce ne serait pas plutôt == ?
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
27 avril 2011 à 14:42
27 avril 2011 à 14:42
Je vien de faire le print_r($_POST) et je vien de vérifier et elles y sont bien toutes sans exeptions avec des valeurs...
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
27 avril 2011 à 14:46
27 avril 2011 à 14:46
effectivement je pense que le père à (une fois de plus) raison ^^
sans le double égale ton test sera toujours vrai (il me semble) car il test si l affectation s'est bien passée
et effectivement, ou est la fin de ta boucle for?
sans le double égale ton test sera toujours vrai (il me semble) car il test si l affectation s'est bien passée
et effectivement, ou est la fin de ta boucle for?
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
27 avril 2011 à 14:57
27 avril 2011 à 14:57
Oups j'ai oublier de la mettre sur ce code mais dans le mien la fin y est bien ( c'est qu'il y avait d'autre calculs je n'ai pas tout pri)
Alors c'est qu'elle n'est pas au bon endroit. Si elle était au bon endroit, tes variables seraient définies; si elle est trop loin, On a exactement l'erreur que tu décris.
S'il y a une accolade fermante entre
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l}; et
et
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
alors ce n'est pas le for qu'elle referme, mais un autre bloc
S'il y a une accolade fermante entre
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l}; et
et
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
alors ce n'est pas le for qu'elle referme, mais un autre bloc
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
Modifié par digsaw_- le 27/04/2011 à 15:12
Modifié par digsaw_- le 27/04/2011 à 15:12
Ben regarde du coup en vérifiant elel ferme bien ce bloc :
$nbdiv=0;
for ($l=1;$l<13;$l++)
{
${'mois_'.$l} = $row99["mois_".$l];
${'dcadres_'.$l} = $_POST["dcadres_".$l];
${'detam_'.$l} = $_POST["detam_".$l];
${'douvriers_'.$l} = $_POST["douvriers_".$l];
${'nbrdir_'.$l} = $_POST["nbrdir_".$l];
${'nbrindir_'.$l} = $_POST["nbrindir_".$l];
${'nbrstruc_'.$l} = $_POST["nbrstruc_".$l];
${'dnbrcdd_'.$l} = $_POST["dnbrcdd_".$l];
${'dnbrtmppar_'.$l} = $_POST["dnbrtmppar_".$l];
${'nbrapqua_'.$l} = $_POST["nbrapqua_".$l];
${'nbrdetache_'.$l} = $_POST["nbrdetache_".$l];
${'mallgdur_'.$l} = $_POST["mallgdur_".$l];
${'nbrcongema_'.$l} = $_POST["nbrcongema_".$l];
${'nbrpreanon_'.$l} = $_POST["nbrpreanon_".$l];
${'moyenne2_'.$l} = ${'detam_'.$l} + ${'douvriers_'.$l} + ${'dcadres_'.$l} + ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l} + ${'dnbrcdd_'.$l} + ${'dnbrtmppar_'.$l} + ${'nbrapqua_'.$l} + ${'nbrdetache_'.$l} + ${'mallgdur_'.$l} + ${'nbrcongema_'.$l} + ${'nbrpreanon_'.$l};
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
{
if (${'moyenne2_'.$l}>0)
{
$nbdiv++;
}
if ($type_ligne[$i]="dcadres")
{
${'moyenne2_1'} = ($dcadres_1 + $dcadres_2 + $dcadres_3 + $dcadres_4 + $dcadres_5 + $dcadres_6 + $dcadres_7 + $dcadres_8 + $dcadres_9 + $dcadres_10 + $dcadres_11 + $dcadres_12) / $nbdiv;
}
if ($type_ligne[$i]="detam")
{
${'moyenne2_2'} = ($detam_1 + $detam_2 + $detam_3 + $detam_4 + $detam_5 + $detam_6 + $detam_7 + $detam_8 + $detam_9 + $detam_10 + $detam_11 + $detam_12) / $nbdiv;
}
}
}
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
$nbdiv=0;
for ($l=1;$l<13;$l++)
{
${'mois_'.$l} = $row99["mois_".$l];
${'dcadres_'.$l} = $_POST["dcadres_".$l];
${'detam_'.$l} = $_POST["detam_".$l];
${'douvriers_'.$l} = $_POST["douvriers_".$l];
${'nbrdir_'.$l} = $_POST["nbrdir_".$l];
${'nbrindir_'.$l} = $_POST["nbrindir_".$l];
${'nbrstruc_'.$l} = $_POST["nbrstruc_".$l];
${'dnbrcdd_'.$l} = $_POST["dnbrcdd_".$l];
${'dnbrtmppar_'.$l} = $_POST["dnbrtmppar_".$l];
${'nbrapqua_'.$l} = $_POST["nbrapqua_".$l];
${'nbrdetache_'.$l} = $_POST["nbrdetache_".$l];
${'mallgdur_'.$l} = $_POST["mallgdur_".$l];
${'nbrcongema_'.$l} = $_POST["nbrcongema_".$l];
${'nbrpreanon_'.$l} = $_POST["nbrpreanon_".$l];
${'moyenne2_'.$l} = ${'detam_'.$l} + ${'douvriers_'.$l} + ${'dcadres_'.$l} + ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l} + ${'dnbrcdd_'.$l} + ${'dnbrtmppar_'.$l} + ${'nbrapqua_'.$l} + ${'nbrdetache_'.$l} + ${'mallgdur_'.$l} + ${'nbrcongema_'.$l} + ${'nbrpreanon_'.$l};
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
{
if (${'moyenne2_'.$l}>0)
{
$nbdiv++;
}
if ($type_ligne[$i]="dcadres")
{
${'moyenne2_1'} = ($dcadres_1 + $dcadres_2 + $dcadres_3 + $dcadres_4 + $dcadres_5 + $dcadres_6 + $dcadres_7 + $dcadres_8 + $dcadres_9 + $dcadres_10 + $dcadres_11 + $dcadres_12) / $nbdiv;
}
if ($type_ligne[$i]="detam")
{
${'moyenne2_2'} = ($detam_1 + $detam_2 + $detam_3 + $detam_4 + $detam_5 + $detam_6 + $detam_7 + $detam_8 + $detam_9 + $detam_10 + $detam_11 + $detam_12) / $nbdiv;
}
}
}
Digsaw
'Avoir une section fumer dans un restaurant, c'est comme avoir une section pisseur dans une piscine !'
Tu confirmes ce que je dis depuis le début. Ton for ($l=1;$l<13;$l++) n'est pas refermé au bon endroit.
Il me semble (sans trop chercher à comprendre la logique de ton programme) qu'il devrait l'être entre
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l}; et
et
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
Tu n'as pas tenu compte non plus de ma remarque sur le test d'égalité (== et non pas =)
Autre remarque : l'expression sizeof($type_ligne[$i]."_".$l) vaut toujours 1, car sizeof ne donne pas la taille d'une variable (le PHP n'est pas le C) mais le nombre d'éléments d'un tableau. or ce que tu lui donne à digérer est une simple chaîne, pas un tableau.
Il me semble (sans trop chercher à comprendre la logique de ton programme) qu'il devrait l'être entre
${'moyenne2_'.$l} = ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l}; et
et
for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++)
Tu n'as pas tenu compte non plus de ma remarque sur le test d'égalité (== et non pas =)
Autre remarque : l'expression sizeof($type_ligne[$i]."_".$l) vaut toujours 1, car sizeof ne donne pas la taille d'une variable (le PHP n'est pas le C) mais le nombre d'éléments d'un tableau. or ce que tu lui donne à digérer est une simple chaîne, pas un tableau.
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
27 avril 2011 à 15:29
27 avril 2011 à 15:29
je suis pas sur d'avoir tout tout compris a ton prg mais il me semble que j'ai une solution.
je pense que tu devrais donc instancier toutes tes variables au debut et faire ton traitement apres et non pas faire tout d'un coup ce qui est impossible.
tu instancie toutes les variables que tu aura besoin et tu traite ensuite
je pense que tu devrais donc instancier toutes tes variables au debut et faire ton traitement apres et non pas faire tout d'un coup ce qui est impossible.
$nbdiv=0; for ($l=1;$l<13;$l++) { ${'mois_'.$l} = $row99["mois_".$l]; ${'dcadres_'.$l} = $_POST["dcadres_".$l]; ${'detam_'.$l} = $_POST["detam_".$l]; ${'douvriers_'.$l} = $_POST["douvriers_".$l]; ${'nbrdir_'.$l} = $_POST["nbrdir_".$l]; ${'nbrindir_'.$l} = $_POST["nbrindir_".$l]; ${'nbrstruc_'.$l} = $_POST["nbrstruc_".$l]; ${'dnbrcdd_'.$l} = $_POST["dnbrcdd_".$l]; ${'dnbrtmppar_'.$l} = $_POST["dnbrtmppar_".$l]; ${'nbrapqua_'.$l} = $_POST["nbrapqua_".$l]; ${'nbrdetache_'.$l} = $_POST["nbrdetache_".$l]; ${'mallgdur_'.$l} = $_POST["mallgdur_".$l]; ${'nbrcongema_'.$l} = $_POST["nbrcongema_".$l]; ${'nbrpreanon_'.$l} = $_POST["nbrpreanon_".$l]; ${'moyenne2_'.$l} = ${'detam_'.$l} + ${'douvriers_'.$l} + ${'dcadres_'.$l} + ${'nbrdir_'.$l} + ${'nbrindir_'.$l} + ${'nbrstruc_'.$l} + ${'dnbrcdd_'.$l} + ${'dnbrtmppar_'.$l} + ${'nbrapqua_'.$l} + ${'nbrdetache_'.$l} + ${'mallgdur_'.$l} + ${'nbrcongema_'.$l} + ${'nbrpreanon_'.$l}; } for ($l=1;$l<13;$l++) { for ($i=0;$i<sizeof($type_ligne[$i]."_".$l);$i++) { if (${'moyenne2_'.$l}>0) { $nbdiv++; } if ($type_ligne[$i]="dcadres") { ${'moyenne2_1'} = ($dcadres_1 + $dcadres_2 + $dcadres_3 + $dcadres_4 + $dcadres_5 + $dcadres_6 + $dcadres_7 + $dcadres_8 + $dcadres_9 + $dcadres_10 + $dcadres_11 + $dcadres_12) / $nbdiv; } if ($type_ligne[$i]="detam") { ${'moyenne2_2'} = ($detam_1 + $detam_2 + $detam_3 + $detam_4 + $detam_5 + $detam_6 + $detam_7 + $detam_8 + $detam_9 + $detam_10 + $detam_11 + $detam_12) / $nbdiv; } } }
tu instancie toutes les variables que tu aura besoin et tu traite ensuite
digsaw_-
Messages postés
489
Date d'inscription
lundi 14 septembre 2009
Statut
Membre
Dernière intervention
24 septembre 2013
57
28 avril 2011 à 10:08
28 avril 2011 à 10:08
Bonjour a vous deux !
je bvien de remettre en place toutes les accolades et c'était donc bien sa.. autant pour moi, sans vouloir me défendre je pense avoir trop vu de PHP depuis 2 mois je me sens un peu dépassé !
En tout cas merci à vous deux pour votre temps et votre aide !
Pour résumé : C'était bien un problème d'accolades qui était placé torp loin ! en faisant comme vous m'avez dis ! Tout marche.. Pour le moment ^^ !
Merci encore !
je bvien de remettre en place toutes les accolades et c'était donc bien sa.. autant pour moi, sans vouloir me défendre je pense avoir trop vu de PHP depuis 2 mois je me sens un peu dépassé !
En tout cas merci à vous deux pour votre temps et votre aide !
Pour résumé : C'était bien un problème d'accolades qui était placé torp loin ! en faisant comme vous m'avez dis ! Tout marche.. Pour le moment ^^ !
Merci encore !
Gremy87
Messages postés
352
Date d'inscription
mercredi 19 mai 2010
Statut
Membre
Dernière intervention
19 mars 2014
38
28 avril 2011 à 10:17
28 avril 2011 à 10:17
De rien ;)