php gastenboek upladen

Status
Niet open voor verdere reacties.
Jahoor dit script moet dat prima kunnen, ik zou zeggen ga er even mee spelen, het is vrij gemakkelijk in gebruik.
 
Beste Hr. Scorpion

in het gastenboek krijg ik nog 1 foutmelding op mijn site
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/deb38778/domains/studieoverzicht.com/public_html/php/gb.php on line 66
We hebben nog geen reacties!

verder, als ik een dag opgeef, precies zoals in het script geschreven staat werkt het niet

<?php
error_reporting(E_ALL);
$host = ""; // Je host
$user = "deb38778_student"; // Je MySQL gebruikersnaam
$pass = "hiphopever"; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database

// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");

// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // => <s></s>

return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>
Gisteren heb ik niet erg veel aandacht aan mijn gastenboek besteed omdat ik bezig ben voor de site waar ik het gastenboek in wil
Maar die dagen daar snap ik niks van, die foutmelding verschijnt geloof ik omdat er nog geen berichten staan

graag advies
 
De foutmelding die je krijgt betekent dat je query mislukt. Verander
PHP:
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC");
eens in
PHP:
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
dan kan je zien wat er misgaat.
 
Table 'deb38778_student.gastenboek' doesn't exist

deze melding krijg ik

maar ik maak geen gebruik van <table>

<?php
error_reporting(E_ALL);
$host = ""; // Je host
$user = "deb38778_student"; // Je MySQL gebruikersnaam
$pass = "hiphopever"; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database

// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");

// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // => <s></s>

return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>
 
De melding slaat op een mysql-table, niet op de HTML-tag "<table>". De melding zegt dat er in de database "deb38778_student" geen table bestaat met de naam "gastenboek".
 
Beste Hr. Supernail

Hartelijk bedankt voor uw reactie morgen zal ik me verdiepen in dit probleem
ik ben nieuw met php, weinig ervaring

Vriendelijke groet: jeroen
 
Unknown column 'datum' in 'order clause'
Deze foutmelding kreeg ik vanochtend

<?php
error_reporting(E_ALL);
$host = ""; // Je host
$user = "deb38778_student"; // Je MySQL gebruikersnaam
$pass = "hiphopever"; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database

// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");

// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // => <s></s>

return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>

ik had rijen 50 gemaakt, ik weet niet wat ik precies in in table moet zetten

waarde null?
ik kreeg ook de melding in php myadmin geenindex? ik dacht' hoe kan dat nou ?
 
De foutmelding die je krijgt betekent dat de table "gastenboek" geen veld (kolom) heeft met als naam "datum".

ik had rijen 50 gemaakt, ik weet niet wat ik precies in in table moet zetten

waarde null?
Sorry, maar ik snap niet wat je hier bedoelt en wat je vraag is.

ik kreeg ook de melding in php myadmin geenindex? ik dacht' hoe kan dat nou ?
Blijkbaar heeft je database geen index.
 
CREATE TABLE `deb38778_student`.`gastenboek` (
`naam` INT( 16 ) NOT NULL ,
`dag` INT( 16 ) NOT NULL ,
`bericht` INT( 250 ) NOT NULL
) ENGINE = MYISAM ;



heb ik het zo goed gedaan?

en dn nog zegd die De ingevulde dagnaam klopt niet!
ik heb echt alles geprobeert

<?php
error_reporting(E_ALL);
$host = ""; // Je host
$user = "deb38778_student"; // Je MySQL gebruikersnaam
$pass = "hiphopever"; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database

// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");

// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // => <s></s>

return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>
 
Laatst bewerkt:
Je INSERT-query probeert 4 velden te vullen: naam, bericht, datum en ip. Je table moet dus in ieder geval deze velden hebben.

De melding die je krijgt lijkt voor te komen als je in het formulier bij "Welke dag is het vandaag:" een andere dag invoert dan de dag van vandaag (vandaag: "dinsdag" (zonder aanhalingstekens)).
 
Geachte Supersnail:

Hierbij ontzettend bedankt voor uw hulp
met nieuwe gastenboek table

CREATE TABLE `deb38778_student`.`gastenboek` (
`naam` INT( 16 ) NOT NULL ,
`bericht` INT( 250 ) NOT NULL ,
`datum` INT( 16 ) NOT NULL ,
`ip` INT( 250 ) NOT NULL
) ENGINE = MYISAM ;

ik heb alleen een vraag: waarom moet ik een veldnaam IP plaatsen en niet ID

ik heb beide mogelijkheden geprobeert en u heeft gelijk het moet IP zijn en niet ID

alvast hartelijk bedankt

met vriendelijke groet: Jeroen


Geachte Supersnail:

Als ik reactie plaats krijg ik dit te zien
Naam: 0
Datum: 2011
Bericht:
0


Ik vul dan in:

Naam: Jeroen
dag: woensdag
Berichtt : Hoi

en dat verschijnt er direct onder :

Naam: 0
Datum: 2011
Bericht:
0
 
Laatst bewerkt:
ik heb alleen een vraag: waarom moet ik een veldnaam IP plaatsen en niet ID

Kijk maar naar je INSERT-query:
PHP:
mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")
Tussen de eerste haakjes staan de veldnamen die deze query invult. Dat zijn hier dus naam, bericht, datum en ip.


Wat betreft je andere probleem zie ik zo snel niet waar het misgaat. Kijk eens met phpMyAdmin wat er in de database staat. Dan weet je of het probleem zit bij het in de database opslaan of bij het uit de database halen.
 
misschien moet ik andere getallen gebruiken ik heb er echt geen ervaring mee

er komt gewoon geen tekst :(
 
kijk zo weinig verstand heb ik ervan
nee er komt helemaal niks in ....
hoe zal u de databbase indelen met welke getallen en moet ik voor INT kiezen of een ander
graag advies
 
HOOOO HOOO !!!!! ik zag het helemaal verkeert
Er staat je hebt twee berichten ontvangen
maar nu : naam: 0 bericht:0 datum 2011 ip: van mijn pc
twee keer?

Help !! waarom onthoud die nou geen naam en bericht ?

Graag advies
 
Oeps, ik zie nu pas dat al je velden van het type INT (alleen voor gehele getallen) zijn. Dat verklaart de waarden die in de database staan. Voor "naam" zou ik, gebaseerd op de HTML-code van je formulier, een VARCHAR(16) gebruiken, voor "bericht" een VARCHAR(500), voor "datum" DATETIME en voor "ip" een VARCHAR(15) gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan