Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    realizzazione sondaggio in php, risposta mi da valore 0 [domanda per esperti]

    ciao a tutti,
    sto cercando di realizzare un sondaggio, fino a ieri andava tutto bene ma oggi mi sono dovuto fermare su un'ostacolo, insormontabile per me, spero che voi riusciate a risolverlo.

    Ci sono nidificati uno dentro l'altro NOME SONDAGGIO, DOMANDE e RISPOSTE, questo per visualizzare il sondaggio in un'unica pagina.

    In fondo alla pagina vedrete la variabile $rispostanumero[$key] è qui il problema (è l'unica cosa che non funziona, tutto il resto è ok) perchè nel db mi inserisce sempre il valore uguale a 0, perchè?

    Codice PHP:
    <?
    $query_categoria1
    ="SELECT e_sond_sondaggio.* 

                    FROM e_sond_sondaggio 

                    ORDER BY e_sond_sondaggio.id_sond_sondaggio DESC LIMIT 1"
    ;        
    $result_categoria1=mysql_query($query_categoria1$conn) or die ("errore ".mysql_error());

    while(
    $row_sondaggio=mysql_fetch_array($result_categoria1)){
    $idsondsondaggio $row_sondaggio['id_sond_sondaggio'];
    ?> 

    <form enctype="multipart/form-data" name="form1" action="<?=$PHP_SELF?>" method="post">  

    <?=strtoupper($row_sondaggio['nome_sondaggio'])?>

    <?
    $a 
    =  1

    $id_domande = array();

    $colore_sfondo '#F6F6F6'

    $query_categoria2="SELECT e_sond_sondaggio.*, e_sond_domande.*    

                    FROM e_sond_sondaggio 
                    
                    INNER JOIN e_sond_domande
                    ON e_sond_domande.id_sond_sondaggio = e_sond_sondaggio.id_sond_sondaggio 
                    
                    WHERE e_sond_sondaggio.id_sond_sondaggio = '"
    .$idsondsondaggio."' 

                    ORDER BY e_sond_domande.id_sond_domande ASC"
    ;        
    $result_categoria2=mysql_query($query_categoria2$conn) or die ("errore ".mysql_error());

    while(
    $row_domande=mysql_fetch_array($result_categoria2)){

    $idsonddomande $row_domande['id_sond_domande'];

    array_push($id_domande$idsonddomande); 

    $numero $a++;
    ?>

    <?=strtoupper($row_domande['domanda'])?>  

    <?
    $query_categoria3
    ="SELECT e_sond_domande.*, e_sond_risposte.*    

                    FROM e_sond_domande 
                    
                    INNER JOIN e_sond_risposte
                    ON e_sond_risposte.id_sond_domande = e_sond_domande.id_sond_domande 
                    
                    WHERE e_sond_domande.id_sond_domande = '"
    .$idsonddomande."' 

                    ORDER BY e_sond_risposte.id_sond_risposte ASC"
    ;        
    $result_categoria3=mysql_query($query_categoria3$conn) or die ("errore ".mysql_error());
    while(
    $row_risposte=mysql_fetch_array($result_categoria3)){

    $idsondrisposte $row_risposte['id_sond_risposte'];
    $rispostanumero 'risposta'.$numero;
    ?>   

    <?=strtoupper($row_risposte['risposta'])?>
    <input type="radio" name="<?=$rispostanumero?>" value="<?=$idsondrisposte?>">

    <?php
    }
    ?> 

    <?php
    }
    ?> 

    <input type="hidden" name="sondaggio" value="1">

    <input type="hidden" name="idsondaggio" value="<?=$idsondsondaggio?>">

    <input type="hidden" name="iputente" value="<?=$_SERVER['REMOTE_ADDR']?>">
    <input name="submit" type="submit" class="pulsante" value="INVIA">

    </form> 
      
    <?php
    }
    ?>



    <?
    if ($sondaggio==1){

    foreach(
    $id_domande as $key => $value_id_domande):

    $sql "
    INSERT INTO e_sond_risposte_ute 
    (ip_sond_ute, data_ins_ute, ora_ins_ute, id_sond_sondaggio, id_sond_domande, id_sond_risposte) 
    VALUES 
    ('
    $iputente', curdate(), curtime(), '$idsondaggio', '$value_id_domande', '$rispostanumero[$key]')
    "
    ;
    mysql_query($sql$conn) or die (mysql_error());

    endforeach;

    }
    ?>

  2. #2
    Ciao prova a fare così


    <input type="radio" name="risp_<?=$rispostanumero?>" value="<?=$idsondrisposte?>">

    Codice PHP:
    foreach($id_domande as $key => $value_id_domande):

    $rispkey str_replace("risp_","",$key);

    $sql "
    INSERT INTO e_sond_risposte_ute 
    (ip_sond_ute, data_ins_ute, ora_ins_ute, id_sond_sondaggio, id_sond_domande, id_sond_risposte) 
    VALUES 
    ('
    $iputente', curdate(), curtime(), '$idsondaggio', '$value_id_domande', '$rispostanumero[$rispkey]')
    "
    ;
    mysql_query($sql$conn) or die (mysql_error());

    endforeach; 
    ho scritto senza provare fammi sapere

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Grazie mille per l'aiuto ma anche con le tue modifiche mi inserisce sempre 0 nel db
    poi vorrei farti una domanda:

    se nell'input type il nome è risp_<?=$rispostanumero?>
    perchè poi il nome è $rispkey = str_replace("risp_","",$key);
    anzichè essere $rispkey = str_replace("risp_.$rispostanumero","",$key);

    forse sto dicendo una cavolata :

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho messo anche un print e questo è il risultato (sono 2 domande):


    **.**.***.** iputente
    4 idsondaggio
    1 iddomanda
    idrisposta

    **.**.***.** iputente
    4 idsondaggio
    2 iddomanda
    idrisposta


    quindi funziona tutto tranne la risposta

  5. #5
    scusa ma ti ho detto che avevo scritto senza provare

    allora la cosa migliore è vedere cosa sta passando il form in post

    quando non sai cosa stia passando prova a verificare all'interno del ciclo

    con ad esempio:

    Codice PHP:
    echo "<pre>";
    echo 
    var_dump($_POST);
    echo 
    "</pre>"
    più che altro c'è una regola basilare, i nomi degli input in html non dovrebbero mai cominciare con
    un numero.
    fatto ciò guarda cosa ti passa la pagina dopo il submit con il comando sopra.
    Dovresti trovare qualcosa che ti permetta di ricevere la risposta data con un semplice

    Inoltre nell'input precedente occorre che imposti i valori come segue:

    <input type="radio" name="NOME DEL GRUPPO INPUT" value="ID DELLA RISPOSTA">

    Così facendo dovresti risolvere tutto
    Fammi sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ora provo var_dump

    nel frattempo ho fatto altre prove e ti posso dire che se faccio così, funziona, ma solo la prima risposta, l'altra continua a darmi 0

    Codice PHP:
    <?
    if ($sondaggio==1){

    foreach(
    $id_domande as $key => $value_id_domande):

    $rispkey str_replace($risp_1,"",$key);

    $sql "
    INSERT INTO e_sond_risposte_ute 
    (ip_sond_ute, data_ins_ute, ora_ins_ute, id_sond_sondaggio, id_sond_domande, id_sond_risposte) 
    VALUES 
    ('
    $iputente', curdate(), curtime(), '$idsondaggio', '$value_id_domande', '$risp_1[$rispkey]')
    "
    ;
    mysql_query($sql$conn) or die (mysql_error());


    endforeach;

    }
    ?>
    se invece faccio così entrambe le risposte mi danno 0

    Codice PHP:
    <?
    if ($sondaggio==1){

    foreach(
    $id_domande as $key => $value_id_domande):

    $rispkey str_replace(risp_.$rispostanumero,"",$key);

    $sql "
    INSERT INTO e_sond_risposte_ute 
    (ip_sond_ute, data_ins_ute, ora_ins_ute, id_sond_sondaggio, id_sond_domande, id_sond_risposte) 
    VALUES 
    ('
    $iputente', curdate(), curtime(), '$idsondaggio', '$value_id_domande', 'risp_.$rispostanumero[$rispkey]')
    "
    ;
    mysql_query($sql$conn) or die (mysql_error());


    endforeach;

    }
    ?>

  7. #7
    Forse ho capito, il problema probabilmente è nell'html sembra che ci siano dei input radio con lo stesso nome e quando i valori vengono passati in post viene preso solo l'ultimo di essi.
    Prova a verificare

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ho fatto il var_dump e mi da questo risultato e qui mi da le risposte giuste!

    risposta1 = id 4
    risposta2 = id 6


    array(6) {
    ["risp_1"]=>
    string(1) "4"
    ["risp_2"]=>
    string(1) "6"
    ["sondaggio"]=>
    string(1) "1"
    ["idsondaggio"]=>
    string(1) "4"
    ["iputente"]=>
    string(12) "**.**.***.**"
    ["submit"]=>
    string(5) "INVIA"
    }

  9. #9
    quindi sei a posto, basta che prendi il valore del
    $_POST["risp_" + id]

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    continua a darmi 0 nel db e valori giusti nel dump

    ho fatto così:


    Codice PHP:
    <?
    if ($sondaggio==1){

    foreach(
    $id_domande as $key => $value_id_domande):

    $idrisposta $_POST["risp_".$numero];


    $rispkey str_replace($idrisposta,"",$key);

    $sql "
    INSERT INTO e_sond_risposte_ute 
    (ip_sond_ute, data_ins_ute, ora_ins_ute, id_sond_sondaggio, id_sond_domande, id_sond_risposte) 
    VALUES 
    ('
    $iputente', curdate(), curtime(), '$idsondaggio', '$value_id_domande', '$value_id_risposte[$rispkey]')
    "
    ;
    mysql_query($sql$conn) or die (mysql_error());

    echo 
    "<pre>";
    echo 
    var_dump($_POST);
    echo 
    "</pre>";

    endforeach;

    }
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.