Bonjour je crée un exercice de calcul mental en javascript/php/mysql et je n'arrive pas à enregistrer mes résultats dans la base de données mysql

Voici mes codes :

index2.php

<!doctype html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Calcul mental</title>
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/foundation.min.css">
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>

    <div class="row">
        <h1>Calcul Mental</h1>
        <div class="columns large-12">
            <h2>Quel est le résultat de ? </h2>
            <div class="columns large-6">
                <form class="mental_form2" action="calcul.php">
                    <div class="columns large-4">
                        <input class="champ" type="text" name="n1" id="n1">
                    </div>
                    <div class="columns large-4">
                        <input class="champ" type="text" name="si1" id="si1">
                    </div>
                    <div class="columns large-4">
                        <input class="champ" type="text" name="n2" id="n2">
                    </div>
                    <div class="columns large-4">
                        <label for="reponse">Votre réponse</label>
                    </div>
                    <div class="columns large-4">
                        <input type="text" name="result" id="result">
                    </div>
                    <div class="columns large-4">
                        <input type="submit" name="submit" id="submit" value="Valider" class="button small right">
                    </div>
                </form>
            </div>
            <div class="columns large-6 res">

            </div>
        </div>
    </div>
    <span id="chronotime">0:00:00:00</span>
    <script src="js/api.js"></script>
</body>
</html>

api.js

startTime = 0
var start = 0
var end = 0
var diff = 0
var timerID = 0
function chrono(){
    end = new Date()
    diff = end - start
    diff = new Date(diff)
    var msec = diff.getMilliseconds()
    var sec = diff.getSeconds()
    var min = diff.getMinutes()
    var hr = diff.getHours()-1
    if (min < 10){
        min = "0" + min
    }
    if (sec < 10){
        sec = "0" + sec
    }
    if(msec < 10){
        msec = "00" +msec
    }
    else if(msec < 100){
        msec = "0" +msec
    }
    document.getElementById("chronotime").innerHTML = hr + ":" + min + ":" + sec + ":" + msec
    timerID = setTimeout("chrono()", 10)
}

function chronoStop(){
    clearTimeout(timerID)
}
function chronoContinue(){
    start = new Date()-diff
    start = new Date(start)
    chrono()
}

function chronoStart(){
    start = new Date()
    chrono()
}

function init(){
    var n1 = 1 + Math.floor(Math.random() * 10);
    var si1 = '+';
    var n2 = 1 + Math.floor(Math.random() * 10);
    $('#n1').val(n1);
    $('#si1').val(si1);
    $('#n2').val(n2);
}
function success(){
    $('.res').html('<div data-alert class="success alert-box">Bien joué ! <a href="#" class="close">×</a></div>');
}
function error(){
    $('.res').html('<div data-alert class="alert alert-box">Dommage ! même joueur joue encore ! <a href="#" class="close">×</a></div>');  
}
function send(){ 

        $('.mental_form2').submit(function() {
        $.post('calcul.php', { n1: $('.mental_form2 input[name=n1]').val(),
                        si1: $('.mental_form2 input[name=si1]').val(),
                    n2: $('.mental_form2 input[name=n2]').val(),
                    result: $('.mental_form2 input[name=result]').val()
                    }
                );
                return false; 
            });
}
function check(){
    var n1 = $('#n1').val();
    var si1 = $('#si1').val();
    var n2 = $('#n2').val();
    var r1 = parseInt(n1) + parseInt(n2);
    var r2 = $('#result').val();
    if( r1 == r2){
        send();
        success();
    }else{
        error();
    }
    $('#result').val('');
}
$(document).ready(function(){
    init();
    chronoStart();
})
$('#submit').click(function(event){
    event.preventDefault();
    check();
    init();
})

calcul.php

<?php
session_start();
// set error reporting level
if (version_compare(phpversion(), '5.3.0', '>=') == 1)
  error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
else
  error_reporting(E_ALL & ~E_NOTICE);

require_once('classes/CMySQL.php');
require_once('classes/Ccalcul.php');

if ($_SESSION'member_id'] && $_SESSION'member_status'] == 'active' && $_SESSION'member_role'])

{
    $sChiffre1 = $GLOBALS'MySQL']->escape($_POST'n1']);
    $sSigne1 = $GLOBALS'MySQL']->escape($_POST'si1']);
    $sChiffre2 = $GLOBALS'MySQL']->escape($_POST'n2']);
    $sVotresultat = $GLOBALS'MySQL']->escape($_POST'result']);

    if ($sChiffre1 && $sSigne1 && $sChiffre2 && $sVotresultat) 

            {
                $Accept2 = $GLOBALS'Ccalcul']->acceptcalcul();
            }
}
echo (file_get_contents('templates/index2.php'));

?>

Ccalcul.php

<?php

class Ccalcul {

    function Ccalcul() {}

    // Accept votresultat

    function acceptcalcul() 
        {

            $sChiffre1 = $GLOBALS'MySQL']->escape($_POST'n1']);
            $sSigne1 = $GLOBALS'MySQL']->escape($_POST'si1']);
            $sChiffre2 = $GLOBALS'MySQL']->escape($_POST'n2']);
            $sVotresultat = $GLOBALS'MySQL']->escape($_POST'result']);

        if ($sChiffre1 && $sSigne1 && $sChiffre2 && $sVotresultat) 

            {
                $bRf = $GLOBALS'MySQL']->res("INSERT INTO `addition` SET 
                    `chiffre1` = '{$sChiffre1}',
                    `signe1` = '{$sSigne1}',
                    `chiffre2` = '{$sChiffre2}',
                    `votresultat` = '{$sVotresultat}'

                    ");

            }
        }

}
$GLOBALS'Ccalcul'] = new Ccalcul();

Merci de m'éclairer

7 réponses


jeanmaki
Auteur
Réponse acceptée

Merci pour l'info mais il n'y a aucune erreur dans le fichier log, l'erreur vient de

$('#result').val('');

dans la fonction

check()

en effet celui ci est constamment remis à zéro du fait de la fonction

init()

et donc il n'est jamais enregistré dans la base de données ainsi que les autres valeurs donc si tu l'enlève ca marche...

Merci Pewel

Salut,

$GLOBALS'MySQL']

C'est quoi cette variable ?

Tu pourrais nous mettre le fichier CMySQL.php stp ?

jeanmaki
Auteur

Salut, voici CMySQL.php

<?php
class CMySQL {
    // variables
    var $sDbName;
    var $sDbUser;
    var $sDbPass;
    var $vLink;
    // constructor
    function CMySQL() {
        $this->sDbName = 'site3';
        $this->sDbUser = 'root';
        $this->sDbPass = '';
        // create db link
        $this->vLink = mysql_connect("localhost", $this->sDbUser, $this->sDbPass);
        //select the database
        mysql_select_db($this->sDbName, $this->vLink);
        mysql_query("SET names ISO-8859-1");
    }
    // return one value result
    function getOne($query, $index = 0) {
        if (! $query)
            return false;
        $res = mysql_query($query);
        $arr_res = array();
        if ($res && mysql_num_rows($res))
            $arr_res = mysql_fetch_array($res);
        if (count($arr_res))
            return $arr_res$index];
        else
            return false;
    }
    // executing sql
    function res($query, $error_checking = true) {
        if(!$query)
            return false;
        $res = mysql_query($query, $this->vLink);
        if (!$res)
            $this->error('Database query error', false, $query);
        return $res;
    }
    // return table of records as result in pairs
    function getPairs($query, $sFieldKey, $sFieldValue, $arr_type = MYSQL_ASSOC) {
        if (! $query)
            return array();
        $res = $this->res($query);
        $arr_res = array();
        if ($res) {
            while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
                $arr_res$row$sFieldKey]] = $row$sFieldValue];
            }
            mysql_free_result($res);
        }
        return $arr_res;
    }
    // return table of records as result
    function getAll($query, $arr_type = MYSQL_ASSOC) {
        if (! $query)
            return array();
        if ($arr_type != MYSQL_ASSOC && $arr_type != MYSQL_NUM && $arr_type != MYSQL_BOTH)
            $arr_type = MYSQL_ASSOC;
        $res = $this->res($query);
        $arr_res = array();
        if ($res) {
            while ($row = mysql_fetch_array($res, $arr_type))
                $arr_res] = $row;
            mysql_free_result($res);
        }
        return $arr_res;
    }
    // return one row result
    function getRow($query, $arr_type = MYSQL_ASSOC) {
        if(!$query)
            return array();
        if($arr_type != MYSQL_ASSOC && $arr_type != MYSQL_NUM && $arr_type != MYSQL_BOTH)
            $arr_type = MYSQL_ASSOC;
        $res = $this->res ($query);
        $arr_res = array();
        if($res && mysql_num_rows($res)) {
            $arr_res = mysql_fetch_array($res, $arr_type);
            mysql_free_result($res);
        }
        return $arr_res;
    }
    // escape
    function escape($s) {
        return mysql_real_escape_string(strip_tags($s));
    }
    // get last id
    function lastId() {
        return mysql_insert_id($this->vLink);
    }
    // display errors
    function error($text, $isForceErrorChecking = false, $sSqlQuery = '') {
        echo $text; exit;
    }
}
$GLOBALS'MySQL'] = new CMySQL();
jeanmaki
Auteur

Personne? ;-)

Tu as regardé dans tes fichiers de logs si tu avais une erreur php ? Une variable non définie, une erreur de syntaxe etc ?

jeanmaki
Auteur

comment tu utilise les log?

Si tu es sur linux :
tu vas dans /var/logs et tu en ligne de commande tu tapes "tail -f error.log" pour avoir la "queue" de ton fichier de log.

Si tu es sur windows :
tu vas dans ton dossier d'install de wamp ou xamp, tu devrais avoir un dossier logs et à l'intérieur un fichier error_log ou quelque chose du genre.

Tu l'ouvres, et regarde si tu as des erreurs php dedans.

Si tu en as, copie les dernières lignes ici.