Melding "We hebben nog geen reacties" blijft staan in gastenboek

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marianne M

Marianne M

05/01/2013 19:47:56
Quote Anchor link
Nog aan het stoeien op het gastenboek uit de opdracht, alweer dagen aan het zoeken naar een oplossing en het wil niet lukken.
De bedoeling is om een melding te krijgen als er nog geen berichten zijn geschreven. Die regel krijg ik wel te zien, maar ook nog als er wel degelijk berichten in de database staan, terwijl de berichten niet worden getoond. In plaats daarvan 3 maal een melding over ongedefinieerde variabelen (naam, datum en boodschap) in de html table.

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

<?php
  if ($query > 0)
    while ($obj = mysql_fetch_object($sql)) {
    // Als er wel reacties zijn geplaatst worden deze nu weergegeven
    $naam = $obj->naam;
    $datum = $obj->datum;
    $boodschap = $obj->boodschap;
  
}
else {
    // Als er nog geen reacties geplaatst zijn
    echo 'We hebben nog geen reacties!';
    }

    ?>

    
    <br>

    <table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
                    <tr>
                        <td >
                        <strong>Geschreven door <?php echo $naam; ?></strong>
                         op <?php echo $datum; ?>
                        </td>
                    </tr>
                    <tr>
                        <td >
                        <?php echo $boodschap; ?>
                        </td>
                    </tr>
                </table>
                


Wat zie ik over het hoofd?
Gewijzigd op 06/01/2013 01:03:32 door Roel -
 
PHP hulp

PHP hulp

23/09/2021 11:41:50
 
- Ariën -
Beheerder

- Ariën -

05/01/2013 19:54:27
Quote Anchor link
Kan je jouw code eerst even tussen [code] en [/code] plaatsen? Dat maakt het beter leesbaarder.
 
Bo Ter Ham

Bo Ter Ham

05/01/2013 19:55:26
Quote Anchor link
misschien is iets meer code ook wel belangrijk, $query en $sql komen nu als donderslag bij heldere hemel.
 
Jurgen B

Jurgen B

05/01/2013 19:57:39
Quote Anchor link
Je mist een { achter de if, er vanuit gegaan dat die if bij de else hoort.
Gewijzigd op 05/01/2013 19:58:11 door Jurgen B
 
Marianne M

Marianne M

05/01/2013 20:07:28
Quote Anchor link
Sorry, stukje vergeten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = "SELECT * FROM gastenboek ORDER BY id DESC";
$sql=mysql_query($query) or die (mysql_error());


@Aar, ik heb mijn code echt tussen de code tags gezet, snap ook niet waardoor het zo versnipperd.

@Jurgen B, die { staat toch achter de regel met while?
Maar heeft geen effect als ik hem daar weghaal en achter de if zet.
 
Moose -

Moose -

05/01/2013 20:09:40
Quote Anchor link
probeer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(mysql_num_rows($sql) > 0) {
in plaats van $query > 0. $query is namelijk gewoon een string
 
- Ariën -
Beheerder

- Ariën -

05/01/2013 20:16:39
Quote Anchor link
Marianne M op 05/01/2013 20:07:28:
Sorry, stukje vergeten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = "SELECT * FROM gastenboek ORDER BY id DESC";
$sql=mysql_query($query) or die (mysql_error());


@Aar, ik heb mijn code echt tussen de code tags gezet, snap ook niet waardoor het zo versnipperd.

Je mist de PHP-begin tag...

Toevoeging op 05/01/2013 20:18:45:

while is geen functie en kan geen true of false geven. Deze kan dus niet vertellen of een query wel of geen items uitspuugt. Je zult met mysql_num_rows() moeten gaan tellen of er minder dan 1 items zijn (niets dus), en dan kan je een dergelijke foutmelding tonen.
 
Jurgen B

Jurgen B

05/01/2013 20:30:28
Quote Anchor link
Ik weet niet wat de bedoelde constructie is, maar er mist in ieder geval een { achter de if (die kan je alleen weglaten als je een single statement if hebt). De else hoort nu bij de while en niet de if.
 
Marianne M

Marianne M

06/01/2013 16:47:07
Quote Anchor link
Ik heb nu deze regel gewijzigd
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
  if ($query > 0)

in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(mysql_num_rows($sql) > 0) {


Dat maakt al wat verschil, maar krijg nu de melding:
Trying to get property of non-object op de regels waar $datum en $boodschap staat.
Dit heeft denk ik te maken met de while.
Ik zoek me rot naar een oplossing, maar kom er niet uit.
 
- Ariën -
Beheerder

- Ariën -

06/01/2013 16:52:00
Quote Anchor link
Laat nu eens je relevante code zien?
 
Moose -

Moose -

06/01/2013 16:53:10
Quote Anchor link
$datum en $boodschap bestaan niet buiten je while loop. Als je die gegevens wilt tonen moet je dat dus altijd binnen de while loop doen.
 

06/01/2013 17:06:50
Quote Anchor link
Ik dacht dat het zo moest werken, maar kan het ook fout hebben.

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
<?php
    if (mysql_num_rows($sql) > 0)
    {

        while ($obj = mysql_fetch_object($sql))
        {

            // Als er wel reacties zijn geplaatst worden deze nu weergegeven
            $naam         = $obj->naam;
            $datum         = $obj->datum;
            $boodschap     = $obj->boodschap;
            
            echo '
            <table width="90%" border="0" cellspacing="0" cellpadding="3" align="center">
                <tr>
                    <td >
                        <strong>Geschreven door '
.$obj->naam.'</strong>
                        op '
.$obj->datum.'
                    </td>
                </tr>
                
                <tr>
                    <td >
                        '
.$obj->boodschap.'
                    </td>
                </tr>
            </table>
            '
;
        }
    }

    else
    {
        // Als er nog geen reacties geplaatst zijn
        echo 'We hebben nog geen reacties!';
    }

?>
Gewijzigd op 06/01/2013 17:07:23 door
 
Marianne M

Marianne M

06/01/2013 17:39:32
Quote Anchor link
Dit werkt perfect Rick, grote dank!
Ik ga zowel de code die ik had als deze uitprinten, naast elkaar leggen en bestuderen.
Nu alleen nog de php boven de html plaatsen denk ik en dan zou het goed moeten zijn.
Allemaal bedankt voor aanwijzingen en meedenken.
 
Obelix Idefix

Obelix Idefix

06/01/2013 18:09:41
Quote Anchor link
Mij is alleen niet helemaal duidelijk wat het doel/de reden is van regel 7 t/m 9. Je doet er verder niets mee, want in de echo gebruik je $obj->
 
Marianne M

Marianne M

06/01/2013 18:46:52
Quote Anchor link
Klopt Obelix, Die zijn er nu ook uit.
 



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.