bonjour a tous,
excusez moi pour ne pas répondre tous de suite à vos réponses et un grand merci à vous tous.
ma cliente(connaissance)lol.
bon je pense que comme tous les webmasters au début on à besoin de plus d'aide possible pour pouvoir avancé, comprendre et apprendre le savoir des autres webmaster.
c'est vrai que je suis novice(désoler), mais j'essaye de me débrouillé comme je peut pour construire le site( avec votre aide ou l'aide d'internet, en passant beaucoup de temps sur le web, comme vous je le suppose).
mais je ne demande pas de me construire le script (qui ceci dit était très bien avec beaucoup de savoir et de métier)je ne demande juste à comprendre la logique.
upload/60524-exo.png

je voudrai que sur les 4 réponses de chaque lignes(en sachant qu'il y a qu une seul réponses par ligne,que quand on clic sur une cases x une croix apparait et quand a la correction le mot s'affiche dans la cases correspondante.

j'ai repris le script de matthieu_r et essayer de le comprendre puis de l'adapté à l'exercice...
 <?php

function displaySelectReponse( $nom_du_champ ){

  //construction du html du select
	$options = array(
	
	'chocolat'=>'chocolat',
	'acheter'=>'acheter',
	'journal'=>'journal',
	'valise'=>'valise',
	'veste'=>'veste',
	'soir'=>'soir',
	'chiffon'=>'chiffon',
	'bisou'=>'bisou',
	'responsable'=>'responsable',
	'gilet'=>'gilet'
	
	);
	
    $select = '<input type="submit" name="' . $nom_du_champ . '" />';

  foreach ($options as $key => $option) {

  
    $selected = '';
    if(isset($_POST[$nom_du_champ]) && $_POST[$nom_du_champ] === $key){
		
		
    }
    $select .= '<input type="submit" value="' . $key . '">' . $option . '</option>';
  }

  $select .= '</select>';

  return $select;
}

function displayReponse( $nom_du_champ){

  global $errors, $reponses;

  $mot = $reponses[$nom_du_champ]['mot'];

  $reponse_class = 'ok';
  $resultat = '';

 
  if( array_key_exists( $nom_du_champ, $errors) ){
    $reponse_class = 'error';
    $resultat = ' ' . $reponses[$nom_du_champ]['reponse'] . ' ' . $mot . '';
  }

  $reponse = '<td class="' . $reponse_class . '">';

  $reponse .= '<span style="margin-left:35%; font-size:1.3em;" class="reponse">' . htmlspecialchars($_POST[$nom_du_champ]) . '</span><span style="margin-left:1%;font-size:1.3em;"">' . $mot.'</span>';
  $reponse .= ' <span style="color:red;font-size:1.3em;margin-left:5%;"" class="resultat">'. $resultat . '</span> ';

  $reponse .= '<td>';

  return $reponse;
}

$form_ok = false; 


$reponses = array(
  'chx'   => array('reponse' => 'chocolat', 'mot' => 'chocolat'),
  'chx_1' => array('reponse' => 'acheter', 'mot' => 'acheter'),
  'chx_2' => array('reponse' => 'journal', 'mot' =>'journal'), 
  'chx_3' => array('reponse' => 'valise', 'mot' => 'valise'), 
  'chx_4' => array('reponse' => 'veste', 'mot' => 'veste'), 
  'chx_5' => array('reponse' => 'soir', 'mot' => 'soir'),
  'chx_6' => array('reponse' => 'soir', 'mot' => 'chiffon'),
  'chx_7' => array('reponse' => 'bisou', 'mot' => 'bisou'), 
  'chx_8' => array('reponse' => 'responsable', 'mot' => 'responsable'),
  'chx_9' => array('reponse' => 'gilet', 'mot'=> 'gilet'),
);

if ( isset($_POST['correction']) && $_POST['correction'] === 'correction')  
{
  $empty = false;
  foreach ($reponses as $key => $value) {
 
    if( empty($_POST[$key])){
     
      $empty = true;
    }
  }

  if( $empty ){ 
    $msg = '<p>Veuillez cochez toutes les cases !</p>';
    echo $msg;
  }else{
    $form_ok = true; 
    

    $errors = array();
    foreach ($reponses as $key => $value) {
      if( $_POST[$key] != $value['reponse'] ){
     
        $errors[$key] = htmlspecialchars($_POST[$key]);
      }
    }
  }
}
if( ! $form_ok )
{ //on affiche le formulaire ?>
  <form action="" method="POST" />    
  <table class="art_chx_croix">
		
		<tr><td></td><td style="background:#e2e282">[s]</td><td style="background:#96d0e3">[ch]</td><td style="background:#eea286">[i]</td><td style="background:#e2e282">[z]</td></tr>
						
		<tr><td><img src="btn/oreille.png" width="45" height="45" alt="" /></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_1' ); ?></td></tr>
       <tr><td><?php echo displaySelectReponse( 'chx_2' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_3' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_4' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_5' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_6' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_7' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_8' ); ?></td></tr>
        <tr><td><?php echo displaySelectReponse( 'chx_9' ); ?></td></tr>
    
   
      
	
      <input class="correction_center" type="submit" name="correction" value="correction"/>

    </form>
</table>
<?php }else{ ?>
 <p style="margin-left:35%;padding:4% 0 0 0;font-size:1.6em;" >Corrigé de l'exercice :</p><br />

  <div class="reponses">
    <?php foreach ($reponses as $nom_du_champ => $value) {
      echo displayReponse( $nom_du_champ, $value['mot']);
    }?>
<h2 style="margin-top:1%;margin-left:36%;padding:2% 0 4% 0;display:inline-block;">Bonnes réponses :</h2><p style="margin-left:3%;border:1px solid #979797;background:#99e3df; padding:1%;width:15%;text-align:center;display:inline-block;"><?php echo count($reponses) - count($errors); ?> / <?php echo count($reponses); ?></p>
 <div class="main_sec" style="text-align:center;margin-left:-10px;">
<span><a href="exo_ou_1.php">REFAIRE L'EXERCICE</a></span>
<span><a href="exo_ou_2.php">EXERCICE SUIVANT</a></span>
						</div> 
<?php } ?>
 
[/i]
je pense qu'il me manque une boucle pour dire qu'il y a 4 réponses possible et que le choix de l'input n'est pas le bon.
Je n'ai pas lu ton post en entier mais pourquoi tu as créé un nouveau sujet alors que tu as déjà créé un sujet sur ce problème et qu'il n'est pas encore résolu Smiley biggol
Si ça continue comme, tu n'auras aucun de tes (nombreux) sujets marqués comme résolu et ça n'est pas le but... C'est pas très constructif ton histoire et tu vas perdre tout le monde !

PS : t'excuse pas d'être novice, tout le monde l'est à un moment ou un autre, dans un domaine ou un autre, le souci est que je pensais que tu te lançais dans un développement facturé et professionnel et que tu es un peu dépassé pour pouvoir livrer un boulot de qualité.

Dans tous les cas on est là pour t'aider à avancer dans ton projet Smiley biggrin
Bon c'est vrai ???? que je suis un peu bordelique et novice dans les forum.
Est ce que il faut que je creer different tableaux, $option-1('','','','chocolat'),ou j ai besoin d'une boucle for pour dire qu il y a 4 choix possible.dont une seul reponse
Bonjour bonjour,

Ben moi je suis complètement perdu dans tes demandes Boni75 et trouve que MatthieuR fait preuve de bon sens. Prends cette direction Smiley cligne

MatthieuR a écrit :
tout le monde l'est (novice) à un moment ou un autre
Hô oui, pour moi c'était au début ! Ce qui est un cas général Smiley lol :-P


ok je sors....
heu non en fait, il pleut !
Bonjour,

Je suis un peu perdu aussi, mais bon pour répondre :
Il te faut construire ton tableau $options avec les réponses possibles et non pas les mots associés, également penser à mettre les réponses dans ton tableau $reponses (et pas deux fois les mots)
<?php

function displaySelectReponse($nom_du_champ ){

	//construction du html du select
	$options = '[s] [ch] [j] [z]'; // Raccourci pour créer un tableau simple

	$select = "";
	foreach (explode(' ', $options) as $key => $option) {
		// echo "option=$option<br>";
		$select .= "<td><input type='radio' name='$nom_du_champ' value='$option' /></td>";
	}
	return $select;
}

function displayReponse($nom_du_champ){

	global $errors, $reponses;
	$mot = $reponses[$nom_du_champ]['mot'];

	$reponse_class = 'ok';
	$resultat = '';

	if( array_key_exists( $nom_du_champ, $errors) ){
		$reponse_class = 'error';
		$resultat = " => ".$reponses[$nom_du_champ]['reponse'];
	}

	$reponse = '<li class="' . $reponse_class . '">';
	$reponse .= '<span style="font-size:1.3em;" class="reponse">' . htmlspecialchars($_POST[$nom_du_champ]) . '</span><span style="margin-left:1%;font-size:1.3em;"">' . $mot.'</span>';
	$reponse .= ' <span style="color:red;font-size:1.3em;margin-left:5%;"" class="resultat">'. $resultat . '</span> ';

	$reponse .= '</li>';
	return $reponse;
}

$form_ok = false; 

$reponses = array(
	'chx_0' => array('mot' => 'chocolat', 'reponse' => '[ch]'),
	'chx_1' => array('mot' => 'acheter', 'reponse' => '[ch]'),
	'chx_2' => array('mot' =>'journal', 'reponse' => '[j]'),
	'chx_3' => array('mot' => 'valise', 'reponse' => '[z]'),
	'chx_4' => array('mot' => 'veste', 'reponse' => '[s]'),
	'chx_5' => array('mot' => 'soir', 'reponse' => '[s]'),
	'chx_6' => array('mot' => 'chiffon', 'reponse' => '[ch]'),
	'chx_7' => array('mot' => 'bisou', 'reponse' => '[z]'),
	'chx_8' => array('mot' => 'responsable', 'reponse' => '[s]'),
	'chx_9' => array('mot'=> 'gilet', 'reponse' => '[j]'),
);

if ( isset($_POST['correction']) && $_POST['correction'] === 'correction') {
	$empty = false;
	foreach ($reponses as $key => $value) {
 
		if( empty($_POST[$key])){
			$empty = true;
		}
	}

	if( $empty ){ 
		$msg = '<p>Veuillez cochez toutes les cases !</p>';
		echo $msg;
	}else{
		$form_ok = true; 

		$errors = array();
		echo "<pre>";
		foreach ($reponses as $key => $value) {
			// echo $_POST[$key]." et ";
			// print_r($value);
			if( $_POST[$key] != $value['reponse'] ){
				$errors[$key] = htmlspecialchars($_POST[$key]);
			}
		}
		echo "</pre>";
	}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Le français pour adultes</title>
	<style>
		form { text-align: center; }
		.art_chx_croix { border-collapse: collapse; border-spacing: 0px; margin: 60px auto; }
		.art_chx_croix td { border: 1px solid #aaa; padding: 2px 5px; min-width: 60px; text-align: center; }
	</style>
</head>
<body>
<?php
if( ! $form_ok )
{ //on affiche le formulaire ?>
	<form action="" method="POST" />    
		<table class="art_chx_croix">
			
			<tr><td></td><td style="background:#e2e282">[s]</td><td style="background:#96d0e3">[ch]</td><td style="background:#eea286">[j]</td><td style="background:#e2e282">[z]</td></tr>
			
			<?php
			foreach ($reponses as $nom_du_champ => $reponse) {
				echo "<tr><td><img src='oreille.png' width='30' height='30' alt='' /></td>";
				echo displaySelectReponse($nom_du_champ);
				echo "</tr>";     
			}      
			?>

			</table>
			<input class="correction_center" type="submit" name="correction" value="correction"/>
		</form>
<?php } else { // Corrigé de l'exercice ?>
	<p style="margin-left:35px;padding:4% 0 0 0;font-size:1.6em;" >Corrigé de l'exercice :</p>
	<ol class="reponses">
		<?php foreach ($reponses as $nom_du_champ => $value) {
			echo displayReponse($nom_du_champ);
		}?>
	</ol>
	<h2 style="margin-top:1%;margin-left:35px;padding:2% 0 4% 0;display:inline-block;">Bonnes réponses :</h2><p style="margin-left:3%;border:1px solid #979797;background:#99e3df; padding:1%;width:15%;text-align:center;display:inline-block;"><?php echo count($reponses) - count($errors); ?> / <?php echo count($reponses); ?></p>
 	<div class="main_sec" style="text-align:center;margin-left:-10px;">
		<span><a href="exo_ou_1.php">REFAIRE L'EXERCICE</a></span>
		<span><a href="exo_ou_2.php">EXERCICE SUIVANT</a></span>
	</div> 
<?php } ?>
	
</body>
</html>

EDIT : tu feras gaffe, j'ai un peu modifié le CSS pour la visu en local Smiley langue
Modifié par SolidSnake (25 Mar 2016 - 11:51)