Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13

Discussione: questionario in php

  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    31
    Ciao Mix,

    lo script che hai fatto (e che ringrazio ancora) purtroppo non riesce a scrivere sul file...
    per prima cosa ho controllati permessi(777)..l'errore è:

    Fatal error: Call to undefined function: file_put_contents()

    potrebbe essere un problema di versione php?

    inoltre volevo chiederti un altro aiuto...(non voglio abusare della tua pazienza) ma dovre inserire anche delle checkbox per dare la possibilità di risposta multipla allora ho pensato ingenuamente che bastasse inserire in index.php

    Codice PHP:
        //genero il questionario
    $dat $data[$dom];
    $htm .= "<h1>Domanda: ".$dat['domanda']."</h1>
    "
    ;
    for(
    $i=0;$i!=$dat['nrisp'];$i++){
        if(
    $dat['default'] == $i)
            
    $htm .= "<input type='radio' id='sel' name='sel' value='{$i}' CHECKED>{$dat[$i]['nome']}
    "
    ;
        else
            
    $htm .= "<input type='radio' id='sel' name='sel' value='{$i}'>{$dat[$i]['nome']}
    "
    ;
        if(
    $dat[$i]['tipo']=="testo")
            
    $htm .= "<textarea id='text_{$i}' name='text_{$i}' cols=30 rows=5></textarea>
    "
    ;
        if(
    $dat[$i]['tipo']=="campo")
            
    $htm .= "<input id='text_{$i}' name='text_{$i}'>
    "
    ;
    //l'inserimento della risposta multipla
        
    if($dat[$i]['tipo']=="check")

            
    $htm .= "<input type='checkbox' name='sel' value='TRUE' >
    "
    ;

    però ovviamente poi mi sono accorto che a differenza della ratio la checkbox necessita di doppio indice (1 x la domanda 1 x la check) tutto suo giusto? del tipo

    Codice PHP:
    $htm .= "<input type='checkbox' name='chek_{$i}{$j}' value='TRUE' >
    "


    e non so come gestire questa situazione , inoltre, in questa maledetta domanda ho cinque opzioni tutte con due risposte multiple. adesso non voglio approfitarmi, d'altronde sei stato già troppo gentile, voolevo soltanto chiederti se devo cambiare la struttura delle domande ?ovvero da così:

    Codice PHP:
    $data[2][1]['nome'] = "risposta 2c"
    a così

    Codice PHP:
    $data[2][1][0]['nome'] = "risposta 2c"
    ma oltre a questo cosa devo cambiare? Grazie in anticipo

  2. #12
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    31
    purtroppo sono totalmente bloccato..un aiuto mi salverebbe!

  3. #13
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    31
    Salve ,

    ho cercato di modificare lo script per includere le riposte multiple...con il risultato che adesso nn scrive + il file...inoltre nn capta + le risposte ecco i file index.php

    Codice PHP:
    //dichiaro come mi chiamo ^^
    $me $_SERVER['PHP_SELF'];
    //inizializzo gli input
    $in array_merge($_GET,$_POST,$_COOKIE);
    //includo i dati
    include("quesiti.php");
    //avvio la sessione
    session_start();
    //gestione della sessione nel caso in cui i cookie sono disabilitati 
    if(IsSet($_POST['PHPSESSID']) && !IsSet($_COOKIE['PHPSESSID'])){
    $PHPSESSID=$_POST['PHPSESSID'];
    header("Location: $me?PHPSESSID=$PHPSESSID");
    }

    //controllo se è presente un risultato precedente
    if($in['dom'] != ""){
        
    //guarda se era stato selezionato un campo o un area di testo
        
    if($data[$in['dom']][$in['sel']]['tipo'] == "testo" || $data[$in['dom']][$in['sel']]['tipo'] == "campo" )
            
    $_SESSION['risp'][$in['dom']] = $in['sel'].": ".$in['text_'.$in['sel']];
        if(
    $data[$in['dom']][$in['sel']]['tipo'] == "check")
            
    $_SESSION['risp'][$in['dom']] = $in['sel'].": ".$in['check_'.$in['opz']];
        if(
    $data[$in['dom']][$in['sel']]['nome'])
            
    $_SESSION['risp'][$in['dom']] = $in['sel'];
    }

    //imposta a 0 la domanda se non è specificata
    $dom $in['d'] ? $in['d'] : 0;
    //genero il percorso x la prossima domanda
    $url $me."?d=".($dom+1);
    //se bisogna lanciare un header o mettere un intestazione la si stampa da qui
    $htm "<html><head></head><body><form action='{$url}' method='post'>";
    //controlla se il questionario è finito 
    if($dom>=$data['ndomande']){ 
        if(
    $_SESSION['risp'][$in['dom']]){ 
            
    $rsp $_SESSION['risp']; 
            
    ksort($rsp); 
            
    $linkf=fopen("dati.dat","a+"); 
            
    fwrite($linkf,serialize($rsp)."|^*^|"); 
            
    fclose($linkf); 
            
    //file_put_contents("dati.dat",serialize($rsp)."|^*^|",FILE_APPEND); 
        

        unset(
    $_SESSION['risp']); 
        die(
    "Il questionario è finito!!!"); 
    }
        

    //genero il questionario
    $dat $data[$dom];
    $htm .= "<h1>Domanda: ".$dat['domanda']."</h1>
    "
    ;
    for(
    $i=0;$i!=$dat['nrisp'];$i++){
        
    //if($dat['default'] == $i)
        //$htm .= "<input type='radio' id='sel' name='sel' value='{$i}' CHECKED>{$dat[$i]['nome']}
    ";
        //else°
        if(
    $dat[$i]['nome'])
            
    $htm .= "<input type='radio' id='sel' name='sel' value='{$i}'><label for='sel'>{$dat[$i]['nome']}</label>
    ";
        if(
    $dat[$i]['tipo']=="testo")
            
    $htm .= "<label for='text_{$i}'> {$dat[$i]['label']} </label>
    <
    textarea id='text_{$i}' name='text_{$i}' cols=30 rows=5></textarea>
    ";
        if(
    $dat[$i]['tipo']=="campo")
            
    $htm .= "<label for='text_{$i}'> {$dat[$i]['label']} </label>
    <
    input id='text_{$i}' name='text_{$i}'>
    ";
        if(
    $dat[$i]['tipo']=="check")
            
    $htm .= "<input type='checkbox' id='check_{$i}' name='check_{$i}' value='{$i}' ><label for='check_{$i}'>{$dat[$i]['opz']}</label>
    ";
    }
    $htm .= "
    <input type='submit' value='Invia'><input type='hidden' name='dom' value='{$dom}'><input type='hidden' name='PHPSESSID' value='{$in['PHPSESSID']}'></form></body></html>";


    //stampo il tutto
    echo(
    $htm); 
    e quesiti.php (solo un esempio della nuova strutt. il resto è uguale)

    Codice PHP:
    $data[15]['domanda'] = "Quale tipo di risoluzione delloschermo adotta sul suo PC?";
    $data[15]['nrisp'] = 7;
    $data[15][0]['nome'] = "640x480";
    $data[15][1]['nome'] = "800x600";
    $data[15][2]['nome'] = "1024x768";
    $data[15][3]['nome'] = "1280x800";
    $data[15][4]['nome'] = "Altro";
    $data[15][5]['nome'] = "Non so";
    $data[15][6]['label'] = "Se ha risposto Altro, scriva il tipo di risoluzione utilizzata:";
    $data[15][6]['tipo'] = "campo";

    $data[16]['domanda'] = "Quale browser utilizza per la navigazione su internet?";
    $data[16]['nrisp'] = 4;
    $data[16][0]['nome'] = "Mozilla/Firefox";
    $data[16][1]['nome'] = "Internet Explorer";
    $data[16][2]['nome'] = "Opera";
    $data[16][3]['nome'] = "Altro";
    $data[16][2]['label'] = "Se ha risposto Altro, elenchi il browser che utilizza per la navigazione:";
    $data[16][3]['tipo'] = "campo";

    $data[17]['domanda'] = "Quali siti internet visita di solito?";
    $data[17]['nrisp'] = 4;
    $data[17][0]['opz'] = "Giornali e/o riviste";
    $data[17][0]['tipo'] = "check";
    $data[17][1]['opz'] = "Posta elettronica";
    $data[17][1]['tipo'] = "check";
    $data[17][2]['opz'] = "Altro";
    $data[17][2]['tipo'] = "check";
    $data[17][3]['opz'] = "Forum";
    $data[17][3]['tipo'] = "check";
    $data[17][4]['opz'] = "Ricerche varie";
    $data[17][4]['tipo'] = "check";
    $data[17][5]['label'] = "Se ha risposto Altro, elenchi i siti che visita di solito:";
    $data[17][5]['tipo'] = "testo";

    $data[18]['domanda'] = "Quale motore di ricerca usa solitamente?";
    $data[18]['nrisp'] = 4;
    $data[18][0]['nome'] = "Google";
    $data[18][1]['nome'] = "Yahoo";
    $data[18][2]['nome'] = "Virgilio";
    $data[18][3]['label'] = "Altro:";
    $data[18][3]['tipo'] = "campo"
    cosa sbaglio?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.