Ik ben bezig met een gastenboekscript voor mijn site en wil nieuwe entry's via een scriptje willen invoeren. Dit is het script:

newentry.php:

<?php
include 'config.php';
if ($button && $newtopic && $newlocation && $newdate) {
include 'config.php';
$add = "INSERT INTO calender (topic, location, date) VALUES ('$newtopic', '$newlocation', '$newdate')";

if (!mysql_query($add)){
echo "$add_error";}

else {
echo "$add_succes";}
}

else {
echo "<form method=post action=$_SERVER[PHP_SELF]>";
echo "$w_topic <br>";
echo "<input type=text name=newtopic><br><br>";
echo "$w_location <br>";
echo "<input type=text name=newlocation><br><br>";
echo "$w_date <br>";
echo "<input type=text name=newdate><br><br>";
echo "<input type=submit name=button value=$addme>";
echo "</form>";
}

include 'footer.php';
?>

Zodra ik op de knop druk krijg ik hetzelfde scherm weer te zien maar dan met lege velden (logisch --> PHP_SELF), maar er word niks in de database toegevoegd.

Nu heb ik een test.php gemaakt met het volgende:

<?php
include 'config.php';

$add = "INSERT INTO calender (topic, location, date) VALUES ('Je Vader Is een balletje', 'Thuis', '27-03-2009')";

if (!mysql_query($add)){
die($add_error);}

else {
echo "$add_succes";}

?>

In feite hetzelfde alleen dan met vaste waarden zonder formulier. Dit werkt perfect, alleen moet ik via het script telkens de waarde wijzigen wat ik niet wil (aangezien ik anderen ook entry's wil kunnen laten maken).
Iemand een idee hoe ik dit op kan lossen?
Grtz
mmmm.. leuk artikel maar ik zie dus niet wat ik mis heb gedaan en hoe ik het moet veranderen, dus weinig van nut lijkt het me...
Kan iemand gewoon een voorbeeld geven van een stukje uit mn script dat fout is en erbij zetten hoe het wel moet, zodat ik de rest zelf aan kan passen
Alvast bedankt
$button zal niet bestaan. Krijg je een melding op.
Dat moet zijn $_POST['button']

Gebruik om te checken of iets bestaat isset() of empty().

Je html lijkt helemaal nergens op.
<?php
echo "<form method=post action=$_SERVER[PHP_SELF]>";

// Moet zijn:
echo '<form method="post" action="' . $_SERVER['PHP_SELF'] . '">';
?>

Hou alle $vars buiten de quotes.
Ik zie in je script staan:

if ($button && $newtopic && $newlocation && $newdate) {

Maar waar worden in PHP die variabelen voorzien van een waarde?
nergens namelijk, en dus krijg je een 'undefined variabele' error.

Maar goed, we kijken even verder $button.. Ik zie wel in de code staan 'button'. En zelfs in:

echo "<input type=submit name=button value=$addme>";


Daar komt hij vandaan, maar tegenwoordig roepen we dat niet meer zo op. Hoe dan wel?
Heel simpel, het is een POST-formulier, en dus roep je de waarde van die pnvoerbox op met $_POST['button'].

Zo kunnen i.p..v POST ook gebruikt worden:
$_GET (waardes uit een url)
$_COOKIE
$_SESSION
$_SERVER (serveromgeving variabelen)
$_FILES (een uit upload formulier)

_
Ik heb het probleem opgelost door gewoon 2 pagina's te gebruiken, vind het jammer dat het niet ander ging maar het werkt nu goed :)

<?php
include 'config.php';
	if ($button && $newtopic && $newlocation && $newdate) {
include 'config.php';
	$add = "INSERT INTO calender (topic, location, date) VALUES ('".$_POST['newtopic']."', '".$_POST['newlocation']."', NOW())";


if (!mysql_query($add)){
	echo "$add_error";
} else {
	echo "$add_succes";}
} else {
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo "$w_topic <br>";
echo "<input type=text name=newtopic><br><br>";
echo "$w_location <br>";
echo "<input type=text name=newlocation><br><br>";
echo "$w_date <br>";
echo "<input type=text name=newdate><br><br>";
echo "<input type=submit name=button value=$addme>";
echo "</form>";
}

include 'footer.php';
?> 

in deze query zit het verhaalte over het $_POST verwerkt ;)

Reageren