array di radio button

Salve a tutti, sto utilizzando da poco il php e avrei bisogno di un aiuto riguardante il passaggio di parametri da un form ad una pagina php (inserisci.php).

In pratica, sulla pagina principale ho un elenco di voci (tipo le domande di un test) e, ad ognuna di queste voci sono associati 3 radio button, in modo che un utente possa scegliere, relativamente ad ogni domanda, solo una risposta (A, B, C).

Il numero di domande che faranno parte dell'elenco non è fisso, perchè viene estratto da un database (a seconda del IDalunno proveniente da un form di un'altra pagina php) e non riesco a leggere, nella pagina che dovrebbe elaborare i risultati, tutte le risposte e non so come associare le risposte alle date domande.

Potete darmi un'idea su come fare ?

Non so come creare , nella pagina di gestione dei risultati, un array di radio button perchè mi accorgo, che quando provo a stampare l'array _POST , sulla pagina mi appare il nome del parametro (in questo caso il radio button) e la scritta "Array".

Grazie a tutti.

Questo è il codice della pagina dove sono elencate le domande

<?php
$name_server="localhost";
$name_db="fromaccess";
$nome_utente="root";
$password="calendario";

$connessione = mysqli_connect($name_server, $nome_utente, $password,$name_db);

$query = "SELECT IDdomanda , des_domanda  FROM DOMANDE WHERE  IDAlunno='".$_POST['idalunno']."' ;
      
$result = mysqli_query($connessione,$query);
if (!$result) {
      die('Errore nella query: ' . mysqli_error());
            }
      echo "<form name=form1 method=post action=inserisci.php>";
      echo("<table border='1' cellpadding='2' cellspacing='0'>");
      print ("<td>DOMANDA</td>");
      print ("<td>A</td>");
      print ("<td>B</td>");
      print ("<td>C</td>");
      
                $indice= 0;
            
      while ($riga = mysqli_fetch_assoc($result))
            {
              $indice = $indice +1;   
               
               print ("<td>$riga[des_domanda]</td>");
               print ("<td><input type='radio' name='cktitolare[$riga[IDdomanda]]' value=$riga[IDdomanda]></td>"); 
               print ("<td><input type='radio' name='cktitolare[$riga[IDdomanda]]' value=$riga[IDdomanda]>"); 
               print ("<td><input type='radio' name='cktitolare[$riga[IDdomanda]]' value=$riga[ID]></td>"); 
               print ("</tr>");
                  
              
            }
            mysqli_close($connessione);   
                           
      echo("</table>");
      
      print ("<input type=submit value=Invia risposte>");
      print   "</form>";
   
   }

?>
inviato 9 anni fa
fonzenigge
X 0 X

Se non sbaglio l'attributo "name" deve essere sempre lo stesso per un set di radiobutton.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ok, tolgo l'indice ai radiobutton, ma come faccio poi a leggerli da un'altra pagina php ?

Come gestisco il POST ?

Grazie

risposto 9 anni fa
fonzenigge
X 0 X

Ok, tolgo l'indice ai radiobutton, ma come faccio poi a leggerli da un'altra pagina php ?

Come gestisco il POST ?

Grazie

Non togliere l'id, altrimenti come dividi i radio per ogni domanda?

Tu vuoi una cosa tipo:

D1:di che colore è il cavallo bianco di napoleone?

R1: A bianco B nero C non so

D2:quanti lati ha un triangolo?

R2: A tre B quattro C 2

ecc.

Tutte le domande su una pagina? in questo caso i radiobutton della risposta 1 devono avere tutti e tre lo stesso nome differente dai tre della risposta 2 e così via, il valore invece cambia in base alla risposta.

R1 sarà (poi lo sistemi tu con i dati giusti):

<input type='radio' name='r1' value="A"> bianco

<input type='radio' name='r1' value="B"> nero

<input type='radio' name='r1' value="C"> non so

Nello stesso modo per r2 con name=r2 e i relativi valori.

Quando ricevi da post, ricevi solo il valore del radiobutton selezionato, quindi avrai:

$r1 = $_POST["r1"];

$r1 conterrà il value del radio selezionato e non gli altri, a.e. se sarà selezionato A bianco $r1 conterrà 'A'.

E' chiaro?

risposto 9 anni fa
LonelyWolf
X 0 X

Grazie, chiarissimo. Ma il problema è che io non so a priori quante domande avrò, quindi non posso chiamare le variabili domanda D1, D2, ecc.. ma dovrò fare un array di domande D(1), D(2), ecc...

Poi questo array come lo richiamo nel post ?

risposto 9 anni fa
fonzenigge
X 0 X

Su dai un po' di fantasia!

creati un indice che si incrementa ad ogni domanda, tipo $i ed il nome degli elementi lo componi tipo:

echo "<input type='radio' name='R$i' value='$risposta' />"

quando passi alla seconda domanda incrementi $i così avrai R1, R2, ecc.

Quando tutte le domande sono finite al form aggiungi un campo hidden tipo:

echo "<input type='hidden' name='tot_domande' value='$i' />"

così nella pagina che riceve sai quanti set di radiobutton devi ricevere.

risposto 9 anni fa
LonelyWolf
X 0 X

Solo perchè sei tu ;) :

<?php
$name_server="localhost";
$name_db="fromaccess";
$nome_utente="root";
$password="calendario";

$connessione = mysqli_connect($name_server, $nome_utente, $password,$name_db);

$query = "SELECT IDdomanda , des_domanda  FROM DOMANDE WHERE  IDAlunno='".$_POST['idalunno']."' ;
      
$result = mysqli_query($connessione,$query);
if (!$result) {
      die('Errore nella query: ' . mysqli_error());
            }
      echo "<form name=form1 method=post action=inserisci.php>";
      echo("<table border='1' cellpadding='2' cellspacing='0'>");
      print ("<td>DOMANDA</td>");
      print ("<td>A</td>");
      print ("<td>B</td>");
      print ("<td>C</td>");
      
                $indice= 0;
            
      while ($riga = mysqli_fetch_assoc($result))
            {
                $indice++;
               print ("<td>$riga[des_domanda]</td>");
               print ("<td><input type='radio' name='r$indice' value='A'></td>"); 
               print ("<td><input type='radio' name='r$indice' value='B'>"); 
               print ("<td><input type='radio' name='r$indice' value='C'></td>"); 
               print ("</tr>");   

            }
            mysqli_close($connessione);   
                           
      echo("</table>");
      echo "<input type='hidden' name='tot_domande' value='$indice' />";
      print ("<input type=submit value=Invia risposte>");
      print   "</form>";
   
   }

?>

Però così non fai comparire le risposte, solo i tre radiobutton, compare la domanda e le tre colonne a,b,c in base a cosa l'utente seleziona la risposta giusta?

inserisci.php

<?php
$tot_domande = $_POST['tot_domande'];
$risposte = array();

for ($indice=1;$indice<=$tot_domande;$indice++){
      $risposte[$indice-1] = $_POST['r'.$indice];
}
//resto del codice
?>

Con questo codice hai un array con tutte le risposte date, attenzione che l'array $risposte parte da 0 e quindi la risposta alla domanda 1 è in $risposte[0].

risposto 9 anni fa
LonelyWolf
X 0 X

grande ! grazie !

risposto 9 anni fa
fonzenigge
X 0 X

Prego.

risposto 9 anni fa
LonelyWolf
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda