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 :

array_sum


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut array_sum
    bonjour à tous
    je reviens vers vous , pour un problème avec la fonction "array_sum" l'objectif est qu'elle me donne la somme total des réponses juste , elle le fait pour "chaque question" , mais pas pour "l'ensemble des question".

    j'ai ajouter la mention "// élément pour le calcul" ce sont visiblement a ces endroit que sa cloche.
    merci pour votre aide.

    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
    /************************************************/
    $qcm = array(
            '1'=>array (
                'libelle'=>'je vois grace à ',
                'img'=>null, 
                'choix'=>array(
                    'mes yeux.'=>true,
                    'ma tete.'=>true,
                    'mon nez.'=>false)
             ), 
    	'2'=>array (
                'libelle'=>'je sens grace à . ',
                'img'=>Null, 
                'choix'=>array(
                    'mon bras.'=>false,
                    'mon nez.'=>true,
                    'mon coude.'=>false)
            ), 
    	'3'=>array (
                'libelle'=>'high kick dans la gueule grace à',
                'img'=>Null, 
                'choix'=>array(
                    'mon pied.'=>true,
                    'mon genoux.'=>false,
                    'mon orteil.'=>false)
            )
          );
     
    /******************************************************/
     
    echo "<form action='new.php' method='post'>"; 
    // $num= '1','2','3'.
    //$question='libelle','img','choix'.
    foreach($qcm as $num=>$question){
    	echo '<h3>'.'QUESTION '.$num.'</h3>'.$question['img'].'<br />'.' -'.$question['libelle'].' :<br />';
     //$reponse='mes yeux','ma tete','mon nez' (pour la question 1)
    //$choix='true','false','false'
        foreach($question['choix'] as $reponse=>$choix){
            echo '<input type="checkbox" name="reponse_box['.$num.'][]"  value="'.$reponse.'">'.$reponse.'<br />';
        }
        echo '<p />'; 
    } 
    echo'<input type="RESET" value="Effacer" />';
    echo'<input type="SUBMIT" name="btn_valid" value="Valider" />';
    echo'</form>';
    /***********************************************************/
    if(isset($_POST['reponse_box'])){
        print_r ($_POST['reponse_box']);
        foreach ($qcm as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
    		if(isset($_POST['reponse_box'][$num])){ 
    			$reponse = implode(",", $_POST['reponse_box'][$num]); 
    			echo $reponse;
    			$right = 0;
    			$rep = array();// élément pour le calcul
    			foreach ($_POST['reponse_box'][$num] as $answer){
    				if (!empty($question['choix'][$answer])){
    				$right++;
    				}
    		}
    			if ($right==true){
    				 echo'<br />une ou plusieurs reponses sont justes';
    			} 
    			else {
    				echo'<br />mauvaise réponse';	
    			}
    			$rep[] = count(array_filter($_POST['reponse_box'][$num]));// élément pour le calcul		
    	} 
    						else {
    							echo'<br />Aucune reponse de votre part';
    						} 
    		echo'<p />nombre de reponse juste pour cette question : ';
    		echo array_sum($rep);
        }	
    		echo'<p />****************************nombre total de reponse juste ';
    		echo array_sum($rep); // élément pour le calcul
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton nombre total de bonnes réponses c'est $right non ?
    Je ne vois pas a quoi sert tout le bazar que tu as ajouté après.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    je viens d'ajouter un "echo'$right';" mais cela ne me donne que le "nombre de just" que pour une question , et non pas pour l'ensemble , idem avec "array_sum($right);"
    merci pour ton aide.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as donc déjà la solution :
    - $right est bien le nombre de bonnes réponses à chaque question donc $rep ne sert à rien.
    Le total est simplement à construire en additionnant les $right :

    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
    if(isset($_POST['reponse_box'])){
     
    	$total = 0
     
        foreach ($qcm as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
     
    		if(isset($_POST['reponse_box'][$num])){
     
    			$reponse = implode(",", $_POST['reponse_box'][$num]); 
    			echo $reponse;
     
    			$rep = array();// élément pour le calcul
    			$right = 0;
     
    			foreach ($_POST['reponse_box'][$num] as $answer){
    				if (!empty($question['choix'][$answer])){
    					$right++;
    				}
    			}
     
    			if ($right > 0){
    				 echo'<br />une ou plusieurs reponses sont justes';										
    			} 
    			else {
    				echo'<br />mauvaise réponse';	
    			}
    		} 
    		else {
    			echo'<br />Aucune reponse de votre part';
    		} 
     
    		echo'<p />nombre de reponse juste pour cette question : ';
    		echo $right;
     
    		$total += $right;
        }
     
    		echo'<p />****************************nombre total de reponse juste ';
    		echo $total; 
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti Avatar de kentaro
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    salut sabotage
    désolé de ne répondre que maintenant .
    la correction que tu m'a donné fonctionne de manière aléatoire , par exemple quand je repond juste à la 1er question , j'obtiens "6" , quand je repond juste à toute les question , j'obtiens 4 (ce qui est correcte).
    Ajouté a cela que j'ai l’erreur suivante:
    Notice: Undefined variable: right in F:\LiberKey\MyApps\UwAmp\www\Nouveau dossier\new.php on line 91

    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
    if(isset($_POST['reponse_box'])){
        print_r ($_POST['reponse_box']);
        foreach ($qcm as $num => $question){
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
    	if(isset($_POST['reponse_box'][$num])){ 
    		$reponse = implode(",", $_POST['reponse_box'][$num]); 
    		echo $reponse; 
    		$total=0;// CALCULE NB DE POINT								
                    //$right = 0;
    		foreach ($_POST['reponse_box'][$num] as $answer){
    			if (!empty($question['choix'][$answer])){
    				$right++;
    			}
    		}															
    		if ($right>0){
    			echo'<br />une ou plusieurs reponses sont justes';	
    		} 
    		else {
    			echo'<br />mauvaise réponse';	
    		}
    	} 							
    	else {
    		echo'<br />Aucune reponse de votre part';							
    	} 
    	echo'<p />nombre de reponse juste pour cette question : ';
    	echo $right;
    	$total += $right; // CALCULE NB DE POINT	
    }	
    echo'<p />****************************nombre total de reponse juste ';
    echo $total;  // CALCULE NB DE POINT	
    }
    en ajoutant " $right = 0;" l'erreur disparait mais le comptage est faux.


    Merci pour ton aide

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    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
    if(isset($_POST['reponse_box'])){
     
    	$total = 0;
     
        foreach ($qcm as $num => $question){
     
    		$right = 0;
     
            echo'<p />QUESTION '.$num.' - '.$question['libelle'].' : <br />';
            echo '--->vous avez repondu : ';
     
    		if(isset($_POST['reponse_box'][$num])){
     
    			$reponse = implode(",", $_POST['reponse_box'][$num]); 
    			echo $reponse;
     
    			$rep = array();// élément pour le calcul
     
     
    			foreach ($_POST['reponse_box'][$num] as $answer){
    				if (!empty($question['choix'][$answer])){
    					$right++;
    				}
    			}
     
    			if ($right > 0){
    				 echo'<br />une ou plusieurs reponses sont justes';										
    			} 
    			else {
    				echo'<br />mauvaise réponse';	
    			}
    		} 
    		else {
    			echo'<br />Aucune reponse de votre part';
    		} 
     
    		echo'<p>nombre de reponse juste pour cette question : '. $right . '</p>';
     
    		$total += $right;
        }
     
    		echo'<p>****************************nombre total de reponse juste ' . $total . '</br>'; 
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [PHP 5.4] Utilisation d'array_sum()
    Par hindioriental dans le forum Langage
    Réponses: 8
    Dernier message: 23/12/2014, 02h25
  2. array_sum et variable
    Par voyageurdumonde dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2010, 01h17
  3. [ODBC] Somme tableau avec array_sum
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/12/2008, 18h17

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