problema con form ed input

loreberti10

Utente Attivo
22 Set 2012
43
0
0
Ciao a tutti, sono ancora io... :D
Ho forse l'ultimo prblema che non riesco a risolvere, allora qualche giorno fa mi era stata consigliata una funzione per restituire dei risultati da un database, ora io vi vorrei chiedere una cosa, nel database ho una tabella con una serie di record, ogni record contiene una serie di input con un <h2></h2> come titolo ed un id identificativo
Per fare un esempio:
id = 1,
Domande = <h2>Quale di questi filosofi propose per primo la dottrina delle idee?</h2>
<input type="radio" value="Giusta,Platone" name="scelta[]">Platone</input> <br>
<input type=radio value="Sbagliata,Aristotele" name="scelta[]">Aristotele </input> <br>
id = 2,
Domande = <h2>In quale lingua sono stati scritti originariamente gli <i>Atti degli apostoli</i>? </h2>
<input type="radio" value="Giusta,Greco" name="scelta[]">Greco</input> <br>
<input type="radio" value="Sbagliata,Latino" name="scelta[]">Latino</input> <br>

ecc.
In pratica io avevo pensato di stampare tutti i risultati dentro ad un form in maniera che mi venisse una sorta di questionario, però mi sono venuti fuori dei problemi ovvero
1) vorrei che per ogni id si potesse scegliere una sola opzione ma se inserisco tutte le domande in un form solo, con gli input type radio, mi da la scelta unica del form ad esempio mi fa scegliere solo Greco(riferendomi ad un potenziale questionario che ho posto sopra)
2) come farei una volta messo il submit o il bottone a gestire i risultati? cioè potrei mettere nella tabella corrispondente alle risposte questi risultati in record diversi?
cioè
avere una tabella risposte di questo genere:
id 1, risposta Giusta,Platone
id 2, risposta Sbagliata, Greco

e quindi non memorizzato tutto in un record?
 
ciao
immagino che sia la domanda che il valore della risposta provengano da una tabella del db, per cui potresti provare a fare
PHP:
<?php
echo "Domande = <h2>Quale di questi filosofi propose per primo la dottrina delle idee?</h2>";
echo "<input type=\"radio\" value=\"Giusta,Platone\" name=\"scelta[$id][]\">Platone</input> <br>";
echo "<input type=\"radio\" value=\"Sbagliata,Aristotele\" name=\"scelta[$id][]\">Aristotele </input> <br>";
//ecc....
?>
 
ciao
immagino che sia la domanda che il valore della risposta provengano da una tabella del db, per cui potresti provare a fare
PHP:
<?php
echo "Domande = <h2>Quale di questi filosofi propose per primo la dottrina delle idee?</h2>";
echo "<input type=\"radio\" value=\"Giusta,Platone\" name=\"scelta[$id][]\">Platone</input> <br>";
echo "<input type=\"radio\" value=\"Sbagliata,Aristotele\" name=\"scelta[$id][]\">Aristotele </input> <br>";
//ecc....
?>

Grazie per la risposta, ma quindi come potrei fare però per permettere all'utente che gli viene proposta la serie di domande, di rispondere ad un solo radio per domanda quindi test?
Cioè io non so se ho fatto bene, ma inpratica nella pagina di stampa dei risultati, prima della stampa ho scritto
<form method="POST" action="pagina.php" >
e dopo la stampa
<input type="submit">
</form>

Facendo così in pratica si forma un solo form, come posso permettere all'utente per ogni id, selezionare un solo risultato?! :/
 
ciao
i radio con lo stesso nome o è sel uno o l'altro quindi (es) il php ti trasforma il tutto in html e quindi è come se tu avessi

HTML:
<form ......>
<!--d = 1,-->
Domande = <h2>Quale di questi filosofi propose per primo la dottrina delle idee?</h2>
<input type="radio" value="Giusta,Platone" name="scelta[1][]">Platone</input> <br>
<input type=radio value="Sbagliata,Aristotele" name="scelta[1][]">Aristotele </input> <br>
<!--d = 2,-->
Domande = <h2>In quale lingua sono stati scritti originariamente gli <i>Atti degli apostoli</i>? </h2>
<input type="radio" value="Giusta,Greco" name="scelta[2][]">Greco</input> <br>
<input type="radio" value="Sbagliata,Latino" name="scelta[2][]">Latino</input><br>
</form>
quindi per scelta[1] o selezioni la giusta o la sbagliata, analogamente per id=2 scelta[2]
 
