Hulp nodig bij spelernaam

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erik Pieter

Erik Pieter

12/01/2016 10:56:06
Quote Anchor link
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
 
PHP hulp

PHP hulp

21/11/2024 21:38:47
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 11:06:48
Quote Anchor link
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.
 
L deB

L deB

12/01/2016 11:15:16
Quote Anchor link
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:

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


Daar lijkt me.
 
Erik Pieter

Erik Pieter

12/01/2016 11:24:21
Quote Anchor link
Ik had inderdaad al geprobeerd met sessions, is mij helaas niet gelukt
Met het formulier was ik al zo ver gekomen


Quote:
<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
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 11:42:46
Quote Anchor link
Heb je de sessie voor de naam al aangemaakt? En zo ja, waar?
Gewijzigd op 12/01/2016 11:43:03 door - Ariën -
 
L deB

L deB

12/01/2016 11:43:05
Quote Anchor link
https://www.youtube.com/watch?v=FTOT73CJ6pM

Heb geen geluid op het werk hier, maar volgens mij kan dit je wel helpen. Staat in ieder geval precies in hoe je de naam er kan krijgen en tonen na de submit.
 
Erik Pieter

Erik Pieter

12/01/2016 12:05:15
Quote Anchor link
Zover ben ik nu
Misschien iemand die het wel voor elkaar kan krijgen ?
Zou mij erg helpen

Mvg

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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>';
Gewijzigd op 12/01/2016 12:07:03 door Erik Pieter
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 12:17:56
Quote Anchor link
Als ik me niet vergis moet die sessie worden aangemaakt op na lijn 45 van je PasteBin.
 
Erik Pieter

Erik Pieter

12/01/2016 12:30:37
Quote Anchor link
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 :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?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);">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<?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>
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 12:32:14
Quote Anchor link
Hier dus na lijn 26.

PS: We hebben ook code-tags voor code-blokken.
 
Erik Pieter

Erik Pieter

12/01/2016 12:34:22
Quote Anchor link
Zou u het voor elkaar kunnen krijgen ?
Zal het zeer op waarde stellen
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 12:41:24
Quote Anchor link
Regel 7 (je naam-sessie) even verhuizen na je 'else' op lijn 26.
Easy as pie!

Dan denk ik dat het wel moet werken.

Uiteraard ook je sessie echo'en als het geraden is.
 
Erik Pieter

Erik Pieter

12/01/2016 15:19:37
Quote Anchor link
Ik heb nu aantal veranderingen gemaakt
Krijg alleen een error op
Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' on line 20

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?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'] = '';
    
    
    
    
    echo 'Welkom bij LINGO !  <br />';        
    

    // naam invullen
    
    
    
    //formulier voor een voorgezet woord

    echo 'Vul je naam hier in:'
    echo 'form method="post" action="lingo.php">';
    echo <input type="text" name="naam" id="naam" />
    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{
    $_SESSION['naam'] = $_POST['naam'];
    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();
    }
Gewijzigd op 12/01/2016 15:20:53 door Erik Pieter
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 15:21:15
Quote Anchor link
Zoek de verschillen eens met de regels erboven ;-).
 
Erik Pieter

Erik Pieter

12/01/2016 16:01:00
Quote Anchor link
Ik kom er niet uit, denk dat ik het maar links laat liggen helaas.
Krijg het niet voor mekaar om er een naam in te krijgen.

Bedankt voor al uw hulp
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 16:03:28
Quote Anchor link
Ik denk dat het misschien verstandiger is om eerst maar even de basis van PHP te leren.

Maar het enige wat er mist zijn eigenlijk de quotes.
 
Obelix Idefix

Obelix Idefix

12/01/2016 18:04:30
Quote Anchor link
En een ;

Foutmelding is vrij duidelijk wat en waar het fout gaat.
 
Erik Pieter

Erik Pieter

12/01/2016 22:19:45
Quote Anchor link
Erik Pieter op 12/01/2016 15:19:37:
Ik heb nu aantal veranderingen gemaakt
Krijg alleen een error op
Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' on line 20



Toevoeging op 12/01/2016 22:20:32:

Erik Pieter op 12/01/2016 12:30:37:
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 :)
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 22:20:33
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
   echo '<input type="text" name="naam" id="naam" />';
 
Erik Pieter

Erik Pieter

12/01/2016 22:20:54
Quote Anchor link
Erik Pieter op 12/01/2016 10:56:06:
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


Al het hulp dat ik zou kunnen krijgen zou welkom zijn
 
- Ariën  -
Beheerder

- Ariën -

12/01/2016 22:27:31
Quote Anchor link
Kijk eens een post hoger ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.