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

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

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonsoir jreaux62,

    Avec ta dernière intervention, tout fonctionne
    Un grand merci à tout le monde, surtout Celira et toi.

    Pour rappel, les scripts fonctionnels sont les suivants : index.php
    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
    <?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++)
    			{
    				if(filter_has_var(INPUT_POST, 'reponse_question'.$i))		//si la personne a répondu
    					{
    						$query = "SELECT * FROM QCM_DefautsDesBois_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 QCM_DefautsDesBois_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'].'" required="required" /> '.$unchoix['texte_reponse'].'<br />',"\r\n";
            }
            echo '</p>';
          echo '</fieldset>';
          $i++;	//on incrémente 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>
    questions.php
    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
    <?php
     
    	$questions = array();
    	$query = "SELECT * FROM QCM_DefautsDesBois_questions ORDER BY id_question";
    	if ($result = mysqli_query($link, $query))
    		{
    			while($question = mysqli_fetch_assoc($result))
    				{
    					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érents choix
    					unset($question['choix_question']);
    					$question['choix_reponse'] = array();	//on va mettre dedans nos réponses qui seront chacune un tableau.
    					foreach($choix as $unChoix)
    						{
    							$query = "SELECT * FROM QCM_DefautsDesBois_reponses WHERE id_reponse = $unChoix";	//on récupère le choix de réponse
    							if ($requete_reponses = mysqli_query($link, $query))
    							{
    							// récupération du résultat de la requête
    							$reponse = mysqli_fetch_assoc($requete_reponses);
     
    								array_push($question['choix_reponse'], $reponse);//on met le choix de réponse dans le tableau de choix des réponses
    								mysqli_free_result($requete_reponses);
    							}
    						}
    					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.
    				  }
    			mysqli_free_result($result);
    		}
    ?>

  2. #22
    Invité
    Invité(e)
    Par défaut
    Concernant ma variante...

    Relis bien le code, j'ai TOUT mis en UTF-8 (contrairement à ta version) :



    Et oui, je l'ai testé, et ça fonctionne

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

    J'ai mis à jour mes codes dans mon précédent message.

    Tu n'as plus qu'à copier-coller.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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