$_POST haalt hij niet meer op

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pietje akkers

pietje akkers

08/12/2011 10:55:07
Quote Anchor link
Ik ben bezig met een raad-script, maar hij haalt op een of andere manier de dingen die ik invul niet op.. in mijn database staan 2 wedstrijden, en die haalt hij uit de database en schrijft hij op het scherm, zodat ze die kunnen raden. Maar als ik in de 1e wedstrijd ga raden, dan leest hij de uitslagen die ik invul niet, maar doe ik het in de 2e doet hij het wel.. Heel vaag vind ik dit.

Testen kun je hier:
http://dj-jeremy.nl/wk/raden.php

hier is de code:

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
<?php
session_start();
include 'header.php';
include 'config.php';

echo "<div id=content>";
echo "<div id=vak>";

if(isset($_POST['submit']))
{

    $sesId = mysql_real_escape_string($_SESSION['userid']);
    $scoreThuis = $_POST['scorethuis'];
    $scoreUit = $_POST['scoreuit'];
    
    echo $sesId.$scoreThuis.$scoreUit;
    
    $query = "INSERT INTO raden (user_id, raden1, raden2)
              VALUES ('$sesId', '$scoreThuis', '$scoreUit')"
;
    
    $result = mysql_query($query)
              or die(mysql_error());
    
    echo "Uw score is opgeslagen!";
}


else
{
    $query = "SELECT t1.id, t1.wedstrijd1, t1.wedstrijd2
                                      FROM wedstrijden AS t1"
;
    
    $result = mysql_query($query)
    or die(mysql_error());

    echo "<table>";
    echo "<form action=raden.php method=post>";

    while($row = mysql_fetch_assoc($result))
    {

        echo "<tr><td>".$row['wedstrijd1']."</td><td> <input type=text name=scorethuis style=width:50px;></td><td> - </td><td><input type=text name=scoreuit style=width:50px;> </td><td>".$row['wedstrijd2']."</td></tr>";
    }

        echo "<tr><td colspan=4 align=right><input type=submit name=submit value=Verzenden></td></tr>";
        echo "</form>";
        echo "</table>";
}


  
    echo "</div>";
    echo "</div>";

include 'footer.php';

?>
 
PHP hulp

PHP hulp

06/11/2024 04:19:46
 
Erwin H

Erwin H

08/12/2011 11:26:40
Quote Anchor link
De namen van de input velden zijn gelijk. Geef de thuis en uit velden andere namen (bijvoorbeeld thuis1/thuis2, uit1/uit2) dan zou het wel moeten lukken.
 
Pietje akkers

pietje akkers

08/12/2011 11:28:49
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<tr><td>".$row['wedstrijd1']."</td><td> <input type=text name=thuis1 style=width:50px;></td><td> - </td><td><input type=text name=thuis2 style=width:50px;> </td><td>".$row['wedstrijd2']."</td></tr>";


Dus jij zegt dat ik die in thuis1 moet veranderen en die andere in thuis2 ofzo?? of hoe anders?
 
Erwin H

Erwin H

08/12/2011 11:34:39
Quote Anchor link
Als ik naar de HTML kijk op je pagina, dan zie ik dit:

eerste wedstrijd:
<input type="text" style="width:50px;" name="thuis1">
<input type="text" style="width:50px;" name="thuis2">

tweede wedstrijd
<input type="text" style="width:50px;" name="thuis1">
input type="text" style="width:50px;" name="thuis2">

de twee velden hebben dus dezelfde naam en daarmee krijg je in je $_POST array maar twee element te zien (thuis1 en thuis2) en niet vier zoals je zou willen (lijkt mij).
Zorg dus dat alle vier de velden unieke namen hebben dan zou je ze alle vier ook in je POST array moeten krijgen.
 
- Ariën  -
Beheerder

- Ariën -

08/12/2011 11:37:59
Quote Anchor link
Mag ik nog wat tips geven, Jeremy/Pietje Akkers. het zou fijn zijn als je er echt eens wat mee deed. Dit maakt je script een stuk efficiënter en logischer.

1) if(isset($_POST['submit'])) {
Dit is niet een goede manier, niet elke browser gaat er goed mee om.
Gebruik liever if($_SERVER['REQUEST_METHOD']=="POST") {

2) Overschrijf geen variabelen, je kan prima je $_POST-variabelen (met beveiliging van mysql_real_escape_string()) gebruiken in je query.

3) Pas goede foutafhandeling toe. Waarom zou je een script direct willen laten stoppen? Stel dat er een functie komt die de laadtijd meet, of de statistieken verwerkt. Die zal dan ook niet worden geladen, en je zit tevens met corrupte HTML, wat een gebruiker ook niet mooi zou vinden. Dus gebruik gewoon bij queries netjes een if-else afhandeling, en verban die die() naar het kerkhof....

4) variabelen horen buiten quotes.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo "Dit is een string met een ".$variabele." welke buiten quotes staat.";?>

Zie je dat je code een stuk beter leesbaarder is, en dat je direct ziet waar er variabelen staan? Tevens is dit ook net weer een tikkeltje sneller.

Ik hoop dat je nu zeker wat met deze tips gaat doen. Je maakt je eigen script een hiermee een stuk efficiënter en logischer, waar je zeker veel profijt van zal hebben.

Print deze post anders eens uit, en hang het boven je monitor, om je er aan te herinneren, als je anders gewend bent.
Gewijzigd op 08/12/2011 11:43:27 door - Ariën -
 
Pietje akkers

pietje akkers

08/12/2011 11:47:51
Quote Anchor link
Erwin, ja dat klopt. Ik wil graag alles apart hebben, maar ik weet niet hoe ik dat doe, want hij haalt ze uit mijn database, en straks komen er nog veel meer bij. dus hoe moet ik het dan doen?

Ja, -aar- dat klopt. daar moet ik op letten. Heb je ook nog een antwoord op mijn probleem?
 
Erwin H

Erwin H

08/12/2011 11:54:48
Quote Anchor link
Het antwoord staat in mijn vorige post, ik weet niet wat je verder nog nodig hebt... Zoals ik zeg, zorg dat alle input velden aparte namen hebben en je kan het gewoon uitlezen uit $_POST array zodra er op de knop geklikt wordt.

Dus als je je input een naam "thuis1" geeft, dan komt dat in de $_POST te staan als $_POST['thuis1']. etc etc etc

En dan met de verder opmerkingen van Aar moet het wel goed kunnen komen....
 
Pietje akkers

pietje akkers

08/12/2011 11:58:00
Quote Anchor link
Ja, maar hoe geef ik die 2e wedstrijd dan een andere input??
 
Erwin H

Erwin H

08/12/2011 11:59:55
Quote Anchor link
Ik volg je even niet meer... dit is niet dezelfde vraag als in het begin, dus leg uit.
 
Pietje akkers

pietje akkers

08/12/2011 12:03:26
Quote Anchor link
Ik heb in mijn database wedstrijden staan, en die worden dus steeds meer. Nu wil ik die uitlezen op het scherm, en dan kunnen mensen raden wat het word. Maar de inputs krijgen dus allemaal één name, en dan haal ik dus inderdaad niet alle dingen op. Dus moeten ze allemaal een andere name krijgen, maar hoe ga ik doe dat doen, want de wedstrijden zitten in een while lus.
 
Erwin H

Erwin H

08/12/2011 12:06:46
Quote Anchor link
Countertje mee laten lopen en toevoegen aan de naam van de velden. Zoiets als dit dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$i
=0;
 while($row = mysql_fetch_assoc($result))
    {

        echo "<tr><td>".$row['wedstrijd1']."</td><td> <input type=text name=scorethuis".$i." style=width:50px;></td><td> - </td><td><input type=text name=scoreuit".$i." style=width:50px;> </td><td>".$row['wedstrijd2']."</td></tr>";
        $i++;
    }

?>


Ik begrijp alleen niet helemaal wat $row['wedstrijd1'] en $row['wedstrijd2'] erin doen, maar dat is in dit geval puur copy-paste van mij natuurlijk, stond al in jouw code.

Sorry, maakte een foutje en toch nog een bij het verbeteren. Bovenstaande zou volgens mij redelijk het goede moeten zijn...
Gewijzigd op 08/12/2011 12:08:34 door Erwin H
 
Pietje akkers

pietje akkers

08/12/2011 12:09:31
Quote Anchor link
Dankje.
dat zijn de wedstrijden die uit de database komen.
Alleen nu is het probleem, hoe voeg ik alles toe dan? stel voor ik vul alle velden in, hoe zet ik dan in één keer alle velden in de database?

Toevoeging op 08/12/2011 12:10:56:

En btw, hij doet het nog steeds niet, want ik moet ze ook ophalen, en hoe gebeurt dat dan?
Want ik heb nu gewoon dit:

$scoreThuis = $_POST['scorethuis1'];
$scoreUit = $_POST['scoreuit1'];
 
Erwin H

Erwin H

08/12/2011 12:15:48
Quote Anchor link
in een insert statement kan je meerdere waardes tegelijk in je database toevoegen. Stel dat je drie waardes hebt dan kan dat op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
"INSERT INTO raden (user_id, raden1, raden2)
VALUES ('".$sesId."', '".$scoreThuis[0]."', '".$scoreUit[0]."'),
       ('".$sesId."', '".$scoreThuis[1]."', '".$scoreUit[1]."'),
       ('".$sesId."', '".$scoreThuis[2]."', '".$scoreUit[2]."')"


Zoals je ziet heb ik al een array gebruikt voor de waardes van de wedstrijden. Nu kan je vast zelf wel met enig puzzelen die arrays vullen en de query aanmaken. Zelfs als je vooraf niet weet hoeveel wedstrijden er zijn ingevuld...
 
Pietje akkers

pietje akkers

08/12/2011 12:48:24
Quote Anchor link
Het spijt me maar ik snap het niet.. Dus ik kan nu eigenlijk nog niet precies verder. heeft u niet msn of iets dergelijks? Pm me maar please
 



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.