webForumDet fria alternativet

frågeformulär

2 svar · 270 visningar · startad av storebror_1984

storebror_1984Medlem sedan dec. 2003244 inlägg
#1

hej! Jag är kass på php, html och SQL och kanske kan nån hjälpa mig med följande problem:

Jag vill bygga en sida med frågor. 20 frågor hämtas ur en pgsql-tabell och skrivs ut. Under varje fråga finns 5 svarsalternativ (radio buttons) där det rätta svaret är hämtat ur samma tabell som frågan. De övriga svarsalternativen är hämtade ur en tabell innehållande enbart felaktiga svar.

En rad ur frågetabellen ser ut så här: id fråga svar
och tabellen med de felaktiga svaren: id felaktigt_svar

I tabellen med felaktiga svar finns minst 4 rader där id motsvarar id i frågetabellen.

Min fråga är nu hur jag skall göra för att kunna "rätta" svaren.

Dvs. Jag vill skicka med samtliga svar, köra dom mot tabellen och kolla vilka svar som är rätt respektive fel.

Om någon mot förmoden hänger med i mina diffusa tankegångar får ni gärna hjälpa mig :)

emgeeMedlem sedan mars 20043 inlägg
#2

Här har du ett exempel på hur jag skulle göra...
Enjoy.

<?php
	// Först måste du ju koppla upp dig mot databasen, men det löser du säkert finfint själv.
	include("databaskoppling.php");

	// Låt säga att du har 5 frågor... Här överför vi dem till en array-variabel
	// Var noga med att dina radiobuttons ger hela frågans text som värde. ex.
	// Vilken är din favoritfärg?<br>
	// <input type="radio" value="Vit"> Vit<br>
	// <input type="radio" value="Svart"> Svart<br>
	// Var också noga med att formuläret använder method="post".

	$svar = array(
		1 => $_POST['fraga_1'],
		2 => $_POST['fraga_2'],
		3 => $_POST['fraga_3'],
		4 => $_POST['fraga_4'],
		5 => $_POST['fraga_5']
	); 
		

	// Sen loopar vi igenom alla exempelsvar, hämtar info från databas
	// och jämför de båda
	// key($svar) innehåller svarets IDnummer.
	while ($ettsvar = current($svar)) {
		$SQL = "select * from frageTabell where ID = " . key($svar);
		$fragetabell = mysql_query($SQL) or die(mysql_error());
		if ($ettsvar == $fragetabell[1]) {
			$resultat[key($svar)] = true;
		} else {
			$resultat[key($svar)] = false;
		}
		next($svar);
	}
	// Nu finns ett värde sparat för varje svar du skickat in, i variablen $resultat.
	// Här skriver vi ut resultaten:

	while ($ettresultat = current($resultat)) {
		echo "Fråga " . key($resultat) . ": ";
		if ($ettresultat)
			echo "Rätt!<br>\n";
		else
			echo "Fel!<br>\n";
		next($resultat)
	}
?>

Har inte testat detta fullt ut, eftersom jag inte orkar sätta upp en databas och så. Är det nåt jag skrivit fel i SQL-delen, rätta mig gärna.
Hoppas det funkar.

storebror_1984Medlem sedan dec. 2003244 inlägg
#3

Testade kodstycket men får följande fel:
Warning: Variable passed to current() is not an array or object

Dessutom förstår jag inte riktigt hur min kod för utskriften av frågorna och radioknapparna skall se ut för att tillgodose koden som rättar. Men jag är som sagt väldigt kass på php. Om du vill förklara koden lite utförligare så tom jag förstår vore jag ytterst tacksam :)

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)