• User Attivo

    [mysql] id doppio

    salve,
    ho questo script per registrare nel DB dei tempi di reazione:

    <?php
    include "config.php";

    $cronometro = $_POST['cronometro'];

    $query= "INSERT INTO reazione3(cronometro)";

    $query.="VALUES('$cronometro')";

    $res_db=mysql_query($query)or die("Query non valida:".mysql_error());
    ?>

    ho una tabella con 2 soli campi, uno dei quali è autoincrement impostato come chiave primaria.
    Il problema è che ogni volta dovrebbe incrementare di 1 il campo autoincrement e registrare i tempi, pero' succede che ne crea 2 di campi: in uno segna i tempi, nel secondo invece appare vuoto.

    Questa procedura la eseguo per 5 tabelle differenti, in 3 registra precisamente i tempi con un solo id_autoincrement, nelle altre 2 tabelle mi succede di avere doppio id, di cui uno registra i tempi correttamente, e l'altro vuoto.

    sapete aiutarmi?


  • User Attivo

    var_dump($cronometro)
    mi da:
    Parse error: parse error in c:\programmi\easyphp1-8\www\pubstep2.php on line 41


  • User

    $cronometro che tipo di valori ha? Puoi fare qualche esempio?


  • User Attivo

    cronometro ha valori espressi in millisecondi

    la tabella con idautoincrement è chiave primaria, succede che immette 2 volte i valori :
    id_1 i valori del cronometro,
    id_2 vuoto.
    come se ci fosse un redirect _POST e inserisse nella seconda riga campi vuoti.

    <?php
    // Qui specifica le variabili
    $dirimm = "fototest3"; // Specifica la directory delle immagini
    $titolo = "Questionario"; // Il titolo della pagina
    $immg = array();
    $risp = array();
    $sort = array();
    $nimg = 0;
    $dirhan = opendir($dirimm);
    while(false !== ($fimm = readdir($dirhan)))
    {
    $position = strpos($fimm,"");
    if( $position != FALSE)
    {
    $numero = substr($fimm,0,$position);
    //$nome
    $sort[$dirimm."/".$fimm] =$numero ;
    //$risp[$nimg] = substr($fimm,position+1,1);
    //echo($fimm);
    $nimg++;
    }
    asort($sort);
    reset($sort);
    }
    $i=0;
    while (list($chiave, $valore) = each($sort)) {
    $position = strpos($chiave,"
    ");
    $risp* = substr($chiave,$position+1,1);;
    //echo "chiave = ".$risp*."\n";
    $immg* = $chiave;
    $i++;
    }
    closedir($dirhan);
    ?>
    <head>
    <script type="text/javascript" language="javascript">
    var displayTime;
    var frase = "";
    var nim = <?php echo count($immg); ?>;
    var nin = 0;
    var dimm = new Array();
    var risp = new Array();
    <?php
    foreach($immg as $key => $img) {
    $gim = getimagesize($img);
    echo "dimm[".$key."] = '<img src="".$img."" ".$gim[3].">';\n";
    }

    foreach($risp as $key => $risposta) {
    echo "risp[".$key."] = '".$risposta."';\n";
    }
    ?>

    function reaz(num) {
    var responseTime = new Date();

    //alert ("tasto:"+num+", risposta:"+risp[nin]);

    if(nin+1 >= nim) document.FineTest1.submit();
    if ( num == 0 && risp[nin] == "L")
    return;
    if ( num == 1 && risp[nin] == "A")
    return;
    nin++;

    registerTimeDiff(responseTime);
    //alert(document.getElementById('cronometro').value);
    //if(nin <= nim)
    //document.getElementById('esito').innerHTML = frase;
    avanti(nin);
    }
    function avanti(num) {
    document.getElementById('divimm').innerHTML = dimm[num];
    displayTime= new Date();
    }
    function registerTimeDiff(responseTime)
    {
    var diff = responseTime.getTime()-displayTime.getTime();
    var value = document.getElementById('cronometro').value;
    document.getElementById('cronometro').value=value+''+diff;
    }
    function tasti() {
    // A 65 - L 76
    var tasto = window.event.keyCode;
    if(tasto == 65) { reaz(1); }
    else if(tasto == 76) { reaz(0); }
    }
    function FP_preloadImgs() {
    var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
    for(var i=0; i<a.length; i++) { d.FP_imgs
    =new Image; d.FP_imgs*.src=a*; }
    }
    </script>
    <title><?php echo $titolo; ?></title>
    <style type="text/css">
    <!--
    .Stile4 {
    font-size: x-large;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    }
    -->
    </style>
    </head>
    <body onload="avanti(0); cronometro(document.getElementById('cronometro').value); FP_preloadImgs(<?php
    foreach($immg as $img) {
    echo "'".$img."', ";
    }
    ?>'')" onkeyup="tasti()">
    <form name="FineTest1" id="FineTest1" method="post" target="_self" action="pubstep4.php">
    <input type="hidden" name="cronometro" id="cronometro" value="" />
    </form>

    poi la pagina successiva:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    <head>
    <body bgcolor="black">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    <script type="text/javascript" language="javascript">
    function tasti() {
    //alert(".");
    // A 65 - L 76
    var tasto =window.event.keyCode;
    //alert(tasto);
    if ( tasto == 32)
    document.Continua.submit();
    //alert(document.Continua.submit(););// document.Continua.Submit();
    //alert(tasto);
    }
    </script>
    </head>
    <table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#" class="cssNavBar">
    <tr>
    <td align="center">
    <table border="0" cellpadding="4" cellspacing="0">
    <tr>

     <td bgcolor="#CCCCCCCC"><span class="Stile2">IAT step 4</a></span></td>
     <td><span class="cssSmallGray"></span></td>
    

    </tr>
    </table>
    <?php
    include "config.php";
    $cronometro = $_POST['cronometro'];

    $query= "INSERT INTO reazione3(cronometro)";
    $query.="VALUES('$cronometro')";
    $res_db=mysql_query($query)or die("Query non valida:".mysql_error());
    ?>

    <p align="center"><img src="pubstep4.jpg"></p>
    <p align="center"><img src="istruzioni.jpg"></p>
    <body onkeyup="tasti()"><p align="center"><font size="-1">
    <form name="Continua" id="Continua" method="post" action="fine3inizio4.php" target="_self"></form>
    </body>
    </html>


  • User

    Nella prima pagina delle due fornite vedo che nel body all'evento onload vengono eseguite 3 funzioni.. una di questa è "avanti" che va a scrivere dentro una div "divimm" che non è presente nel codice pubblicato.. cmq ne ho creata una vuota.. la funzione "cronometro" non esiste.. senza quella funzione cmq la pagina viene eseguita correttamente.. andando avanti con le foto con il tasto A viene submittato il form che invia una sola query di questo tipo:

    INSERT INTO reazione3(cronometro)VALUES('2328922137557125765906484254672')

    che viene eseguita una sola volta dato che non è dentro alcun loop php.. se viene eseguita + volte probabilmente è colpa del codice javascript.. il campo cronometro è stato impostato di tipo testuale, no?