INSERT probleem
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:
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:
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
newentry.php:
Code (php)
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
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
<?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';
?>
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:
Code (php)
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
1 Je kunt voor de leesbaarheid je code beter uitlijnen, dus tab's invoegen
2 Dan zie je dat er volgens mij na de eerste if een } mist...
3 Zet helemaal boven aan je script: error_reporting( E_ALL | E_NOTICE );
Volgens mij zijn we dan al een heel eind.
2 Dan zie je dat er volgens mij na de eerste if een } mist...
3 Zet helemaal boven aan je script: error_reporting( E_ALL | E_NOTICE );
Volgens mij zijn we dan al een heel eind.
Dit haakje dat je mist klopt niet, het haakje staat op regel 12, anders word er altijd gecheckt of de query is uitgevoerd.
Helaas doet je ( E_ALL | E_NOTICE ); niks bij mijn script dus weet ik nog steeds niet wat ik mis doet. Alsnog bedankt voor je razendsnelle reactie
Helaas doet je ( E_ALL | E_NOTICE ); niks bij mijn script dus weet ik nog steeds niet wat ik mis doet. Alsnog bedankt voor je razendsnelle reactie
Zet dit bovenin je script.
Het zijn POST variabelen. Dus gebruik ze met $_POST['key'].
Maak je query eens iets netter, en ga SQL-injections tegen.
Variabele buiten quotes.
Edit
Ik vroeg mij al af waar je bleef.
Maak je query eens iets netter, en ga SQL-injections tegen.
Variabele buiten quotes.
Edit
'SanThe:
Zet dit bovenin je script.
Ik vroeg mij al af waar je bleef.
Gewijzigd op 01/01/1970 01:00:00 door Dennis Mertens
variabelen buiten de quotes!
'Dennis:
Ik vroeg mij al af waar je bleef.
Hahaha, maar er moet toch wel het een en ander aan error/notice verschijnen lijkt mij.
Ik Krijg idd errors over mn variabelen maar krijg ze niet goed omgezet in $_POST variabelen, ik weet welke ik moet omzetten en hoe precies, kan iemand mij dat even aangeven?
Omzetten is er niet bij.... je kan de $_POST (array) waarden gewoon controleren en valideren en daarna in je query gebruiken met _real_escape_string er aan toegevoegd.
var_dump en print_r kunnen als hulp dienen om te kijken wat er zich in $_POST / $_GET bevindt.
var_dump en print_r kunnen als hulp dienen om te kijken wat er zich in $_POST / $_GET bevindt.
dat snap ik totaal niet dus...
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
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.
Hou alle $vars buiten de quotes.
Dat moet zijn $_POST['button']
Gebruik om te checken of iets bestaat isset() of empty().
Je html lijkt helemaal nergens op.
Code (php)
Hou alle $vars buiten de quotes.
Ik zie in je script staan:
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:
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)
_
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:
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 :)
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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';
?>
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 ;)