ciao
i radio con lo stesso nome o è sel uno o l'altro quindi (es) il php ti trasforma il tutto in html e quindi è come se tu avessi

HTML:
<form ......>
<!--d = 1,-->
Domande = <h2>Quale di questi filosofi propose per primo la dottrina delle idee?</h2>
<input type="radio" value="Giusta,Platone" name="scelta[1][]">Platone</input> <br>
<input type=radio value="Sbagliata,Aristotele" name="scelta[1][]">Aristotele </input> <br>
<!--d = 2,-->
Domande = <h2>In quale lingua sono stati scritti originariamente gli <i>Atti degli apostoli</i>? </h2>
<input type="radio" value="Giusta,Greco" name="scelta[2][]">Greco</input> <br>
<input type="radio" value="Sbagliata,Latino" name="scelta[2][]">Latino</input><br>
</form>
quindi per scelta[1] o selezioni la giusta o la sbagliata, analogamente per id=2 scelta[2]

Grazie sono riuscito a dividere con gli id come mi hai detto, ora però c'è un problema sembra che alla fine non mi invii nulla,
posto il codice dell'invio e della stampa.

PHP:
<?php
session_start();

$sez = $_GET['sezione']; ?>
 <form class="ins" method="POST" action="Verifica2.php?sezione=<?echo $sez;?>">
 
 
 <?
include ('database.php'); 
$q = "SELECT SottoCategoria FROM Admin WHERE Admin.Sezione = '".$sez."' GROUP BY SottoCategoria"; 
$res = sqlite_query($database,$q); 

$array = array(); 
while ($row = sqlite_fetch_array($res)) { 
    $query = "SELECT * FROM Admin WHERE SottoCategoria = '" . $row['SottoCategoria'] . "' ORDER BY RANDOM() LIMIT 2"; 
    $result = sqlite_query($database,$query); 
    while ($r = sqlite_fetch_array($result)) { 
        $array[] = $r; 
    } 
} 
// per estrarre i dati 
echo "<table border='1'>"; 
echo "<tr>"; 
echo "<td>Id</td>"; 
echo "<td>Sezione</td>"; 
echo "</tr>"; 
foreach ($array as $value) { 
    echo "<tr>"; 
    echo "<td>" . $value['id_test'] . "</td>"; 
    $sez = $value['Sezione'];
	$idTest2 = $value['id_test'];
	
    echo "<td>" . $value['SottoCategoria'] . "</td>"; 
	echo "<td>" . $value['Test_Question'] . "</td>";
    echo "</tr>"; 


 
 $User = $_SESSION['nome'];
  $a=time();
  $b = date('d M y', $a);

  
  
  if((isset($_REQUEST['invia']))){
  $Risposta=$_REQUEST['scelta'];
  
  

  include("database.php");
if ($database==FALSE) {
      echo "Errore nella connessione al DB: " . mysql_error();
   }else{
  
  $conto=count($Risposta);
   for($i=0; $i < $conto; $i++)
    {
	$corrente = sqlite_escape_string($Risposta[$i]);  
		  
        if(!empty($corrente)) {
		
   
   $queryInserimento= "INSERT INTO RispostaUtente ('id_testUtente', 'NickNameRisposta', 'Data', 'Answer', 'SezioneRisposte') VALUES('$idTest2', '$User', '$b', '$corrente', '$sez')";
   $risultatoRisposta=sqlite_query($database,$queryInserimento);
   if ($risultatoRisposta==FALSE) {
	       echo "Errore nella query: " . sqlite_error();					
	    } 
		}
		}
		 }
		   
		
		}
		

	
	
	
	} 
echo "</table>"; 
?>
<input type="submit" name="invia"/>
</form>
 
Ultima modifica di un moderatore:
ciao
non usare
PHP:
  if((isset($_REQUEST['invia']))){
  $Risposta=$_REQUEST['scelta'];
ma
PHP:
  if((isset($_POST['invia']))){
  $Risposta=$_POST['scelta'];
poi metti un var_dump()

PHP:
  if((isset($_POST['invia']))){
  $Risposta=$_POST['scelta'];
var_dump($Risposta);
vedi così che $risposta non è un valore unico ma un array contenente le varie risposte in pratica (se hai usato id 1 e 2)

$Risposta['1'] quello che hai risposto alla I° domanda
$Risposta['2'] quello che hai risposto alla II° domanda ecc...
 
Grazie mille! sono riuscito a risolvere. Ho fatto qualche funzione in php ma comunque il risultato è giusto.
Grazie ancora! ciao a tutti!:)
 

Discussioni simili