gastenboek mysql error.

Status
Niet open voor verdere reacties.

markus_omega

Gebruiker
Lid geworden
23 apr 2007
Berichten
56
ik probeer al een paar dagen een gastenboek op tezetten met php en mysql. ik ben vrij nieuw met php en databases en heb dus voor mijn gastenboek een tutorial gebruikt. http://www.phpeasystep.com/workshopview.php?id=15 maar ik blijf de zelde fout krijgen.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/soswe3/public_html/viewguestbook.php on line 23


hier onder zie je de code.
PHP:
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong>View Guestbook | <a href="guestbook.php">Sign Guestbook</a> </strong></td>
</tr>
</table>
<br>

<?php

$host="localhost"; // Host name
$username="soswe3_all"; // Mysql username
$password="allvisitors"; // Mysql password
$db_name="soswe3_test"; // Database name
$tbl_name="guestbook"; // Table name

// Connect to server and select database.
 $dbh=mysql_connect ("localhost", "soswe3_all", "allvisitors") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("soswe3_test");

$sql="SELECT * FROM $soswe3_test";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td>ID</td>
<td>:</td>
<td><? echo $rows['id']; ?></td>
</tr>
<tr>
<td width="117">Name</td>
<td width="14">:</td>
<td width="357"><? echo $rows['name']; ?></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td valign="top">Comment</td>
<td valign="top">:</td>
<td><? echo $rows['comment']; ?></td>
</tr>
<tr>
<td valign="top">Date/Time </td>
<td valign="top">:</td>
<td><? echo $rows['datetime']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?
}
mysql_close(); //close database
?>
 
PHP:
$sql="SELECT * FROM $soswe3_test";
Daar zit je fout, haal het dollarteken weg en post dan maar dat hij het doet :D

Even mijzelf indekken: Als hij het niet doet dat bestaat er waarschijnlijk geen tabel die soswe3_test heet.

edit: laten we deze $sql maar gebruiken
PHP:
$sql="SELECT * FROM gastenboek";
 
Laatst bewerkt:
ja het werkt nog steeds niet. ik heb de code veranderd zoals je zei. ik heb een batabase genaamt guestbook gemaakt. en ik krijg nog steeds de zelfde fout. en ik weet zeker dat de database is gemaakt en dat deze een tabel bevat. en de naam klopt. dus het heeft helaas niet gewerkt
 
hier zijn de rest van de bestanden. ik hoop dat dit helpt.
guestbook.php
PHP:
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong>Test Sign Guestbook </strong></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="addguestbook.php">
<td>
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="117">Name</td>
<td width="14">:</td>
<td width="357"><input name="name" type="text" id="name" size="40" /></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input name="email" type="text" id="email" size="40" /></td>
</tr>
<tr>
<td valign="top">Comment</td>
<td valign="top">:</td>
<td><textarea name="comment" cols="40" rows="3" id="comment"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong><a href="viewguestbook.php">View Guestbook</a> </strong></td>
</tr>
</table>

en hier is het derde bestand

addguestbook.php

PHP:
<?php
$host="localhost"; // Host name
$username="soswe3_all"; // Mysql username
$password="allvisitors"; // Mysql password
$db_name="soswe3_guestbook"; // Database name
$tbl_name="guestbook"; // Table name


// Connect to server and select database.
 $dbh=mysql_connect ("localhost", "soswe3_all", "allvisitors") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("soswe3_guestbook");

$datetime=date("y-m-d h:i:s"); //date time

$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')";
$result=mysql_query($sql);

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='viewguestbook.php'>View guestbook</a>"; // link to view guestbook page
}

else {
echo "ERROR";
}

mysql_close();
?>
 
