Het gebruik maken van RAND()

Status
Niet open voor verdere reacties.

wesleytjhu

Gebruiker
Lid geworden
12 jan 2010
Berichten
30
Hallo allemaal,

Ik probeerde een reken opdracht te maken dat de PHP code automatisch een getal aanmaakt tussen de 1 en 10. Hiervoor gebruikte ik de code
PHP:
rand(1, 10)
Maar deze blijkt niet de gegevens te onthouden, want wanneer ik op mijn submit knop klikt maakt hij weer een nieuw getal aan.

Wat ik wil dat de PHP code doet is:
Op de pagina wordt weergeven 2 getallen die d.m.v. de rand functie worden aangemaakt en als volgt op de pagina weergeeft

10 + 1 = (De bezoeker moet dan het antwoord in typen)


PHP:
<?php

	// De 2 getallen worden "random" verzonnen en aangemaakt tussen de 1 en 10
	$a = rand(1, 10);
	$b = rand(1, 10);
	
	// Puntenteller
	$score = 0;
	
	// 'Som' is gelijk aan 'a + b'. Deze moet gelijk zijn aan 'result'
	$som = $a + $b;
	
	// Lees result
	echo "<html><head></head><body>";
	
	echo "<form method='post' action=''>";
	echo "Wat is $a + $b <br />";
	echo "Antwoord: <input name='result'><br />";
	echo "<input type='submit' name='submit' value='Verstuur'>";

	echo "</form></body></html>";
	
	// Variable 'result' aanmaken. Deze moet gelijk zijn aan 'som'
	if(!empty($_POST["submit"]))
		{
			$result = $_POST["result"];
			echo "Het getal <b>$result</b> ";
			
		//Nakijken van het PHP berekende antwoord en 'result'. Als het gelijk is dan is het antwoord goed
		if ($result == $som)		// Als antwoord goed is
			{
				echo "is het juiste antwoord! <br />";		// Dit word op het venster weergeven
				$score = $score + 1;	// Als het antwoord goed is krijgt de gebruiker 1 punt
				echo "Je huidige score is <b>$score</b>";
			}
		else		// Als antwoord fout is
			{
				echo "is helaas niet juist. Het antwoord moest <b>$som</b> zijn. <br />";		// Dit word op het venster weergeven
				echo "Je hebt <b>$score</b> punt(en) behaald";
				}
			
		}
		
	else
		{
		}
?>

Ik hoop dat het een beetje overzichtelijk is.

Met vriendelijke groet,

Wesley H.
 
De beste manier om getallen onthouden te laten worden tussen verschillende pagina's is gebruik te maken van sessies mbv session_start() en de $_SESSION array:

PHP:
<?php
session_start(); // geeft aan dat de sessie van de gebruiker geladen moet worden; moet ALTIJD bovenaan je pagina

if( isset( $_SESSION['a'] ) ) {
  echo 'Op de vorige pagina had je: ' . $_SESSION['a'] . '<br />'; 
}


echo 'Je nieuwe getal is: ';
$a = rand(1, 10);
echo $a;

$_SESSION['a'] = $a;

Kijk maar even of je er zo zelf uit komt ;) Daar leer je het meeste van.
 
Bedankt voor de reactie @Frats,

Na het door nemen van de PHP code die je hierboven heb doorgestuurd loop ik tegen een enorme muur op. Dat is namelijk dat ik het nog niet onder de knie hebt hoe SESSIONS worden gebruikt.
Zou jij mij misschien hierin verder kunnen-en of willen helpen?

Ik dacht dat dit wel zou moeten werken, maar hoe roep ik dit aan op een andere pagina? Of wat bedoelde je exact met je vorige bericht?
PHP:
	session_start();
	
		if( isset( $_SESSION['a'] ) ) 
			{
			  echo "Op de vorige pagina had je: " . $_SESSION['a'] . "<br /><br />"; 
			}
			$a = rand(1, 10);
			 
			$_SESSION['a'] = $a;
		
		
		if( isset( $_SESSION['b'] ) ) 
			{
			  echo "Op de vorige pagina had je: " . $_SESSION['b'] . "<br /><br />"; 
			}
			$b = rand(1, 10);			 
			$_SESSION['b'] = $b;

Alvast bedankt!

Met vriendelijk groet,


Wesley H.
 
Als je een $_SESSION aan maakt, dan slaat de server dat op voor jou. Zolang als je je browser niet sluit of de $_SESSION unset dan zal die $_SESSION voor jou bewaart blijven.
En op elke pagina die je start met session_start() zullen die gegevens toegankelijk zijn.
En in een session kun je een variabele opslaan, vb $_SESSION['auto'] = 'Ford';
Ook kun je het als een array gebruiken vb.
$_SESSION['user']['naam']['voornaam'] = "Jan";
$_SESSION['user']['naam']['achternaam'] = "Janssen";
$_SESSION['user']['email'] = "jan@mijnmail.com";
Zelfs kun je je database verbinden er in opslaan.

En als je een session wilt verwijderen.... unset($_SESSION['user']; session_destroy(); alleen dit verwijderd alles wat je in je session hebt opgeslagen.
http://www.w3schools.com/PHP/php_sessions.asp
http://www.php.net/manual/en/function.session-start.php
http://www.websitemaken.be/index.php?page=show_item&id=344
 
Bedankt voor jullie hulp maar, ik snap er nu helemaal niks meer van!
Ik ga kijken of mijn docent mij morgen mij hierin beter kan helpen en fatsoenlijk uitleggen totdat ik het 100% snap.

Mocht dit niks worden dan val ik hier terug op de post en mocht het wel iets worden zal ik het eindresultaat hier posten.

Met vriendelijke groet,

Wesley H.
 
Hallo allemaal,

Ik ben even helemaal opnieuw begonnen ik heb nu dit:

quizrekenen2.php
PHP:
<?php
	// Hier word een sessie gestart
	session_start();	
	

	if(!empty($_POST["submit"]))
	{
	
		if( !isset( $_SESSION['puntenteller'] ) ) 
		{
			$_SESSION['puntenteller'] = 0;
			$_SESSION['vragenteller'] = 0;
			echo "Kent hem niet";
		}
	
	
		include('nakijken.php');
		nakijkenber();

	}
	
	if ( $_SESSION['vragenteller'] < 20)
	{
		// Bepalen van nieuwe som 
		// Aanmaken nieuwe som A
		$a = rand(1, 10);		 
		$_SESSION['a'] = $a;
		
		// Aanmaken nieuwe som B
		$b = rand(1, 10);			 
		$_SESSION['b'] = $b; 
		
		// Aanmaken sessie antwoord
		$antwoord = $a + $b;			 
		$_SESSION['antwoord'] = $antwoord;
	


		// Lees result
		echo "<html><head></head><body>";
		
		echo "<form method='post' action=''>";
		echo "Wat is ".$_SESSION['a']." + ".$_SESSION['b']." <br />";
		echo "Antwoord: <input name='result'><br />";
		echo "<input type='submit' name='submit' value='Verstuur'><br /><br />";
		print "Van de 20 vragen heb je er op dit moment " . $_SESSION['puntenteller'] . " goed";
		echo "</form></body></html>";
	}
	else
	{
		echo "JE HEBT HET GEHAALD JEEEJ !!!";
	}
?>

nakijken.php
PHP:
<?php

	function nakijkenber()
	{
		// Uitkomst controleren
		// Controleren van A
		if( isset( $_SESSION['a'] ) ) 
			{

			}
		// Controleren van B			
		if( isset( $_SESSION['b'] ) ) 
			{
			
			}
		// Controleren van Antwoord
		if( isset( $_SESSION['antwoord'] ) ) 
			{

			}		
		// Controleren van Ingegeven antwoord
		$result = $_POST['result'];
		
		// Controleren van de 2 getallen of deze gelijk zijn
		if ($_SESSION['antwoord'] == $result)
			{
				$puntenteller = $_SESSION['puntenteller'];
				$puntenteller = $puntenteller + 1;
				$_SESSION['vragenteller']=$_SESSION['vragenteller']+1;
				$_SESSION['puntenteller'] = $puntenteller;			
			}
		// Zo niet dan
		else
			{
				$_SESSION['vragenteller']=$_SESSION['vragenteller']+1;
			}
	}
?>

Maar ik loop nu tegen een probleem aan, dat is namelijk dat, wanneer de bezoeker deze pagina voor het eerst opent, dan krijg je 2 meldingen dat er bij 2 plaatsen geen waarde is ingevoerd of onbekend zijn.

Is het mogelijk om deze error te voorkomen?

Met vriendelijke groet,

Wesley H.
 
je moet eerst kijken of de variable wel bestaan.
Dit doe je met isset()

dus
if(isset($string) {
//doe dit
//bv. $waarde1 = $string
} else {
//doe wat anders
//bv. $waarde = '0
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan