test cu intrebare si raspuns prin checkbox a, b, c

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
ionatan
Mesaje:94

test cu intrebare si raspuns prin checkbox a, b, c

Salutari!
vreau sa fac un sistem cu intrebari si raspunsuri prin bifare checkbox
am reusit si e ok, in felul urmator:
intrebarea-1.php

Cod: Selectaţi tot

 Cum s-a numit fratele lui Petru??<br /><br />

   <form action="verifica-1.php" method="post" onsubmit="return validar(this)">
     <input type="checkbox" name="checkbox1" value="1"/> a) Ioan <br />
     <input type="checkbox" name="checkbox2" value="1"/> b) Andrei <br />
     <input type="checkbox" name="checkbox3" value="1"/> c) Iacov <br />
      <input type="submit" name="submit" id="submit" value="Raspuns final" />
   </form>
iar in verificare-1.php

Cod: Selectaţi tot

 <?
 $mi_conexion=mysql_connect('  ','      ','     ') or die('Nu ma pot conecta!');
      mysql_select_db( '     ',$mi_conexion);

	 
       if (isset($_POST['checkbox2']) && $_POST['checkbox2'] == '1')  { 
	    
		  $query="UPDATE `users`  SET `punctaj`=`punctaj`+1 WHERE `name`='". $_SESSION['username']. "'";
		     $result=mysql_query($query);
         
			echo '<meta http-equiv="Refresh" content="0;url=intrebarea-1.php"><script type="text/javascript">alert("Raspuns Corect");</script>'; 
			 
       }  

	   
      else {
     	
		   $query="UPDATE `users`  SET `punctaj`=`punctaj`-1 WHERE `name`='". $_SESSION['username']. "'";
		     $result=mysql_query($query);
			 
			
				echo '<meta http-equiv="Refresh" content="0;url=intrebarea-1.php"><script type="text/javascript">alert("Raspuns Incorect");</script>'; 
			 
			 
	  }
	  
	
	  
?>
As vrea sa va rog imi dati o idee...
pentru a nu face o gramada de pagini .php(intrebarea-1-raspuns-1, intrebarea-2, raspuns-2... etc) se poate face un tabel cu cateva coloane id, intrebarea, a, b, c, raspunscorect, etc, ??? iar pe pagina intrebare.php in functie de un id sa fie preluata intrebarea si cu tot ce trebuie ? iar pagina verificare.php sa preia si sa verifice ceea ce trebuie?? ma refer cu un singur cod schimband doar id-ul sa prelueze din baza de date.. de ex daca am 50 intrebari $id="sa imi genereze un numar aleatoriu de la 1 la 50"; ca la fiecare refresh sa fie alta intrebare
Nu stiu daca m-am expilcat destul de bine. Va multumesc pentru intelegere.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

ionatan Mesaje:94
Salut, am reusit sa avansez un pic.... am facut un tabel cu cateva coloane... in pagina intrebare.php formularul cu ccele 3 input intrebarea, cele 3 raspunsuri (a,b,c), si value le extrag din bd, acuma ce nu reusesc .. in verificare.php, sa verific valoarea de la checkbox-uri (value) cu o valoare dintr-o coloana din baza de date. adica daca value e egal cu rezultatul corect.
in verificare.php am asa

Cod: Selectaţi tot

 $raspuns ="andrei";

if(isset($_POST['checkbox1']) && $_POST['checkbox1'] == $raspuns || isset($_POST['checkbox2']) && $_POST['checkbox2'] == $raspuns || isset($_POST['checkbox3']) && $_POST['checkbox3'] == $raspuns  ) 
         { 
	    echo '<meta http-equiv="Refresh" content="0;url=intrebare.php"><script type="text/javascript">alert("Raspuns Corect");</script>'; 
		 }  
   else {
     	echo '<meta http-equiv="Refresh" content="0;url=intrebare.php"><script type="text/javascript">alert("Raspuns Incorect");</script>'; 
		 }
raspunsul il verifica din $raspuns , si e ok merge bine, dar cum spuneam as vrea ca raspunsul Andrei sa fie preluat din baza de date
Multumesc
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje:4343
Salut
Depinde cum ai raspunsurile adaugate in baza de date, asociate cu intrebarea respectiva.
Faci un select in baza de date, cu o conditie WHERE care sa preia randul cu acea intrebare /raspuns, apoi valoarea de la coloana cu raspunsul o retii in variabila $raspuns.

ionatan Mesaje:94
Buna ziua,
In baza de date am facut un tabel cu 6 coloane: id, intrebarea, a, b, c, raspunscorect valorile din a,b,c sunt preluate de value din checkbox.
Am tot cautat pe forum si in site sa gasesc ceva exemple cum se retine o valoare dintr-o coloana intr-o vaeiabila.
E total gresit asa :

Cod: Selectaţi tot

$raspuns= "SELECT `raspunscorect` FROM `concurs` WHERE `id`='1' LIMIT 1";
echo $raspuns ;
apoi sa pot pune

Cod: Selectaţi tot

if(isset($_POST['checkbox1']) && $_POST['checkbox1'] == $raspuns || 
va rog, dati-mi cateva indicii,
multumesc
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje:4343
Exemplu cum se poate retine intr-o variabila (aici $raspuns) datele selectate dintr-o coloana de pe un rand din tabel MySQL.

Cod: Selectaţi tot

$raspuns = '';
$sql= "SELECT `raspunscorect` FROM `concurs` WHERE `id`='1' LIMIT 1";
$result= mysql_query($sql);
if (mysql_errno()) {
    echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (mysql_num_rows($result) == 0) {
    echo '0 rezultate';
}
else {
    while ($rand = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $raspuns = $rand['raspunscorect'];
    }
}

keenbr Mesaje:44
Eu te-as sfaui sa faci in felul urmator.
1. Iti faci un panou de administrator (pentru adaugarea datelor mai usor)
2. In baza de date faci tabel de forma: id | intrebare | raspuns | raspunsuri
3. la randul "raspuns", vei completa cu raspunsul corect. Randul "raspunsuri" il faci blob si il completezi de forma: raspuns1:::raspuns2:::raspuns3:::raspuns4
4. De la raspunsuri, vei lua cu explode raspunsurile ce vor fi afisate in pagina. La toate intrebarile o sa avem 4 raspunsuri (seamana a "vrei sa fii milionar" :D ) deci v-a fi cv de forma: $raspunsuri = explode(":::",$query); $raspuns1 = $raspunsuri[0]; raspuns2 = $raspunsuri[1]; $raspuns3 = $raspunsuri[2]; $raspuns4 = $raspunsuri[3];
5. Dupa ce ai selectat litera a, b, c, d , trimiti datele la un fisier impreuna cu raspunsul dat. Raspunsul primit il compari cu raspunsul corect ce se afla in baza de date. Daca este identic, este corect. daca nu, este gresit.