Het lijkt mij altijd prettig om de volgende code te plaatsen achter elke mysql_query (gebruik het zelf ook voor foutmeldingen

$result = mysql_query($sql) or die('ERROR! '.mysql_error()."<br>$sql<br>\n");

hierdoor krijg je meteen terugkoppeling zodra de fout bij de query zit. Als die er zit, weet je ook op welk stuk (hij plaatst de error en de query)

Ik hoop dat dit helpt
 
oke ik heb de code toegevoegt en ik krijg nu deze fout melding .

ERROR! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM' at line 1
SHOW * FROM

als je nu het gastenboek invult word er well een record aan de database toegevoegd maar er staad helemaal niks in.
 
bedankt mrniceguy2002 maar zou je dat misschien iets better uit kunnen leggen. ik weet niet of dit zo goed is :p.

$sql="SELECT (name, email, comment, datetime) FROM $tbl_name VALUES('$name', '$email',


alvast bedankt voor j hulp
 
Nu haal je een aantal dingen door elkaar

SELECT kolom1, kolom2, kolom3 FROM tabelnaam WHERE kolom1 = 'voorwaarde' << haalt gegevens op uit de database.

INSERT INTO tabelnaam (kolom1, kolom2, kolom3) VALUES('waarde1', 'waarde2', 'waarde3') << plaatst gegevens in de database

UPDATE tabelnaam SET kolom1 = 'waarde1' WHERE voorwaarde1 = 'voorwaarde'


Wat wil je precies doen =)
 
ik probeer een gastenboek op te zetten. en ik will er voor zorgen dat als ze in het formulier iets schrijven dat het dan als je op view guestbook klikt dat dan je bericht verschijnt. en dat je dan ook de vorige berichten kan zien.

maar het grootse probleem is dat er niks in de database word gezet.

ik krijg wel een record in de database maar deze is helemaal leeg.
 
Laatst bewerkt:
Ik denk dat je in addguestbook.php de volgende code dan moet veranderen

PHP:
$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')";

in

PHP:
$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$_POST[name]', '$_POST[email]', '$_POST[comment]', '$datetime')";

Je vult de database namelijk met lege waardes ($name, $email, $comment) die alleen binnen guestbook.php bekend zijn. Deze geef je door met de post-methode, waarna je deze op die manier ook kan ophalen...
 
oke ik heb de code verandert maar nu krijg ik weer een hele ander fout .

Parse error: syntax error, unexpected T_IF in /home/soswe3/public_html/addguestbook.php on line 18
 
Zou je de code van addguestbook.php opnieuw kunnen plaatsen.

Waarschijnlijk is er ergens een puntkomma vergeten =)
 
hehehe. ik hoop het :p.

hier is de code :


addguestbook.php


PHP:
<?php
$host="localhost"; // Host name
$username="soswe3_all"; // Mysql username
$password="allvisitors"; // Mysql password
$db_name="soswe3_guestbook"; // Database name
$tbl_name="guestbook"; // Table name


// Connect to server and select database.
 $dbh=mysql_connect ("localhost", "soswe3_all", "allvisitors") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("soswe3_guestbook");

$datetime=date("y-m-d h:i:s"); //date time

$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$_POST[name]', '$_POST[email]', '$_POST[comment]', '$datetime')"

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='viewguestbook.php'>View guestbook</a>"; // link to view guestbook page 
}

else {
echo "ERROR";
}

mysql_close();
?>
 
Je SQL (regel 15 =)) mist inderdaad een puntkomma aan het eind...

Daarnaast wil je nu je resultaat gaan behandelen, terwijl je deze nog niet hebt verkregen.
Na de stap met de SQL opstellen, zal je een lijn moeten toevoegen..

$result = mysql_query($sql) or die('SQL error; '.mysql_error()."<br>$sql<br>");


Dit zorgt ervoor dat de sql-query wordt uitgevoerd op de database.
 
oke cool :) . de addguestbook werkt. de informatie word nu in de database gezet :).

nu krijg ik alleen bij de viewguestbook weer een error.

ERROR! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT * FROM
 
Waarschijnlijk moet het zijn

PHP:
SELECT * FROM $tbl_name

na die verandering... zou je de code dan weer kunnen plaatsen =)
Ik weet niet hoeveel je er aan veranderd hebt :)
 
hoi hoi hoi :) hij werkt. dat was dus mijn eigen fout :p. ik was aan het uitporberen geweest en vergeten om dat terug te zetten.

heel erg bedankt :) je doet je naam echt eer aan. bedankt .
 
oke doe ik . ik heb nog een snel vraagje. hij werkt mu volledig. maar ik zou graag het nieuwste beright als eerste zien.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan