Erreur boucle Php/mysql [Résolu/Fermé]

Signaler
-
 le père -
Bonjour, Qu'est ce qui cloche là dessus et pourquoi ? On m'indique une erreur... Je pense que mon erreur vient de $hdispo[$champs[0]] = $champs[1]; ... Mais j'ai pas compris l'utilité de ce morceau...


$sql = "SELECT titre, count(*) FROM questionaire GROUP BY hdispo";
$result = mysql_query($sql);

foreach( $champs = mysql_fetch_row($result)){
$hdispo[$champs[0]] = $champs[1];
}
$matin = $hdispo['matin'];
$aprem = $hdispo['apres-midi'];
$soir = $hdispo['soir'];

14 réponses

Bonjour

Quel est le message d'erreur ?
Parse error: parse error in j:\site\easyphp1-8\www\site1\index.php on line 96
ligne 96 qui est : foreach( $champs = mysql_fetch_row($result)){
Oups... en effet, grosse erreur que je n'avais même pas vue
pas foreach, mais while...
while( $champs = mysql_fetch_row($result))
merci ... Mais sa me remplace l'erreur par :

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in j:\site\easyphp1-8\www\site1\index.php on line 96

Notice: Undefined variable: hdispo in j:\site\easyphp1-8\www\site1\index.php on line 99

Notice: Undefined variable: hdispo in j:\site\easyphp1-8\www\site1\index.php on line 100

Notice: Undefined variable: hdispo in j:\site\easyphp1-8\www\site1\index.php on line 101

???
Il fallait s'y attendre :-)
$result = mysql_query($sql) or die(mysql_error());
pour savoir d'où vient l'erreur.
Oups, une petite erreur de frappe dans ma table SQL ... Ce n'était pas titre mais hdispo dans SELECT...

Par contre sa me laisse :
Notice: Undefined variable: hdispo in j:\info gestion\easyphp1-8\www\fixie\index.php on line 99

Notice: Undefined variable: hdispo in j:\info gestion\easyphp1-8\www\fixie\index.php on line 100

Notice: Undefined variable: hdispo in j:\info gestion\easyphp1-8\www\fixie\index.php on line 101

C'est à dire :
$matin = $hdispo['matin'];
$aprem = $hdispo['apres-midi'];
$soir = $hdispo['soir'];

Normalement sa devrait etre 0... Comme il n'y a pas encore de "matin" "apres-midi" "soir" dans la BDD
S'il n'y a pas encore de 'matin' etc.. dans ta base, on n'est jamais entré dans la boucle while et donc la variable $hdispo n'a jamais été créée, puis qu'elle est créée dans cette boucle. Donc l'erreur que tu vois est parfaitement normale.
Si tu veux l'éviter, initialise au début de ton script $hdispo['matin']=0; (idem pour apres-midi et soir)
J'ai remplit ma BDD et en effet sa marche ... Il n'y a pas une fonction du genre ? :
:
If $matin is null = 0 ...

???


Mettre

$hdispo['matin']=0
$hdispo['apres-midi']=0
$hdispo['soir']=0

Sa pose problème ...
if (isset($hdispo['matin']))...
Pas facile a utiliser cet isset... D'après : http://www.manuelphp.com/php/function.isset.php Moi je voulais en False...

If (isset($hdispo['matin']))
{
echo ==> Seulement si la valeur est right.

}


Alors je vais faire :
, initialise au début de ton script $hdispo['matin']=0;
Mais sa marche pas... Bon je réfléchirais demain...

Merci le père pour ton aide précieuse.
Moi je voulais en False
????
tu ne sais pas inverser une condition de PHP avec ! :

If ( ! isset($hdispo['matin']))
{
echo ==> Seulement si la valeur est false.
}
ou alors je n'ai pas compris ce que tu voulais dire ...
Non je ne savais pas inverser une condition. Dans ce cas, je comprend mieux la fonction de !isset...
Non je ne savais pas inverser une condition
Ouh la la ! laisse tout tomber (provisoirement) et lis un petit tuto sur le PHP, parce que là, c'est quand même une grosse lacune !
Au passage, tu pouvais obtenir le même effet avec un 'else'.

Bon courage pour la suite