Categories: PHP

Come Creare un Questionario in PHP

Da qualche giorno abbiamo inserito dei questionari informatici che servono soprattutto ai nostri utenti per sapere il loro grado di conoscenza dei vari argomenti ed anche per stimolarli alla ricerca di informazioni, difatti in questo blog cerchiamo sempre di insegnare e soprattutto far amare argomenti anche difficili da digerire. Ho pensato allora di mostrare come ho implementato questo progetto con l’ausilio di PHP e MySQL.
Il fine del progetto è creare un modo dinamico per gestire delle domande su vari argomenti, poter inserire 3 risposte diverse e dare, a seconda della risposta, un punteggio, al termine poter fare la somma di questo risultato e stilare una classifica per argomento dei primi 50 punteggi più alti.
Il primo passo da compiere è creare la tabella in MySQL che andrà ad ospitare le nostre domande e che chiameremo “Domande”. Per mezzo di PhpMyAdmin possiamo creare questa struttura:

  • Argomento di tipo int di grandezza 2
  • Domanda di tipo varchar di lunghezza 200
  • Risposta1 di tipo varchar di lunghezza 150
  • Valore1 di tipo int di grandezza 2
  • Risposta2 di tipo varchar di lunghezza 150
  • Valore2 di tipo int di grandezza 2
  • Risposta3 di tipo varchar di lunghezza 150
  • Valore3 di tipo int di grandezza 2

Fatto questo dobbiamo creare una pagina ad-hoc per permettere un’inserimento veloce delle domande. Questa pagina PHP deve essere protetta da password, per evitare che altri possano inserire delle domande, il metodo migliore sarebbe quello di far fare una login e lavorare con le sessioni, ma ho evitato questo perché richiede più tempo, casomai lo vedremo in futuro come affrontare il problema. Personalmente ho optato per l’inserimento di una password all’inserimento di ogni domanda, riconosco che non è il miglior modo di affrontare il problema, ma è anche quello più veloce e semplice da costruire.

<?php

$password = $_REQUEST['pws'];
if (strlen($password) > 0)
{
  if ($password == "mia_password")
  {
     $argomento = $_REQUEST['argomento'];
     $domanda = $_REQUEST['domanda'];
     $risposta1 = $_REQUEST['risposta1'];
     $punti1 = $_REQUEST['punti1'];
     $risposta2 = $_REQUEST['risposta2'];
     $punti2 = $_REQUEST['punti2'];
     $risposta3 = $_REQUEST['risposta3'];
     $punti3 = $_REQUEST['punti3'];

     $hostname = "mio_host";
     $database = "mio_database";
     $username = "mio_utente";
     $password = "mia_password";

    $domande = mysql_connect($hostname, $username, $password)
         or trigger_error(mysql_error(),E_USER_ERROR);
     mysql_select_db($database, $domande);
     $query = "INSERT INTO Domande (Argomento, Domanda,
          Risposta1, Valore1, Risposta2, Valore2,
          Risposta3, Valore3) ";
     $query .= "VALUES(".$argomento.", '".$domanda."', '".
          $risposta1."', ".$punti1.", '".$risposta2."', ".
          $punti2.", '"
          .$risposta3."', ".$punti3.")";
      mysql_query($query, $domande) or die(mysql_error());
      mysql_close($domande);
   }
}

?>

<html>
<head><title>Inserimento Domande</title></head>
<body>

<h1 align="center">Inserisci Domanda</h1>

<div align="center">
<form action="#" method="POST" name="domande">

   <input name="pws" type="password" id="pws"
         title="Inserire la password" size="20" maxlength="20">
   <br><br>
   Scegli l'argomento:
   <select name="argomento" id="argomento">
      <option value="1" selected>Java
      <option value="2">C/C++
      <option value="3">Windows
      <option value="4">Linux
      <option value="5">.NET
      <option value="6">Access
      <option value="7">PHP
   </select>
   <br><br>
   <textarea name="domanda" type="text" title="Domanda"
      id="domanda" cols="60" rows="10"></textarea>
   <br><br>
   Risposta 1: <textarea name="risposta1" type="text"
     title="Risposta 1" id="risposta1" cols="40" rows="5">
       </textarea>
   Valore 1: <input name="punti1" type="text"
      id="punti1" title="Inserire il valore" size="5"
        maxlength="5">
   <br>
   Risposta 2: <textarea name="risposta2" type="text"
     title="Risposta 2" id="risposta2" cols="40" rows="5">
          </textarea>
   Valore 2: <input name="punti2" type="text"
      id="punti2" title="Inserire il valore" size="5"
            maxlength="5">
   <br>
   Risposta 3: <textarea name="risposta3" type="text"
      title="Risposta 3" id="risposta3" cols="40" rows="5">
         </textarea>
   Valore 3: <input name="punti3" type="text"
       id="punti2" title="Inserire il valore" size="5"
             maxlength="5">
   <br><br>
   <input type="submit" name="invia" id="invia"
      title="Inserisci Domanda" value="Inserisci Domanda">
   </form>
</div>

</body>
</html>

Come potete notare si tratta di una pagina molto semplice che consente di inserire una domanda di un determinato argomento, dare tre risposte con i rispettivi punteggi, il tutto solo se si conosce la propria password. Nel prossimo articolo del progetto vedremo come presentare le domande ad un candidato, fare la somma del punteggio ed infine inserire il risultato in un’altra tabella della classifica, il tutto usufruendo di una sola pagina PHP dinamica.

Lezione Successiva >>

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi
Tags: MySQLSQL

Recent Posts

MerciGest: il gestionale di magazzino semplice e gratuito

MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…

5 giorni ago

Software gestionali con SQL Server: un archivio unico, accessibile ovunque

Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…

6 giorni ago

Come iniziare ad usare MerciGest in 5 minuti

MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…

1 settimana ago

Cos’è MerciGest e a chi serve

MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…

2 settimane ago

Introduzione alla Standard Template Library (STL)

La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…

7 mesi ago

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

2 anni ago