Toon posts:

[MySQL] PHP guestbook

Pagina: 1
Acties:
  • 267 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hey ik heb een PHP guesbook gemaakt.

Maar volgens mij heb ik een foutje gemaakt met het PHP script.

Want ik krijg de melding in mijn guestbook:
code:
1
Warning: Supplied argument is not a valid MySQL result resource in /home/e-smith/files/primary/html/guestbook.php on line 146

Als ik in regel 146 ga kijken staat er het volgende:
code:
1
while ($myrow = mysql_fetch_array($result)) {

dit is het hele stukje
code:
1
2
3
4
5
6
<?php
            $query="SELECT * FROM guestbook ORDER BY id DESC";
            $result=mysql_query($query);

            while ($myrow = mysql_fetch_array($result)) {
        ?>

Ik kan er niks verkeerds aan vinden.
Jullie Misschien??

Al vast bedankt

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

$result=mysql_query($query) or die(mysql_error());

if I had a penny everytime I said this...

Doet iets met Cloud (MS/IBM)


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
...You would still have it?

Verwijderd

Komt vaak voorbij, staat er wel data in je tabel?

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

En bestaat er wel een connectie? Want anders dan krijg je ook geen resultset terug.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op donderdag 24 januari 2002 16:30 schreef eamelink het volgende:
En bestaat er wel een connectie? Want anders dan krijg je ook geen resultset terug.
Nope dan krijg je een error tijdens het uitvoeren van je Query. Zeurt hij over link identifier error bla bla

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
Er is een database.
er staat geen data in.
Maar volgens maakt hij wel contact
want anders zou hij wel een melding geven dat er niet ingelogt is dus dat gebruikersnaam of wachtwoord niet overeen komen.

Verwijderd

Op donderdag 24 januari 2002 16:38 schreef nekton het volgende:
er staat geen data in.
Dan is dat het, controleer eerst mysql_num_rows voor je ze uit gaat lezen :)

Verwijderd

Topicstarter
mmmmm
controleer eerst mysql_num_rows voor je ze uit gaat lezen
Ik ben niet zo super goed in MySQL
Hoe moet ik dat doen???

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

zoek in de PHP manual op mysql_num_rows en mysql functies in het algemeen.

Verwijderd

Topicstarter
Hier heb je de Code's ik kan
mysql_num_rows niet vinden.
code:
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<html> 
 <head>
  <title>Guest Book</title>
 </head>
<body bgcolor="#3399FF">

    <?php
        #
        # MySQL database connection
        #

        $dbusername=gebruiker;
        $dbhost=localhost;
        $dbpasswd="geheim";
        $dbname=michel;

        # connect to mysql
        $connection = mysql_connect($dbhost, $dbusername, $dbpasswd);

        # select database
        mysql_select_db($dbname);

        # test connection
    ?>

    <div align="center">

        <?php
            $border="0";

        if ($submit=="ok") {

            $message = ereg_replace("<", "&lt;", $message);
            $message = ereg_replace(">", "&gt;", $message);

            $query="INSERT INTO guestbook VALUES ('',\"$naam\",\"$woonplaats\",\"$email\",\"$site\",\"$website\",\"$message\",\"$REMOTE_ADDR\",now())";

            # show query
            #echo("query: ".$query);

            # insert into database
            mysql_query($query);
            ?>

            <script language="JavaScript">  
                {
                    this.location.href="guestbook.php";
                }   
            </script>

            <?php

        } elseif ($sign=="yes") {

        ?>

        <table border="<?php echo($border); ?>">
         <tr>
           <td align="right">

                <form action="guestbook.php" method="post">
                 naam: </td><td>&nbsp;</td><td> <input name="naam" size="20">

          </td>
         </tr>
         <tr>
          <td align="right">

                 woonplaats: </td><td>&nbsp;</td><td> <input name="woonplaats" size="20">

          </td>
         </tr>
         <tr>
          <td align="right">

                 e-mail: </td><td>&nbsp;</td><td> <input name="email" size="20">

          </td>
         </tr>
         <tr>
          <td align="right">

                 hoe kwam je op deze site?: </td><td>&nbsp;</td><td> <input name="site" size="20">

          </td>
         </tr>
         <tr>
          <td align="right">

                 eigen website ?: </td><td>&nbsp;</td><td> <input name="website" size="30" value="http://">

          </td>
         </tr>
         <tr>
           <td colspan="3">
            &nbsp;
          </td>
         </tr>
         <tr>
          <td colspan="3" align="center">

                 message:<br>
                <textarea name="message" cols="30" rows="10"></textarea>

          </td>
         </tr>
         <tr>
          <td colspan="3" align="right">

                <hidden name="submit" value="yes">
                <input type="submit" name="submit" value="ok">
                </form>

          </td>
         </tr>
        </table>

        <?php

        } else {

        ?>

            <table border="<?php echo($border); ?>">
             <tr>
              <td>

                <a href="guestbook.php?sign=yes">sign guestbook here</a>

              </td>
             </tr>
             <tr>
              <td>

                &nbsp;

              </td>
             </tr>
             <tr>
              <td>

        <?php
            $query="SELECT * FROM guestbook ORDER BY id DESC";
            $result=mysql_query($query);

            while ($myrow = mysql_fetch_array($result)) {
        ?>

                <table border="<?php echo($border); ?>" width="300">
                 <tr>
                  <td>

                    &nbsp;

                  </td>
                 </tr>
                 <tr>
                  <td bgcolor="#CCCCFF">

                    <?php
                        echo("<a href=\"mailto:".$myrow[email]."\">".$myrow[naam]."</a>");
                    ?>

                  </td>
                  <td rowspan="2" valign="top">

                    <?php
                        echo($myrow[time]);
                    ?>

                  </td>
                 </tr>
                 <tr>
                  <td>

                    <?php
                        echo($myrow[message]);
                    ?>

                  </td>
                 </tr>
                 <tr>
                  <td>

                    <?php
                        if($myrow[website]=="http://") {
                            $dewebsite == "";
                        } else { 
                        echo("<a href=\"".$myrow[website]."\">".$myrow[website]."</a>");
                        }

                        echo("<a href=\"".$dewebsite."\">".$dewebsite."</a>");
                    ?>

                  </td>
                  <td>

                    <?php
                        echo($myrow[woonplaats]);
                    ?>


                  </td>
                 </tr>
                </table>

            <?php

                }   // end of while

            ?>

              </td>
             </tr>
            </table>

        <?php
        }

        ?>
    
    </div>

</body>
</html>

Verwijderd

Topicstarter
Echt niemand die me hier mee kan helpen???

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 24 januari 2002 17:47 schreef nekton het volgende:
Echt niemand die me hier mee kan helpen???
http://www.php.net/manual/en/function.mysql-num-rows.php

Doet iets met Cloud (MS/IBM)


Verwijderd

Op donderdag 24 januari 2002 16:38 schreef nekton het volgende:
Er is een database.
er staat geen data in.
Maar volgens maakt hij wel contact
want anders zou hij wel een melding geven dat er niet ingelogt is dus dat gebruikersnaam of wachtwoord niet overeen komen.
Op donderdag 24 januari 2002 16:52 schreef nekton het volgende:
mmmmm
[..]

Ik ben niet zo super goed in MySQL
Hoe moet ik dat doen???
Voor alle duidelijkheid: je hebt de tabellen wel aangemaakt in de database??

edit: [b ]- tags toegevoegd voor duidelijkheid }:O

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op donderdag 24 januari 2002 16:39 schreef Zef het volgende:

[..]

Dan is dat het, controleer eerst mysql_num_rows voor je ze uit gaat lezen :)
Die error heeft nix te maken met de hoeveelheid data die je terugkrijgt. Deze error krijg je dus NIET als je table leeg is. Als je resultset leeg is levert mysql_fetch_* gewoon false op, en genereert geen foutmelding. De resource is immers een geldige resource, er staat alleen nix in.

(Ik had wel beter verwacht van een mede fmf-er)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Op donderdag 24 januari 2002 16:35 schreef LuCarD het volgende:

[..]

Nope dan krijg je een error tijdens het uitvoeren van je Query. Zeurt hij over link identifier error bla bla
Neehoor, dan zegt hij helemaal niets. Alleen er komt dus geen geldige resultset terug, en dan krijg je ook die error als hierboven.

Verwijderd

Op donderdag 24 januari 2002 17:47 schreef nekton het volgende:
Echt niemand die me hier mee kan helpen???
PHP:
1
2
3
4
5
<?
if (mysql_num_rows($result) < 1) {
   die("Geen resultaten...");
}
?>

Verwijderd

Op donderdag 24 januari 2002 19:56 schreef Janoz het volgende:
[..]
Die error heeft nix te maken met de hoeveelheid data die je terugkrijgt. Deze error krijg je dus NIET als je table leeg is. Als je resultset leeg is levert mysql_fetch_* gewoon false op, en genereert geen foutmelding. De resource is immers een geldige resource, er staat alleen nix in.
Zou je zeggen ja, zo zou het ook moeten zijn. Maar uit ervaring weet ik dat dit niet zo is (of ik let niet goed op). Ik heb meerdere malen hetzelfde probleem gehad en het werd opgelost als ik op num_rows checkte. Maar goed, misschien heb je gelijk...
(Ik had wel beter verwacht van een mede fmf-er)
Sue me, eerste jaars he ;)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
Er zit een fout in de query..

Bij een lege result krijg je deze fout niet..

maak van dat stukje dat je in het begin gaf even dit:
code:
1
2
3
4
5
<?php
            $query="SELECT * FROM guestbook ORDER BY id DESC";
            $result=mysql_query($query) or die(mysql_error());
            while ($myrow = mysql_fetch_array($result)) {
        ?>

zoals D2K al zei..

Geef dan ff de error die je krijgt. Al zou je hem dan zelf wel op kunnen lossen.

edit: 2 lettertjes verkeerd en je bedoelt al weer helemaal wat anders :)

Verwijderd

Topicstarter
Als ik die code er neer zet.
PHP:
1
2
3
4
5
6
<?
                  $query="SELECT * FROM guestbook ORDER BY id DESC";
                  $result=mysql_query($query) or die(mysql_error());
                  while ($myrow = mysql_fetch_array($result)) {
            
?>

krijg ik 'Table 'michel.guestbook' doesn't exist' te zien.
Dus ik moet dus eigenlijk en de database 'michel' een tabel aan maken guestbook???

Verwijderd

Joh, hoe kom je erop, lijkt me wel logisch he, je kan ook niet in een huis gaan wonen wat nog niet gebouwd is toch :P

Verwijderd

Op donderdag 24 januari 2002 22:59 schreef nekton het volgende:
Als ik die code er neer zet.
PHP:
1
2
3
4
5
6
<?
                  $query="SELECT * FROM guestbook ORDER BY id DESC";
                  $result=mysql_query($query) or die(mysql_error());
                  while ($myrow = mysql_fetch_array($result)) {
            
?>

krijg ik 'Table 'michel.guestbook' doesn't exist' te zien.
Dus ik moet dus eigenlijk en de database 'michel' een tabel aan maken guestbook???
Op donderdag 24 januari 2002 18:00 schreef mbitnl het volgende:

[..]


[..]

Voor alle duidelijkheid: je hebt de tabellen wel aangemaakt in de database??
Schrijf ik chinees of negeren jullie mij gewoon?

Verwijderd

Op donderdag 24 januari 2002 23:14 schreef mbitnl het volgende:
Schrijf ik chinees of negeren jullie mij gewoon?
Sorry, en nu in het nederlands??? :P

Verwijderd

Topicstarter
Voor alle duidelijkheid: je hebt de tabellen wel aangemaakt in de database??
ik moet de table guestbook nog aan maken.

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op donderdag 24 januari 2002 23:25 schreef nekton het volgende:

[..]

ik moet de table guestbook nog aan maken.
Vind je het heel gek als mysql/php over zijn nek gaat als jij probeert een niet bestaande tabel aan te spreken?

Verwijderd

Op donderdag 24 januari 2002 23:27 schreef Nielsz het volgende:

[..]

Vind je het heel gek als mysql/php over zijn nek gaat als jij probeert een niet bestaande tabel aan te spreken?
Ik vind het heel gek dat niemand mijn reply's leest, volgens mij hebben jullie het veel te druk met het promoten van je eigen oplossing..

Verwijderd

Topicstarter
Nee dat vind ik niet gek.
Het was maar even voor de duidelijkheid.

maar mijn SQL kennis is sterk verzwakt.
het is echt lang geleden dat ik dat gedaan heb.

nog even een vraagje?

ik heb dus een database genaamd michel
code:
1
use database michel

nou wil ik dus een table gaan maken
code:
1
create table guestbook

maar bij die create table hoort ook nog een column
maar zou niet weten wat ik daar van zoe moeten maken.

Sorry maar ik weet het echt gewoon niet meer.

  • Koen_R
  • Registratie: Juni 1999
  • Laatst online: 22:21
Ik weet niet waar je je MySQL database host, maar installeer phpMyAdmin erop, of als het al geinstalleerd is gebruik dat dan gewoon. Dat is een simpele interface voor MySQL waarmee je in enkele seconden al je tables/columns gemaakt hebt

Verwijderd

Topicstarter
Ja oke kan ik doen.
Maar dan wil in nog wel weten hoe ik het zo moet/kan doen.

Maar het is zeker een optie als ik met jullie hulp er niet uit kom.
Maar ik weet zeker dat iemand mij dat wel kan uitleggen hoe dat ook al weer zat.

  • Koen_R
  • Registratie: Juni 1999
  • Laatst online: 22:21
Misschien is het handig om wel gewoon phpMyAdmin te gebruiken, die laat namelijk wel meteen de queries zien die hij op de database uitoefent. Dan kan je daaruit meteen afleiden wat je moet doen als je het handmatig doet.

Je kan ook gewoon natuurlijk effe de MySQL documentatie nakijken erop: http://www.mysql.com/documentation/index.html

[edit]
MySQL documentatie 3.3 'Creating and Using a Database':
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

Verwijderd

Topicstarter
Ja oke ik ben het echt helemaal met je eens.
Dat het veel makkelijker is.
Maar ik heb dat altijd goed gekunnen.
nouja een aantal jaren geleden dan.

maar volgens mij moet je zo een table maken.
die ik nodig heb dan.
code:
1
2
3
4
5
6
7
8
9
mysql> CREATE TABLE guestbook 
    -> (ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> naam VARCHAR(100),
    -> woonplaats VARCHAR(100),
    -> email VARCHAR(100),
    -> site VARCHAR(100),
    -> website VARCHAR(100)
    -> message TEXT
    -> );

maar kan iemand mij vertellen of dat goed is???

  • Koen_R
  • Registratie: Juni 1999
  • Laatst online: 22:21
afgezien van het feit dat je hier:

website VARCHAR(100)

nog even een komma achter moet zetten is ie zo volgens mij goed :?

als je daarna intikt

mysql>DESCRIBE guestbook;

dan zie je snel genoeg of ie goed is

Verwijderd

Topicstarter
schaam schaam :o

gelukkig heb ik dat in mijn table niet gedaan.

maar ik heb dus de table van hieronder gemaakt.
code:
1
2
3
4
5
6
7
8
mysql> CREATE TABLE guestbook 
    -> (naam VARCHAR(100),
    -> woonplaats VARCHAR(100),
    -> email VARCHAR(100),
    -> site VARCHAR(100),
    -> website VARCHAR(100),
    -> message TEXT
    -> );

Jaja nu komt het volgende.

Nu geeft hij dus aan.
Unknown column 'id' in 'order clause'

wat ging er niet goed of beter gezegt wat doe ik verkeert.
Sorry dat ik zo eigenwijs ben!!!!

maar ik moet het gewoon weten.

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 15-09 17:44

Knutselsmurf

LED's make things better

Op vrijdag 25 januari 2002 00:18 schreef nekton het volgende:
schaam schaam :o

gelukkig heb ik dat in mijn table niet gedaan.

maar ik heb dus de table van hieronder gemaakt.
code:
1
2
3
4
5
6
7
8
mysql> CREATE TABLE guestbook 
    -> (naam VARCHAR(100),
    -> woonplaats VARCHAR(100),
    -> email VARCHAR(100),
    -> site VARCHAR(100),
    -> website VARCHAR(100),
    -> message TEXT
    -> );

Jaja nu komt het volgende.

Nu geeft hij dus aan.
Unknown column 'id' in 'order clause'

wat ging er niet goed of beter gezegt wat doe ik verkeert.
Sorry dat ik zo eigenwijs ben!!!!

maar ik moet het gewoon weten.
Ik zie het veld ID ook niet echt aangemaakt worden.........

- This line is intentionally left blank -


Verwijderd

Topicstarter
het moet dus gewoon als volgt??
code:
1
2
3
4
5
6
7
8
9
mysql> CREATE TABLE guestbook 
    -> (ID ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> naam VARCHAR(100),
    -> woonplaats VARCHAR(100),
    -> email VARCHAR(100),
    -> site VARCHAR(100),
    -> website VARCHAR(100),
    -> message TEXT
    -> );

net als in mijn eerste table??

Alleen klopt die regel van ID niet denk ik.
Maar wat moet het wel zijn???

klopt inderdaad niet heb het getest.
krijg er een error 1064 op.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Op vrijdag 25 januari 2002 00:27 schreef nekton het volgende:
code:
1
2
3
4
5
6
7
8
9
mysql> CREATE TABLE guestbook 
    -> (ID ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    -> naam VARCHAR(100),
    -> woonplaats VARCHAR(100),
    -> email VARCHAR(100),
    -> site VARCHAR(100),
    -> website VARCHAR(100),
    -> message TEXT
    -> );

Alleen klopt die regel van ID niet denk ik.
Maar wat moet het wel zijn???
Je hebt twee keer ID staan, om te beginnen. Verder weet ik niet zeker of die primary key daar mag staan (zou heel goed kunnen hoor); ik doe het meestal zo: CREATE TABLE xxx (id INT NOT NULL AUTO_INCREMENT, ..., ..., ..., PRIMARY KEY (id))

Verwijderd

Topicstarter
Oke dankje, ik zal eens kijken of het werkt.
Pagina: 1