Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/08/2011, 10h12   #1
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123
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 :
1
2
 
Notice: Use of undefined constant PHP_SELF - assumed 'PHP_SELF'
Code :
1
2
 
Undefined index: result
- Pour une autre page :
Code :
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 :
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.
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 11h06   #2
Futur Membre du Club
 
Inscription : mai 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 34
Points : 17
Points : 17
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 :
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
mougeole est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 11h19   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 :
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
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 11h59   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
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 :
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
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 13h38   #5
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
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.
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 14/08/2011, 13h52   #6
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123
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 :
if ( ! $_POST['result']) {
Et si je valide le quizz j'ai une erreur à la ligne 49:
Code :
 $reponse = trim($_POST[$i]);
Que faire ?
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 14h22   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
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
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 14/08/2011, 14h53   #8
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123
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 :
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.
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 15h01   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Laisse tomber je suis à la masse : la bonne syntaxe c'estAh ne pas se relire c'est fatal
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 15h16   #10
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
J'ai testé ton quizz et je te conseille de remplacer :
Code :
if ( ! $_POST['result']) {
par :
Code :
if ( ! isset($_POST['result'])) {
Tu ne devrais plus avoir de message d'alerte -> voir plus haut la réponse de mougeole
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 15h18   #11
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
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é
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 15h46   #12
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123


Je viens d'écrire ta ligne en supprimant
Code :
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 :
1
2
 
Notice: Undefined offset: 0
Code :
1
2
 
Notice: Undefined offset: 1
ETC...............pour chaque réponse et renvoi à la ligne 50 qui correspond à :

Code :
 $reponse = trim($_POST[$i]);
Sincèrement désolé...
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 15h56   #13
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
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 :
$reponse = (isset($_POST[$i])) ? trim($_POST[$i]) : -1;
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 16h33   #14
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123
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 :
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;
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 16h59   #15
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 551
Points : 2 551
Envoyer un message via Skype™ à rawsrc
Oui c'est normal,

tu dois positionner la réponse pour les questions non répondues sur "" au lieu de -1
Code :
$reponse = (isset($_POST[$i])) ? trim($_POST[$i]) : "";
Allez zou cela devrait gazer
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 19h26   #16
Membre habitué
 
Avatar de BRUNO71
 
Homme Bruno Langlois
Conseiller technique ELec
Inscription : janvier 2007
Messages : 289
Détails du profil
Informations personnelles :
Nom : Homme Bruno Langlois
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Conseiller technique ELec
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 289
Points : 123
Points : 123
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.
BRUNO71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 19h57   #17
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 :
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 :
Citation:
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.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2011, 20h58   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 119
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 119
Points : 8 468
Points : 8 468
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 :
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
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 07h49   #19
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
- "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 ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 13h59   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 119
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 119
Points : 8 468
Points : 8 468
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
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h52.


 
 
 
 
Partenaires

Hébergement Web