Goededag,

In mijn vrijetijd ben ik een beetje bezig om PHP te leren (Dit zijn kleine dingen)
Ik heb hier een PHP script gevonden die het spelletje lingo uitvoert.

Ik heb deze een beetje aangepast naar mijn voorkeur
Nu heb ik een vraag, ik zou graag op het begin scherm een formulier willen waar de speler zijn
naam invoert en zodra deze het woord heeft geraden hij/zij gefeliciteerd word met zijn naam

Ik heb al een aantal opties met $_POST en Sessions geprobeerd
Is er iemand die mij enige hulp kan bieden ?

Ik heb het script waar het om gaat in een pastebin gedaan
http://pastebin.com/NdizNbRx

Al het hulp dat ik zou kunnen krijgen zou welkom zijn
Zet de spelersnaam, zoals je al zei, in een sessie.

$_SESSION['naam'] = $_POST['naam'];

Dan kan je deze echo'en als het woord geraden is.
Boven de start knop een formulierveldje maken waar de speler zijn naam in kan vullen.

Deze naam bij de submit (startknop) opslaan als een variabele (binnen een session kan ook).

Deze variabele tonen in de tekst waar je het wil:

echo '<br />Je hebt het woord geraden!';


Daar lijkt me.
Ik had inderdaad al geprobeerd met sessions, is mij helaas niet gelukt
Met het formulier was ik al zo ver gekomen


<form name=‘formulier’ method=‘post’ action=‘lingo.php’>
naamspeler: <input name=‘naam’ type=‘text’ ><br>
<input type=‘submit’ value=‘Verzenden’ name=‘Submit’></p>


Helaas krijg ik het script dan niet werkend.
Iemand met een oplossing
Heb je de sessie voor de naam al aangemaakt? En zo ja, waar?
Zover ben ik nu
Misschien iemand die het wel voor elkaar kan krijgen ?
Zou mij erg helpen

Mvg

[quote]
<?php
echo '<h1>Lingo</h1>';
if(!isset($_POST['word']) && !isset($_POST['lingo']) || (isset($_POST['word']) && strlen($_POST['word']) != 6) && !isset($_POST['lingo'])){
$_SESSION['woord'] = '';
$_SESSION['woordengedaan'] = '';
$_SESSION['beurt'] = '';
$_SESSION['naam'] = $_POST['naam'];



echo 'Welkom bij LINGO ! <br />';


// naam invullen



//formulier voor een voorgezet woord
echo 'Laat de computer het woord kiezen!';
echo '<form method="POST" action="lingo.php">';
echo '<input type="hidden" name="word" value="prefab">';
echo '<input type="submit" value="Start!" name="begin"> <br /> ';
echo '</form>';

Als ik me niet vergis moet die sessie worden aangemaakt op na lijn 45 van je PasteBin.
Kom er helaas niet uit, als iemand nog een idee heeft zou ik daar heel dankbaar voor zijn :)
Zal hel gehele script hier even posten en hopen dat iemand het voor mekaar krijgt :)

Bedankt voor alle hulp zover :)

<?php
session_start();
?>
<html>
<head>
</script>
<style type="text/css">
body{
font-family: verdana;
font-size: 11px;
background-image: url("http://i.imgur.com/36BvJ0h.jpg");
background-color: #cccccc;
}
table{
font-family: verdana;
font-size: 11px;
}

</style>
</head>
<body onload="autoTab('l2',event.keyCode);">
<?php
echo '<h1>Lingo</h1>';
if(!isset($_POST['word']) && !isset($_POST['lingo']) || (isset($_POST['word']) && strlen($_POST['word']) != 6) && !isset($_POST['lingo'])){
$_SESSION['woord'] = '';
$_SESSION['woordengedaan'] = '';
$_SESSION['beurt'] = '';
$_SESSION['naam'] = $_POST['naam'];



echo 'Welkom bij LINGO ! <br />';


// naam invullen



//formulier voor een voorgezet woord
echo 'Laat de computer het woord kiezen!';
echo '<form method="POST" action="lingo.php">';
echo '<input type="hidden" name="word" value="prefab">';
echo '<input type="submit" value="Start!" name="begin"> <br /> ';
echo '</form>';


}else{
if(!isset($_POST['lingo'])){
if($_POST['word'] == 'prefab' || strlen($_POST['word']) != 5){
//woorden in een array gesmeten
$words_array = array(
'vroeg','lepel','kreet','media','regen','alarm','ovaal','palen','cacao','vroeg','drugs','robot','fiets','boten','truck','roken','wagen','blond','schep','afwas','knoop');
//kies 1 array uit dat het woord bevat
$number = array_rand($words_array);
$word = str_split($words_array[$number]);
}else{
//We hoeven hier alleen het woord uit elkaar te plukken
$word = array($_POST['word'][0],$_POST['word'][1],$_POST['word'][2],$_POST['word'][3],$_POST['word'][4]);
}
}else{
//even het woord weer terughalen
$word = unserialize(stripslashes($_SESSION['woord']));
}
if(isset($_SESSION['woordengedaan']) && $_SESSION['woordengedaan'] != ''){
//wat heb je al gegokt?
$woordengedaan = unserialize(stripslashes($_SESSION['woordengedaan']));
$beurt = $_SESSION['beurt']+1;
}else{
//anders zorgen we dat je kan beginnen
$beurt = 0;
$woordengedaan = array();
}
//even toevoegen zodat het woord blijft staan
if($_POST['l1'] && $_POST['l2'] && $_POST['l3'] && $_POST['l4'] && $_POST['l5'])
$woordengedaan[] = array($_POST['l1'],$_POST['l2'],$_POST['l3'],$_POST['l4'],$_POST['l5']);

$total_words_done = count($woordengedaan);
echo '<form method="POST" action="lingo.php">';
$_SESSION['beurt'] = $beurt;
$_SESSION['woordengedaan'] = serialize($woordengedaan);
$_SESSION['woord'] = serialize($word);
echo 'Aantal Beurten: '.$beurt.' <br /> <br />';
echo '<table style="text-align: center; width: 180px; border: 1px solid black; border-collapse: collapse;" border=1>';
echo '<tr style="font-size: 20px;"><td>L</td><td>I</td><td>N</td><td>G</td><td>O</td></tr>';
//vorige woorden weergeven
$word_check = array();
$guessed = false;

//even voor de gele letters
$letter_count = array();
for($i = 0; $i < 5; $i++){
$letter = strtolower($word[$i]);
if(key_exists($letter,$letter_count)){
$letter_count[$letter]++;
}else{
$letter_count[$letter] = 1;
}
}

if($total_words_done > 0){
foreach($woordengedaan as $value){
echo "<tr>";
$count = 0;
$tmp_letters = array();
for($i = 0; $i < 5; $i++){
$letter = $value[$i];
//eerst eens kijken of we kunnen zeggen dat hij geel is
$yellow = false;
if(key_exists($letter,$letter_count)){
//check of hij op goede plek staat
$aantal = 0;
for($i2 = 0; $i2 < 5; $i2++)
if(strtolower($value[$i2]) == $letter && (strtoupper($value[$i2]) == $word[$i2] || strtolower($value[$i2]) == $word[$i2]))
$aantal++;
//Checken of nog gele letters zijn
if($letter_count[strtolower($letter)] > $aantal){
//Checken of goede letter is
if(key_exists(strtolower($letter),$tmp_letters)){
$aantal_te_delen = $letter_count[strtolower($letter)]-$aantal;
//kijken of er nog genoeg over zijn
if($aantal_te_delen > $tmp_letters[strtolower($letter)]){
$yellow = true;
if(strtoupper($letter) != $word[$i] && strtolower($letter) != $word[$i])
$tmp_letters[strtolower($letter)]++;
}
}else{
//letters kleuren geel
$yellow = true;
//
if(strtoupper($letter) != $word[$i] && strtolower($letter) != $word[$i])
$tmp_letters[strtolower($letter)] = 1;
}

}
}

if(strtoupper($letter) == $word[$i] || strtolower($letter) == $word[$i]){
echo '<td style="background: #CAFFB2; width: 30px; font-size: 20px; height: 30px;">';
$word_check[$i] = true;
$count++;
}else if( $yellow )
echo '<td style="background: #FDFFBC; width: 30px; font-size: 20px; height: 30px;">';
else
echo '<td style="background: #FF728E; width: 30px; font-size: 20px; height: 30px;">';
echo $letter;
echo '</td>';
}
if($count == 5)
$guessed = true;
echo '</tr>';
}
}

//als niet alles goed is
if(!$guessed){
echo '<tr>';
echo '<td>';
//Letter weergeven
echo '<input type="text" name="l1" id="l1" OnKeyUp="autoTab(\'l2\',event.keyCode);" style="width: 30px; font-size: 20px; height: 30px; text-align: center; background: #E5E5E5; border: 1px solid #9E9E9E;" maxlength="1" value="'.$word[0].'">';
echo '</td>';
for($i = 1; $i < 5; $i++){
echo '<td>';
echo '<input type="text" name="l' . ($i+1) . '" id="l' . ($i+1) . '" OnKeyUp="autoTab(\'l' . ($i+2) . '\',event.keyCode);" style="width: 30px; font-size: 20px; height: 30px; text-align: center; background: #E5E5E5; border: 1px solid #9E9E9E;" size="1" maxlength="1"';
echo '></td>';
}
echo '</tr>';
echo '</table>';
echo '<input type="submit" value="Raad!" name="lingo">';
echo '</form>';
}else{
echo '</table>';
echo '</form>';
echo '<br />Je hebt het woord geraden!';
echo '<br />Klik <a href="lingo.php">hier</a> om nog eens te spelen!';


}
}
?>
</body>
</html>
Hier dus na lijn 26.

PS: We hebben ook code-tags voor code-blokken.
Zou u het voor elkaar kunnen krijgen ?
Zal het zeer op waarde stellen

Reageren