Erreur boucle Php/mysql

Résolu
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

  1. Bonjour

    Quel est le message d'erreur ?
    0
    1. Parse error: parse error in j:\site\easyphp1-8\www\site1\index.php on line 96
      0
      1. ligne 96 qui est : foreach( $champs = mysql_fetch_row($result)){
        0
        1. Oups... en effet, grosse erreur que je n'avais même pas vue
          pas foreach, mais while...
          while( $champs = mysql_fetch_row($result))
          0
          1. 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

            ???
            0
            1. Il fallait s'y attendre :-)
              $result = mysql_query($sql) or die(mysql_error());
              pour savoir d'où vient l'erreur.
              0
              1. 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
                0
                1. 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)
                  0
                  1. 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 ...
                    0
                    1. 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.
                      0
                      1. 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 ...
                        0
                        1. Non je ne savais pas inverser une condition. Dans ce cas, je comprend mieux la fonction de !isset...
                          0
                          1. 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
                            0