FOK!forum / Digital Corner / [PHP] Random ID probleem
Pizza_Shooterzondag 1 februari 2004 @ 16:49
Ik heb dus een script gebouwd wat uit de database een ID vist waar een naam, symbool en een valentie bijhoren. Dan is het dus de bedoeling dat ie @ random een ID naar boven haalt, daar de naam van geeft en jij dan de symbool en de valentie moet invullen. Als testje zeg maar.
php:
<?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<
html>
<
head>
<
title>Elektrovalenties - Scheikunde</title>
</
head>
<
body bgcolor="">
<?
php
error_reporting
(E_ALL);

include(
'dbconfig.php');

// Maak verbinding met MySQL server
@mysql_connect($dbhost, $dbuser, $dbpassword) or die("Could not connect to database");  
@
mysql_select_db("$dbname") or die("Unable to select database $dbname");
?>

<b>Oefending</b>

<form method="post" action="index.php">
<?

$rand_id
= rand(0, 17);

$qed2 = "SELECT * FROM scheikunde WHERE ID = $rand_id LIMIT 1";
$dbresult2 = mysql_query($qed2);

while(
$result = mysql_fetch_array($dbresult2)){

$naam = "$result[naam]";

echo
"<i>$naam</i><p>";
}

?>
<table summary="">
<tr>
  <td>Symbool:</td>
  <td><input type="text" size="5" name="symbool" maxlength="8"></td>
</tr>
<tr>
  <td>Valentie:</td>
    <td><input type="text" size="5" name="valentie" maxlength="4"></td>
</tr>
<tr>
  <td colspan=2><center><input type="submit" name="submit" value="Bevestig"></center></td>
</tr>
</table>
</form>
<?
if(isset($submit)){

    
$dbd = "SELECT * FROM scheikunde WHERE ID = $rand_id";
    
$dbresultd = mysql_query($dbd);
    
    while(
$result = mysql_fetch_array($dbresultd)){
    
$db_valentie = "$result[valentie]";
    
$db_symbool = "$result[symbool]";
    
    echo (
$db_symbool);
    echo (
" ");
  echo (
$db_valentie);
    echo (
"<p>");
        
    if((
$symbool == $db_symbool) AND ($valentie == $db_valentie)){
    echo(
"<font color='green'><b>Exactly!</b></font><p>");
    }
    else{
    echo(
"<font color='red'><b>Try again!</b></font><p>");
    unset(
$submit);
    }
}
}

?>

</body>
</html>
?>

Het gaat hierbij nu fout omdat als ie gaat checken of het klopt hij alweer een nieuw $rand_id heeft en het daarmee vergelijkt.

Hoe los ik dat op?

Pizza_Shooterzondag 1 februari 2004 @ 16:51
Overigens, omdat ik de [php] tag gebruik zet ie er automatisch aan het begin een <? neer en aan het eind een ?>, die horen er natuurlijk niet maar dat doet UBB.
#ANONIEMzondag 1 februari 2004 @ 16:53
effe een check inbouwen of die $rand_id al bestaat...
Pizza_Shooterzondag 1 februari 2004 @ 16:54
quote:
Op zondag 1 februari 2004 16:53 schreef Thomas B. het volgende:
effe een check inbouwen of die $rand_id al bestaat...
Hij bestaat altijd, dat is niet het probleem. Maar hij pakt dus alweer een nieuwe omdat ie de pagina refresht. Als je op submit drukt gaat ie dat ding weer af en heeft ie alweer een nieuw $rand_id en daar vergelijkt ie mee en dan gaat het fout. Of tenminste, het gaat alleen goed als jij kan voorspellen welke ie random gaat pakken.
Pizza_Shooterzondag 1 februari 2004 @ 16:57
php:
<?
$dbd
= "SELECT * FROM scheikunde WHERE ID = $rand_id";
$dbresultd = mysql_query($dbd);
?>

Daar heeft ie dus alweer het nieuwe $rand_id te pakken en ik wil dat ie de oude houdt.
#ANONIEMzondag 1 februari 2004 @ 16:57
dan maak je er 2 paginas van en pass je die $rand_id door in et formulier
#ANONIEMzondag 1 februari 2004 @ 17:01
quote:
Op zondag 1 februari 2004 16:57 schreef Pizza_Shooter het volgende:
php:
<?
$dbd
= "SELECT * FROM scheikunde WHERE ID = $rand_id";
$dbresultd = mysql_query($dbd);
?>

Daar heeft ie dus alweer het nieuwe $rand_id te pakken en ik wil dat ie de oude houdt.
Ja das toch logisch... je loopt iedere keer weer dat script af en kom je weer opnieuw langs die rand(0, 17)
Gewoon
php:
<?
if isset($rand_id){
blablabla
} else {
$rand_id = rand(0,17);
}
?>

Pizza_Shooterzondag 1 februari 2004 @ 17:10
Heb nu dit:
php:
<?
error_reporting
(E_ALL);

include(
'dbconfig.php');

// Maak verbinding met MySQL server
@mysql_connect($dbhost, $dbuser, $dbpassword) or die("Could not connect to database");  
@
mysql_select_db("$dbname") or die("Unable to select database $dbname");

?>

<b>Oefending</b>

<form method="post" action="index.php">
<?

if(isset($rand_id)){

if(isset(
$submit)){

    
$dbd = "SELECT * FROM scheikunde WHERE ID = $rand_id";
    
$dbresultd = mysql_query($dbd);
    
    while(
$result = mysql_fetch_array($dbresultd)){
    
$db_valentie = "$result[valentie]";
    
$db_symbool = "$result[symbool]";
    
    echo (
$db_symbool);
    echo (
" ");
  echo (
$db_valentie);
    echo (
"<p>");
        
    if((
$symbool == $db_symbool) AND ($valentie == $db_valentie)){
    echo(
"<font color='green'><b>Exactly!</b></font><p>");
    }
    else{
    echo(
"<font color='red'><b>Try again!</b></font><p>");
    unset(
$submit);
    }
}
}
}
else{
$rand_id = rand(0, 17);

$qed2 = "SELECT * FROM scheikunde WHERE ID = $rand_id LIMIT 1";
$dbresult2 = mysql_query($qed2);

while(
$result = mysql_fetch_array($dbresult2)){

$naam = "$result[naam]";

echo
"<i>$naam</i><p>";
}

?>
<table summary="">
<tr>
  <td>Symbool:</td>
  <td><input type="text" size="5" name="symbool" maxlength="8"></td>
</tr>
<tr>
  <td>Valentie:</td>
    <td><input type="text" size="5" name="valentie" maxlength="4"></td>
</tr>
<tr>
  <td colspan=2><center><input type="submit" name="submit" value="Bevestig"></center></td>
</tr>
</table>
</form>
<?
}
?>

Maar nu kent ie $rand_id helemaal niet meer.
TheRookiezondag 1 februari 2004 @ 17:25
wat er bedoeld werdt was denk ik een
code:
<INPUT TYPE='hidden' NAME='rand_id' Value='$rand_id'>
aan je oorspronkelijke pagina toevoegen en die vervolgens met $_POST['rand_id'] weer opvragen
#ANONIEMzondag 1 februari 2004 @ 18:32
quote:
Op zondag 1 februari 2004 17:25 schreef TheRookie het volgende:
wat er bedoeld werdt was denk ik een
code:
<INPUT TYPE='hidden' NAME='rand_id' Value='$rand_id'>
aan je oorspronkelijke pagina toevoegen en die vervolgens met $_POST['rand_id'] weer opvragen
jep