Door
Sander
op 11-10-2005 13:23
gewijzigd op 11-10-2005 13:26
757 views
Hallo allemaal,
Ik heb wel wat ervaring met php maar wat ik nu graag wil gaat eigenlijk boven mij pet. Vandaar dat ik gezocht heb naar een php script voor dit spel. helaas heb ik dit niet kunnen vinden. Vandaar mijn post hier.
Ik ben op zoek naar een trouwspel waarbij bezoekers een vraag voorgesteld krijgen. Nadat ze hun keuze bepaald hebben..krijgen ze te zien of het goed of fout is en wat het antwoord is.
Nadat alle vragen gesteld zijn, zou het leuk zijn als er een overzicht komt met hoeveel vragen ze goed hebben. En een top 10 ofzo met de mensen. (ze moeten dus ook hun naam kunnen invoeren.) Daarnaast is het leuk als ze dan tussen een bepaalde aantal goede antwoorden zitten dat ze dan een tekst krijgen. bijv:
van de 10 vragen max3 goed: "ben jij een vriend van ons?"
van de 10 vragen max 8 goed: "jij bent een echt vriend
etc etc...
Kent iemand zo'n soort script..of misschien vind iemand het leuk om zo'n script te maken. Misschien een eerste opzet dat ik het verder kan een beetje kan uitwerken.
Dat is dus het probleem :)...ik zou niet weten hoe te beginnen. Ik heb met een ander script ook een opzet van iemand anders afgemaakt en ik heb daar veel van geleerd.
Ik hoop dat iemand mij weer een opze kan verschaffen zodat ik die weer kan afmaken naar mijn wensen.
Als ik een script wil maken, dan maak ik eerst altijd een 'ruwe structuur'. Alle dingen die moeten kunnen zet ik dan op papier.
Hier is een opzetje voor het Trouw spel. Het enige wat je hoeft te doen is de antwoorden veranderen in je eigen antwoorden en een formuliertje maken. De top 10 moet je ook zelf scripten.
Je kan eventueel ook nog een cookie op de PC van degene die het invult achterlaten met daarin een tekenreeks die betekent dat hij/zij dit al heeft gedaan.
De volgende code kun je uiteraard ook anders opzetten ;)
<?php
if ($antwoord['1'] == $ingevuld['1']) {
$aantalgoed++;
}
if ($antwoord['2'] == $ingevuld['2']) {
$aantalgoed++;
}
if ($antwoord['3'] == $ingevuld['3']) {
$aantalgoed++;
}
if ($antwoord['4'] == $ingevuld['4']) {
$aantalgoed++;
}
if ($antwoord['5'] == $ingevuld['5']) {
$aantalgoed++;
}
?>
Om de code in te perken zou ik wel een for-loopje maken.
<?php
for ($i = 1; $i < 6; $i++)
{
if ($antwoord['$i'] == $ingevuld['$i'])
{
$aantalgoed++;
}
}
?>
Ik weet het, misschien een mierenneuker, maar is toch minder typewerk ;)
@Joost: Ik had inderdaad beter een for-loopje kunnen gebruiken.
Maar volgens mij wil Sander juist zelf zo'n script maken, en niet eentje van Internet afhalen.
// Bereken de score van de gebruiker
if($_POST['stuurIn'])
{
// Kijk de vragen na
for($a=0; $a<15; $a++)
{
// Kijken of de vraag goed is beantwoord
if($_SESSION['VraagAntwoord'][$a]['antw'.$_SESSION['VraagAntwoord'][$a]['antwoord'].''] == $_POST['antw' .$a. ''])
$goed ++; else $fout ++;
}
// Melding van het resultaat van de deelnemer
echo "<span class='questionHead'>Beste " .$_POST['gebruikersnaam']. ",</span><br><br>";
echo "Je hebt <span class='questionHead'>" .$goed. "";
// Het juist printen van vraag en vragen
if($goed == 1)
{
echo " vraag ";
}
else
{
echo " vragen ";
}
echo "</span> goed en <span class='questionHead'>" .$fout. "";
// Het juist printen van vraag en vragen
if($fout == 1)
{
echo " vraag ";
}
else
{
echo " vragen ";
}
echo "</span> vragen fout beantwoord. Om precies te zijn heb je dus ";
// Juist printen van het % aantal als de deelnemer niks goed heeft
if(!$goed == 0)
{
$printG = $goed;
}
// Juist printen van het % aantal als de deelnemer niks goed heeft
if(!$fout == 0)
{
$printF = $fout;
}
echo "" .$printG. "van de vragen goed en " .$printF. "van de vragen fout beantwoord. Dit betekend dat je als eindcijfer een <span class='questionHead'>" .$goed. "</span> heb gescoord.<br><br>";
// Het toevoegen van de naam van de deelnemer en zijn resultaat in de database
$QueryOntwerp = "INSERT INTO resultaten VALUES('', '".$_POST['gebruikersnaam']."', '" .$goed. "')";
mysql_query($QueryOntwerp) or die(mysql_error());
// Het printen van de beoordeling van de deelnemer
echo "<span class='questionHead'>Je beoordeling:</span> ";
// Als de deelnemer er 5 of minder goed heb
if($goed <= 5)
{
echo "Nouw " .$_POST['gebruikersnaam']. ", je resultaat is niet zo best je moet echt nog meer aan je Hudito JA1 kennis doen.";
}
elseif($goed >= 6 && $goed <= 8)
{
echo "Tsja, " .$_POST['gebruikersnaam']. ", je Hudito JA1 kennis is matig...";
}
// Als de deelnemer alles goed heeft
elseif($goed == 15)
{
echo "Gefeliciteerd " .$_POST['gebruikersnaam']. ", Een echte Hudito JA1 kenner! Je hebt geen 1 fout gemaakt.";
}
// Overzicht van de vragen + antwoorden van de deelnemer en de juiste antwoorden
echo "<br><br><br><span class='questionHead'> Hier volgt een overzicht van je resultaat.</span><br><br>";
// Haal vraag 1 tot 10 uit de array
for($a=0; $a<15; $a++)
{
// Kijken of hij goed is beantwoord
if($_SESSION['VraagAntwoord'][$a]['antw'.$_SESSION['VraagAntwoord'][$a]['antwoord'].''] == $_POST['antw' .$a. ''])
{
$class = "green";
}
else
{
$class = "red";
}
// Printen van melding als er geen antwoord is opgegeven
if($_POST['antw' .$a. ''] == "")
{
echo " Geen antwoord ingevuld.";
}
else
{
echo $_POST['antw' .$a. ''];
}
echo "</td>";
echo "<td style='width:100px;'>";
// Het tonen van een krul of kuis
if($_SESSION['VraagAntwoord'][$a]['antw'.$_SESSION['VraagAntwoord'][$a]['antwoord'].''] == $_POST['antw' .$a. ''])
{
echo "<img src='img/correct.jpg'>";
}
else
{
echo "<img src='img/incorrect.jpg'>";
}
echo "</td></tr>";
echo "</table><br>";
}
}
// Als er nog niet op bereken score is gedrukt dan...
else
{
// Het ontwerpen van de query
$QueryOntwerp = "SELECT vragen.vraag,
vragen.antwoord,
antwoorden.a,
antwoorden.b,
antwoorden.c,
antwoorden.d
FROM vragen, antwoorden
WHERE vragen.id = antwoorden.id
ORDER BY rand()
limit 0,15
";
// Voer de query uit
$QueryResultaat = mysql_query($QueryOntwerp) or die(mysql_error());
// Zet de teller op 1
$count = 1;
// Begin tags van het form
echo "<form action='quiz.php' method='post' name='quiz' onsubmit='return CheckVelden();'>";
// Print de vraag
echo "<span class='questionHead'>Vul eerst je naam in en maak daarna de vragen.</span><br>";
// Defineer een nieuwe array voor de vragen en antwoorden
$VraagAntwoordArray = array();
// Loop door al de resultaten
while ($show = mysql_fetch_array($QueryResultaat))
{
// Print het vraag nr en de vraag zelf
echo "<span class='questionHead'>" .$count. ") " .$show["vraag"]. "</span><br>";
// Het samenstellen van een juist vraag nr want een array begint bij 0 ipv 1
$CountAntw = $count-1;
// Het opslaan van de text van de 4 antwoorden
$resultaat['antwa'] = $show['a'];
$resultaat['antwb'] = $show['b'];
$resultaat['antwc'] = $show['c'];
$resultaat['antwd'] = $show['d'];
// Voeg het JUISTE resultaat toe aan de array
array_push($VraagAntwoordArray, $resultaat);
// Zet de JUISTE resultaat array in een session
$_SESSION['VraagAntwoord'] = $VraagAntwoordArray;
// Klaar stomen van het volgende vraag nummer
$count ++;
}
// De knop om je antwoorden in de sturen
echo "<input type='submit' onclick='javascript:CheckVelden();' value='Stuur je antwoorden in' name='stuurIn'>";
// Eind tag van het form
echo "</form>";
}
?>
JS:
/**
* Controleert of de verplichte velden zijn ingevuld
*
* @return true als al de velden zijn ingevuld anders false
*/
function CheckVelden()
{
// Als het veld gebruikersnaam leeg is dan
if((document.quiz.gebruikersnaam.value == ".......................................") || (document.quiz.gebruikersnaam.value == ""))
{
alert("Je moet eerst je naam invullen voordat je de antwoorden in kan sturen.\n");
return false;
}
return true;
}
/**
* Status blak text
*
* defaultstatus De text die in de status balk wordt geprint
*/
window.defaultStatus = "Hudito Jongens A1";
Database shizzle :
CREATE TABLE `vragen` (
`id` int(255) NOT NULL auto_increment,
`vraag` varchar(255) NOT NULL default '',
`antwoord` varchar(255) NOT NULL default '',
UNIQUE KEY `id` (`id`)
)
CREATE TABLE `antwoorden` (
`id` smallint(11) NOT NULL auto_increment,
`a` varchar(255) NOT NULL default '',
`b` varchar(255) NOT NULL default '',
`c` varchar(255) NOT NULL default '',
`d` varchar(255) NOT NULL default '',
UNIQUE KEY `id` (`id`)
)