IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Notice Undefined index et Undefined variable


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut Notice Undefined index et Undefined variable
    Bonjour,

    J’ai réalisé un site sur l’apiculture et j’ai installé deux quizz qui fonctionnaient sans problème.
    Visible à cette adresse : http://www.ruche-apiculture.org
    Depuis peu des messages d’erreurs apparaissent comme ceci :
    - Pour la même page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Use of undefined constant PHP_SELF - assumed 'PHP_SELF'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Undefined index: result
    - Pour une autre page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined variable: resultat in ….. line 16
    J’ai corrigé la première ligne en ajoutant des guillemets ( ‘ et ‘ ) à PHP_SELF….
    Voici le code de la première page… il semblerait qu’il y ai une faute au post (result) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <?php 
    $page = basename($_SERVER['PHP_SELF']);
    if (!$_POST[‘result’]) 
    {
      print "<form action=\"$page\" method='post'>\n";
      for ($i=0; $i<count($quizz); $i++) {
            print '<blockquote><span>';
            print "\t".$quizz[$i][0]."\n";
            print '</span><br /><br />';
                for ($j=1; $j<count($quizz[$i])-2; $j++) {
               $quest=$quizz[$i][$j];
               print "<input type='radio' name=\"$i\" value=\"$j\" /> $quest<br />\n ";
                }
            print "</blockquote><hr/>";
      }
      print "<input type='hidden' name='result' value='voir' /><br />\n<center>";
      print "<input type='submit' style='background-color:#2A5C2A' onmouseover=\"this.style.color='#fff'\" onmouseout=\"this.style.color='#000'\" onmousedown=\"this.style.color='#f90'\" value='Valider vos r&eacute;ponses' /></center></form><br/>\n";}
    else {
      print '<h4 align="center">Résultats du quizz</h4><br />';
      $points=0;
      for($i=0; $i<count($quizz); $i++) {
            $reponse = trim($_POST[$i]);
            print  '<blockquote><span>';
            print "\t".$quizz[$i][0]."</span><br /><br />\n";
            $numero_bonne=$quizz[$i][count($quizz[$i])-2]; // avant dernière valeur du tableau
           $bonne=$quizz[$i][$numero_bonne]; // Bonne réponse
            if ($reponse==$numero_bonne) {
               print "Votre réponse <b><i>".$bonne."</i></b> est exacte.<br />";
               $points++;
               }
               else {
                    print "La bonne réponse est <b>".$bonne."</b> mais vous ";
                    if ($reponse=="") {
                       print "n´avez rien répondu.<br />";
                    }
                    else {
                 print 'avez choisi la proposition" <b>'.$quizz[$i][$reponse].' "</b>.<br />';
                    }
               }
            $commentaire=$quizz[$i][count($quizz[$i])-1]; // dernière valeur du tableau
           print "<br />".$commentaire."<br />\n";        
           print "</blockquote><hr />\n";
      }
      if($points==count($quizz)) {
            print"<br /><h4 align='center'>Félicitations vous avez tout juste&nbsp;!</h4>\n";
            }
            else {
              print "<br /><h4 align='center'>Vous avez $points bonne";
              if ($points>1) print "s";
              print " réponse";
              if ($points>1) print "s";
              print " sur ".count($quizz)." questions.</h4>\n";
     print "<p align='center'><a href='questions_abeille.php'>Réinitialiser le quizz</a></p>\n";
       //Ajout d'un enregistrement pour le cpt   
     $con = mysql_connect("SERVEUR", "LOGIN", "MTP");
     $ip = $_SERVER['REMOTE_ADDR'];
     
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
     
    mysql_select_db("BDD", $con);
     
    mysql_query("INSERT INTO table (nb_click, ip) VALUES ('1', '$ip')");
     
    mysql_close($con);
     
            }
     
    }
     
    ?>
    Je ne vois pas les erreurs !
    Entre Notice Undefined index et Undefined variable
    Merci beaucoup pour votre savoir faire.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Bonjour

    Pour le message Undefined index: result, PHP te dit que l'index result n'existe pas.

    Donc pour éviter ce message d'erreur, il faut d'abord tester que l'indice result est défini avec la fonction isset() http://www.php.net/isset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if (isset($_POST['result'])) {
     
    //ton code
     
    }
    ?>
    Il me semble que tu as aussi oublié une accolade fermente avant le else de la ligne 19

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par BRUNO71 Voir le message
    Je ne vois pas les erreurs !
    Tu m'étonnes, Elton !
    On ne code plus comme ca depuis un bon demi-siècle ...

    - "nettoie" le code (indentation, passages a la ligne, ...) pour le rendre plus lisible et facile à débuguer
    - remplace print par echo
    - sort le code html du code php
    - réserve les " au html et les ' au php
    - if (!$_POST[result]) ?? -> if (!$_POST['result'])

    Voici une "bonne pratique" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php 
    $page = basename($_SERVER['PHP_SELF']);
    if (!$_POST['result']) 
    {
    ?>
    	<form action="<?php echo $page; ?>" method="post">
    <?php
    	for ($i=0; $i<count($quizz); $i++) 
    	{
    ?>
    		<blockquote>
    			<span><?php echo $quizz[$i][0]; ?></span>
    			<br /><br />
    <?php
    		for ($j=1; $j<count($quizz[$i])-2; $j++) {
    			$quest=$quizz[$i][$j];
    ?>
    			<input type="radio" name="<?php echo $i; ?>" value="<?php echo $j; ?>" /> <?php echo $quest; ?><br />
    <?php		} // fin for 
    ?>
    		</blockquote>
    		<hr/>
    <?php
    	} // fin for
    ?>
    		<input type="hidden" name="result" value="voir" /><br />
    		<center>
    		<input type="submit" style="background-color:#2A5C2A" onmouseover="this.style.color='#fff';" onmouseout="this.style.color='#000';" onmousedown="this.style.color='#f90';" value="Valider vos r&eacute;ponses" />
    		</center>
    	</form>
    	<br/>
    <?php
    } else {
    ?>
    [........]
    Tu verras que les erreurs éventuelles seront plus faciles à trouver ...

    .. de quoi faire de toi un ... happy-culteur
    Dernière modification par Invité ; 14/08/2011 à 11h35.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    comme le préconise le collègue jreaux62, il vaut mieux suivre ses conseils car
    ton code est illisible. Tout est imbriqué, mal organisé et pour la maintenance bonjour le stress.
    Le copain jreaux62 te propose une approche qui sépare le code html du php et je te propse la même chose mais un peu différemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    <?php 
     
    $page    = basename($_SERVER['PHP_SELF']);
    $nbQuizz = count($quizz);
     
    if ( ! $_POST['result']) {
       echo <<<HTML
    <form action="$page" method="post">
    HTML;
     
       for($i = 0; $i < $nbQuizz; $i++) {
          echo <<<HTML
       <blockquote>
          <span>{$quizz[$i][0]}</span>
          <br /><br />
    HTML;
     
          for ($j = 1; $j < count($quizz[$i])-2; $j++) {
             echo <<<HTML
          <input type="radio" name="$i" value="$j" /> {$quizz[$i][$j]}<br />
    HTML;
          }
     
          echo <<<HTML
       </blockquote>
       <hr />
    HTML;
       }
     
       echo <<<HTML
       <input type="hidden" name="result" value="voir" /><br />
       <center>
          <input type="submit" style="background-color:#2A5C2A" onmouseover="this.style.color='#fff'" onmouseout="this.style.color='#000'" onmousedown="this.style.color='#f90'" value="Valider vos r&eacute;ponses" />
       </center>
    </form>
    <br />
    HTML;
    }
    else {
     
       # RESULTATS DU QUIZZ
       echo <<<HTML
    <h4 align="center">Résultats du quizz</h4><br />
    HTML;
     
       # DETAILS DES REPONSES
       $points = 0;
       for($i = 0; $i < $nbQuizz; $i++) {
          $reponse = trim($_POST[$i]);
     
          echo <<<HTML
    <blockquote>
       <span>{$quizz[$i][0]}</span><br /><br />
    HTML;
     
          $numero_bonne = $quizz[$i][count($quizz[$i])-2];   // avant dernière valeur du tableau
          $bonne        = $quizz[$i][$numero_bonne];         // Bonne réponse
          $commentaire  = $quizz[$i][count($quizz[$i])-1];   // dernière valeur du tableau
     
          if ($reponse == $numero_bonne) {
             $points++;
             echo <<<HTML
       <span>Votre réponse <b><i>$bonne</i></b> est exacte.</span>
    HTML;
          }
          elseif ($reponse === "") {
             echo <<<HTML
       <span>La bonne réponse est <b>$bonne</b> mais vous n´avez rien répondu.</span>
    HTML;
          }
          else {
             echo <<<HTML
       <span>La bonne réponse est <b>$bonne</b> mais vous avez choisi la proposition" <b>{$quizz[$i][$reponse]}</b>".</span>
    HTML;
          }
     
          echo <<<HTML
       <br />$commentaire<br />
    </blockquote>
    <hr />
    HTML;
       }
     
       # SCORE
       if ($points === $nbQuizz) {
          echo <<<HTML
    <br />
    <h4 align="center">Félicitations vous avez tout juste&nbsp;!</h4>
    HTML;
       }
       else {
          $plural = ($points > 1) ? 's' : NULL;
          echo <<<HTML
    <br />
    <h4 align="center">Vous avez $points bonne$plural réponse$plural sur $nbQuizz questions.</h4>
    HTML;
       }
     
       # REINITIALISATION DU QUESTIONNAIRE
       echo <<<HTML
    <p align="center"><a href="questions_abeille.php">Réinitialiser le quizz</a></p>
    HTML;
     
       # STATS
       $con = mysql_connect("SERVEUR", "LOGIN", "MTP");
       $ip  = $_SERVER['REMOTE_ADDR'];
     
       if ( ! $con) {
          die('Could not connect: ' . mysql_error());
       }
     
       mysql_select_db("BDD", $con);    
       mysql_query("INSERT INTO table (nb_click, ip) VALUES ('1', '$ip')");
       mysql_close($con);
    }
    ?>
    Sinon les commentaires précédents de l'ami jreaux62 sont très judicieux

  5. #5
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    ce que tu fais avec la syntaxe heredoc cest un peu - pardonnez moi la trivialité de l'expression - cacher la merde au chat..
    Faudrait séparer complètement les couches.. Faire les vérifications des formulaires, les accès à la base de données avant la sortie.

  6. #6
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Bonjour à vous,

    Merci pour votre contribution.
    Merci ( rawsrc ) pour ce code très très bien codé.... Je prends quelques exemples de code de gauche à droite et de PHP5 chez Eyrolles...
    Je prendrais cet exemple par la suite..
    Mai bon, je suis amateur c'est quand même pas évident..
    Bref, j'ai installé ton nouveau code sur ma page quizz abeilles et j'ai toujour le même problème à la ligne 6.
    Ce qui correspond a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ! $_POST['result']) {
    Et si je valide le quizz j'ai une erreur à la ligne 49:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $reponse = trim($_POST[$i]);
    Que faire ?

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par lucas74 Voir le message
    ce que tu fais avec la syntaxe heredoc cest un peu - pardonnez moi la trivialité de l'expression - cacher la merde au chat..
    Faudrait séparer complètement les couches.. Faire les vérifications des formulaires, les accès à la base de données avant la sortie.
    Tu es gentil, mais parfois il faut lire un peu avant de poster. Tu penses qu'en voyant son code initial, BRUNO71 va directement appliquer tes préconisations simplement parce que tu le dis : séparation des couches et toutle toutim... Je suis désolé mais cela n'est pas à la portée de n'importe quel développeur amateur (et même pro). Alors des conseils de ce genre tu peux franchement te les garder (et je reste poli).

    @BRUNO71
    Est ce que ton tableau $_POST est bien renseigné avant tout le traitement ?
    Essaie de poser avant ton code un histoire de voir le contenu

  8. #8
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Merci rawsrc,

    Désolé lucas74, mais rawsrc a raison, si je savais "séparer complètement les couches..etc" je donnerais plus de conseil que je ne poserais de question !

    Bon ceci dit, en ajoutant print_r[$_POST]

    Je l'ai écrit de toutes les façon au pifomètre
    print_r['$_POST'], print_r['$_POST'];....

    J'obtien à la ligne 2 ceci :

    Parse error: syntax error, unexpected '['

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php 
     
    print_r[$_POST]
    $page    = basename($_SERVER['PHP_SELF']);
    $nbQuizz = count($quizz);
    if ( ! $_POST['result'])
     
     {
    Merci pour votre contribution.

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Laisse tomber je suis à la masse : la bonne syntaxe c'estAh ne pas se relire c'est fatal

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    J'ai testé ton quizz et je te conseille de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ! $_POST['result']) {
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ! isset($_POST['result'])) {
    Tu ne devrais plus avoir de message d'alerte -> voir plus haut la réponse de mougeole

  11. #11
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Tu es gentil, mais parfois il faut lire un peu avant de poster. Tu penses qu'en voyant son code initial, BRUNO71 va directement appliquer tes préconisations simplement parce que tu le dis : séparation des couches et toutle toutim... Je suis désolé mais cela n'est pas à la portée de n'importe quel développeur amateur (et même pro). Alors des conseils de ce genre tu peux franchement te les garder (et je reste poli).
    je voulais juste aider, pas te vexer. Je voulais juste souligner que ce que tu faisais ne rendait en aucun cas le code plus propre. Aussi, la séparation des couches est un principe simple, seulement pas du tout expliqué parmi les nombreux tutos et livres qui circulent sur le net. Si on apprenait aux gens dès le début à bien séparer présentation du reste ça ne rendrait pas les choses plus compliquées (au contraire ! ça éviterait même pas mal d'incompréhensions)
    Désolé d'avoir heurté ta susceptibilité

  12. #12
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut


    Je viens d'écrire ta ligne en supprimant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( ! isset($_POST['result'])) {
    Sinon j'en avais deux.....

    Super ça fonctionne, MAIS !
    Le résultat s'affiche avec une erreur à chaque réponse avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined offset: 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Notice: Undefined offset: 1
    ETC...............pour chaque réponse et renvoi à la ligne 50 qui correspond à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $reponse = trim($_POST[$i]);
    Sincèrement désolé...

  13. #13
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Y a pas à être désolé,

    Après un essai sur ton site, ton problème vient d'un problème d'interprétation des résultats : tu dois considérer que quand aucune réponse n'est cochée, elle est fausse. Donc ajoute en ligne 50 ceci (juste après le for):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = (isset($_POST[$i])) ? trim($_POST[$i]) : -1;

  14. #14
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Merci,

    Par contre ça génère le même style de défaut résultat par résultat, mais cette fois à la ligne 74.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    73  echo <<<HTML
    74  <span>La bonne réponse est <b>$bonne</b> mais vous avez    choisi la proposition" <b>{$quizz[$i][$reponse]}</b>".</span>
    75   HTML;

  15. #15
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Oui c'est normal,

    tu dois positionner la réponse pour les questions non répondues sur "" au lieu de -1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = (isset($_POST[$i])) ? trim($_POST[$i]) : "";
    Allez zou cela devrait gazer

  16. #16
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 502
    Points : 319
    Points
    319
    Par défaut
    Merci......

    Merci pour ton aide....
    Je vois que tu es développeur en informatique.
    Uniquement en PHP ou dans d'autre langage ?
    J'ai une question concernant les discussions dans les forums de developpez.com :
    Suite à une erreur !, j'ai posté deux messages identiques...ce matin.
    Ce serait bien si je pouvais le supprimer moi-même dans ce cas ?
    On peut le modifier mais pas le supprimer !!

    Voilà !
    Merci beaucoup, je vais maintenant travailler sur la construction d'un petit sondage en php....
    Je trouve beaucoup de script sur le net....mais beaucoup ne fonctionne pas...!!

    Je me servirais de ta façon de coder en php...c'est très bien...j'envie tes connaissances.
    Bonne soirée.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour rawsrc,
    Citation Envoyé par rawsrc Voir le message
    ... comme le préconise le collègue jreaux62, il vaut mieux suivre ses conseils
    ... Sinon les commentaires précédents de l'ami jreaux62 sont très judicieux
    D'abord,un grand merci pour ta sollicitude !
    Citation Envoyé par rawsrc Voir le message
    ... Le copain jreaux62 te propose une approche qui sépare le code html du php et je te propose la même chose mais un peu différemment
    Sur ce point, je t'invite à lire ceci : Apostrophes ou guillemets : Temps d'exécution

    Je m'en suis inspiré pour voir la différence de temps d'execution.
    Voici le test (avec microtime()):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    $debut_avececho = microtime(true);
    for ($i=0; $i<5000; $i++) {
       echo '
    	<input type="hidden" value="$toto" style="$style"/>
    	';
    }
    $fin_avececho = microtime(true) - $debut_avececho;
     
    $debut_endehors = microtime(true);
    for ($i=0; $i<5000; $i++) {
    ?>	<input type="hidden" value="<?php echo $toto; ?>" style="<?php echo $style; ?>"/>
    <?php
    }
    $fin_endehors = microtime(true) - $debut_endehors;
     
    $debut_avecHTML = microtime(true);
    for ($i=0; $i<5000; $i++) {
       echo <<<HTML
    	<input type="hidden" value="$toto" style="$style"/>
    HTML;
    }
    $fin_avecHTML = microtime(true) - $debut_avecHTML;
     
    ?>
    temps avec '?php' : <?php echo $fin_endehors; ?><br />
    temps avec 'HTML' : <?php echo $fin_avecHTML; ?><br />
    temps avec 'echo' : <?php echo $fin_avececho; ?>
    On obtient :
    temps avec '?php' : 0.396687984467
    temps avec 'HTML' : 0.483137845993
    temps avec 'echo' : 0.57389497757
    Donc plus rapide en mettant le html en dehors du php !

    La raison est simple :
    - avec <?php echo "...du-code-html..."; ?> ou <?php echo <<<HTML ...du-code-html... HTML; ?>
    => php est obligé d'"interpréter" le code html avant de l'afficher.

    - avec le code html hors du code php,
    => il est afficher directement. Donc plus rapidement.
    Dernière modification par Invité ; 14/08/2011 à 20h17.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    La raison est simple :
    - avec <?php echo "...du-code-html..."; ?> ou <?php echo <<<HTML ...du-code-html... HTML; ?>
    => php est obligé d'"interpréter" le code html avant de l'afficher.

    - avec le code html hors du code php,
    => il est afficher directement. Donc plus rapidement.
    c'est faux, PHP compile d’abord le code en token puis en opcode, ensuite il est interprété (par l'opcode), les mesures sont donc fausses seul le nombre d'opération compte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1 test : 1  eop
    2 test : 12 eop
    3 test : 6  eop
    cette article est faux, je pense qui serait plus que bon de le supprimer

  19. #19
    Invité
    Invité(e)
    Par défaut
    - "c'est faux" : les explications ? les résultats ? la conclusion ? L'article ? tout ? ...
    Maintenant que tu as dit ce qui c'est faux, il serait intelligent de dire ce qui est vrai.
    Qu'on sorte d'ici moins idiot.

    ps : Je peux admettre que mes explications ne soient pas exactes (elle me semblaient pourtant logiques).
    Quelle est la conclusion des tiennes ?

    - "les mesures sont donc fausses ..." : Ca veut donc dire que microtime(true) fait n'importe quoi ? (php manual, microtime() -> Exemple #2)
    (plus de 20 tests, et 20 résultats équivalents ... je n'ai rien inventé)
    Oui, depuis que quelqu'un m'a reproché d'"écrire n'importe quoi sans avoir testé", je fais toujours des tests ...
    Dernière modification par Invité ; 15/08/2011 à 08h17.

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    - "c'est faux" : les explications ? les résultats ? la conclusion ? L'article ? tout ? ...
    Maintenant que tu as dit ce qui c'est faux, il serait intelligent de dire ce qui est vrai.
    Qu'on sorte d'ici moins idiot.

    ps : Je peux admettre que mes explications ne soient pas exactes (elle me semblaient pourtant logiques).
    Quelle est la conclusion des tiennes ?

    - "les mesures sont donc fausses ..." : Ca veut donc dire que microtime(true) fait n'importe quoi ? (php manual, microtime() -> Exemple #2)
    (plus de 20 tests, et 20 résultats équivalents ... je n'ai rien inventé)
    Oui, depuis que quelqu'un m'a reproché d'"écrire n'importe quoi sans avoir testé", je fais toujours des tests ...
    l'explication est juste après le "non c'est faux", le microtime ne peux mesurer pas la phase où le code est compilé en opcode. La durée d’exécution du script c'est uniquement l’exécution l'opcode

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Notice: Undefined index & Variable
    Par MTHYC dans le forum Langage
    Réponses: 3
    Dernier message: 05/03/2012, 08h01
  2. Notice: Undefined index method post
    Par vanou dans le forum Langage
    Réponses: 8
    Dernier message: 07/03/2007, 09h33
  3. Pb erreur Notice: Undefined index: pseudo
    Par PAINCO dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2007, 18h20
  4. Notice: Undefined index
    Par abusatif dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2007, 09h03
  5. Réponses: 9
    Dernier message: 01/05/2006, 00h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo