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

PHP & Base de données Discussion :

adaptation d'un vieux QCM avec Mysqli_ [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut adaptation d'un vieux QCM avec Mysqli_
    Bonjour,

    Ayant trouvé le script d'un QCM à l'adresse http://www.developpez.net/forums/d10...d-sript-quizz/, j'essaie de l'adapter avec Mysqli_
    2 tables sont nécessaires et peuvent être construites avec le script ci-dessous:
    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
     
    -- phpMyAdmin SQL Dump
    -- version 3.3.9
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 25 Mars 2011 à 13:58
    -- Version du serveur: 5.5.8
    -- Version de PHP: 5.3.4
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `quizz`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `questions`
    --
     
    CREATE TABLE IF NOT EXISTS `questions` (
      `id_question` int(11) NOT NULL AUTO_INCREMENT,
      `texte_question` text NOT NULL,
      `choix_question` varchar(10) NOT NULL,
      PRIMARY KEY (`id_question`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    --
    -- Contenu de la table `questions`
    --
     
    INSERT INTO `questions` (`id_question`, `texte_question`, `choix_question`) VALUES
    (1, 'Quel est le meilleur forum traitant de la programmation?', '1,2,3;2'),
    (2, 'Que Signifie AFUP?', '4,5,6;4');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `reponses`
    --
     
    CREATE TABLE IF NOT EXISTS `reponses` (
      `id_reponse` int(11) NOT NULL AUTO_INCREMENT,
      `texte_reponse` text NOT NULL,
      PRIMARY KEY (`id_reponse`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `reponses`
    --
     
    INSERT INTO `reponses` (`id_reponse`, `texte_reponse`) VALUES
    (1, 'lesite.com'),
    (2, 'developpez.com'),
    (3, 'lautresite.com'),
    (4, 'Association Française des Utilisateurs de PHP'),
    (5, 'Ahem, je sais pas.'),
    (6, 'Aide fonction utilisateur prolongé');

    2 fichiers sont nécessaires, questions.php et index.php
    Je n'ai pour l'instant pas modifié questions.php qui est le suivant:
    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
     
    <?php
     
      $questions = array();
      $query = mysql_query('SELECT * FROM questions ORDER BY id_question');
      while($question = mysql_fetch_assoc($query)){
        list($liste_choix, $question['reponse_juste']) = explode(';', $question['choix_question']);//on sépare les choix de la réponse juste
        $choix = explode(',', $liste_choix);//on met dans un tableaux les différent choix
        unset($question['choix_question']);//on supprime la variable car l'a exploté, plus besoin.
        $question['choix_reponse'] = array();//on va mettre dedans nos réponses qui seront chacune un tableau.
        foreach($choix as $unChoix){//pour chaque choix
          $requete_reponses = mysql_query('SELECT * FROM reponses WHERE id_reponse = '.$unChoix);//on récupère le choix de réponse
          $reponse = mysql_fetch_assoc($requete_reponses);// on met dans un tableau
          array_push($question['choix_reponse'], $reponse);//on met le choix de réponse dans le tableau de choix des réponses
        }
        array_push($questions, $question);//on met la réponse dans le tableau de réponses.
      }
      //cette page génère donc la variable "questions" que nous utiliserons pour afficher le questionnaire.
    ?>
    Le script index.php d'origine est le suivant:

    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
     
    <?php
      session_start();//va nous permettre de connaître le nombre de question dans le formulaire.
      mysql_connect('localhost','root','');
      mysql_select_db('quizz');
     
      function pre($tab){
        echo '<pre>';
          print_r($tab);
        echo '</pre>';
      }
     
      if(filter_has_var(INPUT_POST, 'goForm')){//si le bouton formulaire est cliqué (donc formulaire validé). - pareil ques isset()
        $output = '';//texte à afficher à la fin des testes.
        for($i = 1; $i <= $_SESSION['nombre_question']-1; $i++){//on fait une boucle qui va jusqu'au nombre de question
          if(filter_has_var(INPUT_POST, 'reponse_question'.$i)){//si la personne a répondu
     
     
    	   $query = mysql_query('SELECT * FROM questions WHERE id_question = '.$i) or die (mysql_error());
            $question = mysql_fetch_assoc($query);
            list($not_used, $reponse_juste) = explode(';', $question['choix_question']);
            $output .= 'A la question "'.$question['texte_question'].'" vous avez répondu ';
            if($_POST['reponse_question'.$i] != $reponse_juste){
     
     
    		  $query = mysql_query('SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste) or die (mysql_error());
              $reponse = mysql_fetch_assoc($query);
              $output .= 'faux. La réponse était: '.$reponse['texte_reponse'];
            }else{
              $output .= 'juste. Bravo!';
            }
            $output .= '<br /><br />';
          }else{
            $output .= 'Vous n\'avez pas répondu à la question "'.$question['texte_question'].'"<br />';
          }
        }//fin for
      }else{//si formulaire pas envoyé, on récupère les questions pour les afficher.
      }
        require_once 'questions.php';
    ?>
    <!DOCTYPE html>
     
    <html lang="fr">
    <head>
      <meta charset="ISO-8859-1">
     
      <title>Quizz artsandsport!</title>
     
    </head>
    <body>
      <?php if(isset($output)){echo'<p style="text-align:center;">'.$output.'<br /><br /><a href="./index.php" title="Retour">Retour</a></p>';}else{ ?>
      <form action="./index.php" method="post">
      <?php
        $i = 1;//on initialise à 1. Ce compteur va permettre d'assigner un numéro à chaque question pour les différencier.
        foreach($questions as $question){//pour que question dans le tableau "$questions"
          echo '<fieldset>';//pour faire beau
            echo '<legend>'.$question['texte_question'].'</legend>';//Le texte de la question.
            echo '<p style="padding-left:30px;">',"\r\n";
            foreach($question['choix_reponse'] as $unchoix){
              echo '<input type="radio" name="reponse_question'.$i.'" value="'.$unchoix['id_reponse'].'" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;//on incrémente un à $i car on va passer à la question suivante.
        }
        $_SESSION['nombre_question'] = $i;//connaitre le nombre de question dans le formulaire après la validation.
      ?>
          <br /><input type="submit" value="Valider" name="goForm" />
      </form>
      <?php } ?>
    </body>
    </html>
    J'ai adapté index.php ainsi :
    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
     
    <?php
    	// Inspiré de http://www.developpez.net/forums/d1056266/php/scripts/modification-d-sript-quizz/
    	session_start();
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion &agrave; la base de donn&eacute;es
    	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion &agrave; MySql
     
     
    	/* Vérification de la connexion */
    	if (mysqli_connect_errno())
    		{
    			printf("échec de la connexion : %s\n", mysqli_connect_error());
    			exit();
    		}
     
     
    	function pre($tab)
    		{
    			echo '<pre>';
    			print_r($tab);
    			echo '</pre>';
    		}
     
      if(filter_has_var(INPUT_POST, 'goForm')){//si le bouton formulaire est cliqué (donc formulaire validé). - pareil que isset()
        $output = '';//texte à afficher à la fin des tests.
        for($i = 1; $i <= $_SESSION['nombre_question']-1; $i++)
    		{//on fait une boucle qui va jusqu'au nombre de question
    			if(filter_has_var(INPUT_POST, 'reponse_question'.$i))		//si la personne a répondu
    				{		
    				$query = "SELECT * FROM questions WHERE id_question = $i";
    				if ($result = mysqli_query($link, $query))
    					{
    						$question = mysqli_fetch_fields($result);	/* Récupère les informations d'un champ pour toutes les colonnes */
    						mysqli_free_result($result);
    					}
     
    				list($not_used, $reponse_juste) = explode(';', $question['choix_question']);
    				$output .= 'A la question "'.$question['texte_question'].'" vous avez répondu ';
    				if($_POST['reponse_question'.$i] != $reponse_juste)
    					{
    						$query = mysql_query('SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste) or die (mysql_error());
    						$reponse = mysql_fetch_assoc($query);
     
    						$query = "SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste)";
    						if ($result = mysqli_query($link, $query))
    							{
    								$reponse = mysqli_fetch_fields($result);	/* Récupère les informations d'un champ pour toutes les colonnes */
    								mysqli_free_result($result);
    							}
    						$output .= 'faux. La réponse était: '.$reponse['texte_reponse'];
    					}
    				else
    					{
    					  $output .= 'juste. Bravo!';
    					}
    				$output .= '<br /><br />';
    			  }
    			else
    			  {
    				$output .= 'Vous n\'avez pas répondu à la question "'.$question['texte_question'].'"<br />';
    			  }
    		}
      }else{//si formulaire pas envoyé, on récupère les questions pour les afficher.
      }
        require_once 'questions.php';
    ?>
    <!DOCTYPE html>
     
    <html lang="fr">
    <head>
      <meta charset="ISO-8859-1">
     
      <title></title>
     
    </head>
    <body>
      <?php if(isset($output)){echo'<p style="text-align:center;">'.$output.'<br /><br /><a href="./adetruire5.php" title="Retour">Retour</a></p>';}else{ ?>
      <form action="./index.php" method="post">
      <?php
        $i = 1;//on initialise à 1. Ce compteur va permettre d'assigner un numéro à chaque question pour les différencier.
        foreach($questions as $question){//pour chaque question dans le tableau "$questions"
          echo '<fieldset>';//pour faire beau
            echo '<legend>'.$question['texte_question'].'</legend>';//Le texte de la question.
            echo '<p style="padding-left:30px;">',"\r\n";
            foreach($question['choix_reponse'] as $unchoix){
              echo '<input type="radio" name="reponse_question'.$i.'" value="'.$unchoix['id_reponse'].'" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;//on incrémente un à $i car on va passer à la question suivante.
        }
        $_SESSION['nombre_question'] = $i;//connaitre le nombre de question dans le formulaire après la validation.
      ?>
          <br /><input type="submit" value="Valider" name="goForm" />
      </form>
      <?php } ?>
    </body>
    </html>
    Le problème est que les questions ne s'affichent pas.
    J'ai 2 pistes pour mon bug :
    • mon utilisation de la variable est peut-être mauvaise en ligne 30
    • la fonction qui remplace Mysql_fetch_assoc n'est peut-être pas Mysqli_fetch_fields




    Je vous remercie d'avance pour vos propositions.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Denis,

    1/ Pour commencer, remplace le CHARSET des tables :
    CHARSET=latin1 -> CHARSET=utf8

    2/ mysqli_fetch_assoc()

  3. #3
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour jreaux62,

    Merci pour ton intervention.
    J'ai modifié index.php en conséquence. Il devient :
    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
    <?php
    	// Inspiré de http://www.developpez.net/forums/d1056266/php/scripts/modification-d-sript-quizz/
    	session_start();
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion &agrave; la base de donn&eacute;es
    	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion &agrave; MySql
     
     
    	/* Vérification de la connexion */
    	if (mysqli_connect_errno())
    		{
    			printf("échec de la connexion : %s\n", mysqli_connect_error());
    			exit();
    		}
     
     
    	function pre($tab)
    		{
    			echo '<pre>';
    			print_r($tab);
    			echo '</pre>';
    		}
     
      if(filter_has_var(INPUT_POST, 'goForm')){//si le bouton formulaire est cliqué (donc formulaire validé). - pareil que isset()
        $output = '';//texte à afficher à la fin des tests.
        for($i = 1; $i <= $_SESSION['nombre_question']-1; $i++)
    		{//on fait une boucle qui va jusqu'au nombre de question
    			if(filter_has_var(INPUT_POST, 'reponse_question'.$i))		//si la personne a répondu
    				{		
    				$query = "SELECT * FROM questions WHERE id_question = $i";
    				if ($result = mysqli_query($link, $query))
    					{
    						$question = mysqli_fetch_assoc($result);	/* Récupère une ligne de résultat sous forme de tableau associatif */
    						mysqli_free_result($result);
    					}
     
    				list($not_used, $reponse_juste) = explode(';', $question['choix_question']);
    				$output .= 'A la question "'.$question['texte_question'].'" vous avez répondu ';
    				if($_POST['reponse_question'.$i] != $reponse_juste)
    					{
     
    						$query = "SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste)";
    						if ($result = mysqli_query($link, $query))
    							{
    								$reponse = mysqli_fetch_assoc($result);	/* Récupère une ligne de résultat sous forme de tableau associatif */
    								mysqli_free_result($result);
    							}
    						$output .= 'faux. La réponse était: '.$reponse['texte_reponse'];
    					}
    				else
    					{
    					  $output .= 'juste. Bravo!';
    					}
    				$output .= '<br /><br />';
    			  }
    			else
    			  {
    				$output .= 'Vous n\'avez pas répondu à la question "'.$question['texte_question'].'"<br />';
    			  }
    		}
      }else{//si formulaire pas envoyé, on récupère les questions pour les afficher.
      }
        require_once 'questions.php';
    ?>
    <!DOCTYPE html>
     
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
     
      <title></title>
     
    </head>
    <body>
      <?php if(isset($output)){echo'<p style="text-align:center;">'.$output.'<br /><br /><a href="./index.php" title="Retour">Retour</a></p>';}else{ ?>
      <form action="./index.php" method="post">
      <?php
        $i = 1;//on initialise à 1. Ce compteur va permettre d'assigner un numéro à chaque question pour les différencier.
        foreach($questions as $question){//pour chaque question dans le tableau "$questions"
          echo '<fieldset>';//pour faire beau
            echo '<legend>'.$question['texte_question'].'</legend>';//Le texte de la question.
            echo '<p style="padding-left:30px;">',"\r\n";
            foreach($question['choix_reponse'] as $unchoix){
              echo '<input type="radio" name="reponse_question'.$i.'" value="'.$unchoix['id_reponse'].'" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;//on incrémente un à $i car on va passer à la question suivante.
        }
        $_SESSION['nombre_question'] = $i;//connaitre le nombre de question dans le formulaire après la validation.
      ?>
          <br /><input type="submit" value="Valider" name="goForm" />
      </form>
      <?php } ?>
    </body>
    </html>
    Les questions ne s'affichant toujours pas, je ne suis pas sûr d'avoir correctement interprété Mysqli_fetch_assoc(), n'est-ce pas ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    0/
    Je n'ai pour l'instant pas modifié questions.php qui est le suivant:
    Ca pourrait être utile (voir nécessaire !) de le faire !

    1/ Active l'affichage des erreurs.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL); 	// en TEST

    2/ Avant de chercher à modifier/afficher un code complexe, commence avec simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM questions"
    Et affiche le résultat.

    3/ D'où sort $_SESSION['nombre_question'] ??
    A priori, on trouve le nombre de questions avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT COUNT(*) FROM questions"
    encore faut-il en avoir réellement besoin.


    Es-tu sûr de bien comprendre :
    • chaque ligne du code ?
    • chaque action ?
    Dernière modification par Invité ; 03/09/2015 à 11h56.

  5. #5
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Avec ces 2 modifications :
    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
    <?php
    error_reporting(E_ALL); 	// en TEST
    	// Inspiré de http://www.developpez.net/forums/d1056266/php/scripts/modification-d-sript-quizz/
    	session_start();
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion &agrave; la base de donn&eacute;es
    	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion &agrave; MySql
     
     
    	/* Vérification de la connexion */
    	if (mysqli_connect_errno())
    		{
    			printf("échec de la connexion : %s\n", mysqli_connect_error());
    			exit();
    		}
     
     
    	function pre($tab)
    		{
    			echo '<pre>';
    			print_r($tab);
    			echo '</pre>';
    		}
     
      if(filter_has_var(INPUT_POST, 'goForm')){//si le bouton formulaire est cliqué (donc formulaire validé). - pareil que isset()
        $output = '';//texte à afficher à la fin des tests.
        for($i = 1; $i <= $_SESSION['nombre_question']-1; $i++)
    		{//on fait une boucle qui va jusqu'au nombre de question
    			if(filter_has_var(INPUT_POST, 'reponse_question'.$i))		//si la personne a répondu
    				{
    				$query = "SELECT * FROM questions";
    //				$query = "SELECT * FROM questions WHERE id_question = $i";
    				if ($result = mysqli_query($link, $query))
    					{
    						$question = mysqli_fetch_assoc($result);	/* Récupère une ligne de résultat sous forme de tableau associatif */
    						mysqli_free_result($result);
    					}
     
    				list($not_used, $reponse_juste) = explode(';', $question['choix_question']);
    				$output .= 'A la question "'.$question['texte_question'].'" vous avez répondu ';
    				if($_POST['reponse_question'.$i] != $reponse_juste)
    					{
     
    						$query = "SELECT texte_reponse FROM reponses)";
    //						$query = "SELECT texte_reponse FROM reponses WHERE id_reponse = '.$reponse_juste)";
    						if ($result = mysqli_query($link, $query))
    							{
    								$reponse = mysqli_fetch_assoc($result);	/* Récupère une ligne de résultat sous forme de tableau associatif */
    								mysqli_free_result($result);
    							}
    						$output .= 'faux. La réponse était: '.$reponse['texte_reponse'];
    					}
    				else
    					{
    					  $output .= 'juste. Bravo!';
    					}
    				$output .= '<br /><br />';
    			  }
    			else
    			  {
    				$output .= 'Vous n\'avez pas répondu à la question "'.$question['texte_question'].'"<br />';
    			  }
    		}
      }else{//si formulaire pas envoyé, on récupère les questions pour les afficher.
      }
        require_once 'questions.php';
    ?>
    <!DOCTYPE html>
     
    <html lang="fr">
    <head>
      <meta charset="UTF-8">
     
      <title></title>
     
    </head>
    <body>
      <?php if(isset($output)){echo'<p style="text-align:center;">'.$output.'<br /><br /><a href="./index.php" title="Retour">Retour</a></p>';}else{ ?>
      <form action="./index.php" method="post">
      <?php
        $i = 1;//on initialise à 1. Ce compteur va permettre d'assigner un numéro à chaque question pour les différencier.
        foreach($questions as $question){//pour chaque question dans le tableau "$questions"
          echo '<fieldset>';//pour faire beau
            echo '<legend>'.$question['texte_question'].'</legend>';//Le texte de la question.
            echo '<p style="padding-left:30px;">',"\r\n";
            foreach($question['choix_reponse'] as $unchoix){
              echo '<input type="radio" name="reponse_question'.$i.'" value="'.$unchoix['id_reponse'].'" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;//on incrémente un à $i car on va passer à la question suivante.
        }
        $_SESSION['nombre_question'] = $i;//connaitre le nombre de question dans le formulaire après la validation.
      ?>
          <br /><input type="submit" value="Valider" name="goForm" />
      </form>
      <?php } ?>
    </body>
    </html>
    Je n'ai aucune modification par rapport à la situation précédente, c'est-à-dire pas d'erreur qui s'affiche et seuls le bouton "Valider" puis le lien "Retour" de présents.

  6. #6
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Oups, je n'ai pas vu le message de Celira car j'étais en train de répondre à jreaux62.
    Effectivement, cela semble être une piste sérieuse
    Je m'y mets tout de suite.

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Les question sont récupérées dans ton script questions.php. Tu n'as pas encore modifié ce script, donc il ne peut plus fonctionner (vu que tu as remplacé la connexion à la base de donnée via mysql_connect par celle via mysqli)
    donc tu ne récupères plus les questions.

    En fait, tu as commencé la migration à l'envers du fonctionnement de ta page : tu as modifié la gestion des réponses avant celle des questions
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] adapter un vieux code avec magic_quote_rpc
    Par markham dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 23/05/2014, 18h23
  2. tentative de création de QCM avec sql
    Par gintoxic dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/02/2008, 12h33
  3. Supprimer des vieux fichiers avec log4j
    Par ecthelion dans le forum Logging
    Réponses: 1
    Dernier message: 24/11/2007, 11h48
  4. Création QCM avec fichier xml
    Par Ella68 dans le forum Flash
    Réponses: 1
    Dernier message: 29/05/2007, 18h44
  5. Adaptation d'une appli Web avec Strut
    Par Mister Nono dans le forum Struts 1
    Réponses: 1
    Dernier message: 11/02/2007, 11h37

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