sql insert en sql update in if else statement
dat als je op de submit button klikt, dat hij dan altijd KL_voornaam in de tabel klant zet,
en als de betreffende tafel overeenkomt met bijvoorbeeld tafel1tijd1 OF tafel1tijd2 OF tafel1tijd3 dat ie dan KL_voornaam in de tabel tijd neerzet.
het gaat fout bij de if else statements van tafel1tijd1, tafel1tijd2, tafel1tijd3, alleen weet ik dan niet hoe het anders moet
hij zet wel KL_voornaam in de tabel klant, maar doet verder niets met tafel1tijd1 of tafel1tijd2 of tafel1tijd3
ben er al een tijdje mee bezig ik heb allerlei dingen geprobeerd.
als iemand een betere constructie heeft dan hoor ik dat graag.
zie code:
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
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
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
<?
error_reporting(E_ALL);
include "connect_db.php";
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
echo "database connectie mislukt!";
exit();
}
if ($_POST['submit'] &&
$_POST['KL_voornaam'])
{
$sql = "INSERT INTO klant SET ";
$sql .= "KL_id = ''";
$sql .= ",KL_voornaam = '" . $_POST['KL_voornaam'] . "'";
$error = "er ging iets fout";
if (($_GET["tafel"]) == "tafel1tijd1") {
$sql = "UPDATE tijd SET TD_eerste = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
if (($_GET["tafel"]) == "tafel1tijd2") {
$sql = "UPDATE tijd SET TD_tweede = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
if (($_GET["tafel"]) == "tafel1tijd3") {
$sql = "UPDATE tijd SET TD_derde = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
echo "invoer toegevoegd. <br><br> pagina wordt na 1 seconde herladen...";
echo "<meta http-equiv=\"refresh\" content=\"10;URL=overzicht_res_aanmaak.php\">";
}
else
echo "invoeren in database mislukt.";
}
else
{
if ($_POST['submit'])
echo "Enkele velden vergeten!";
}
echo "<h2>reserveringsformulier + koppeling naar res overzicht tabel</h2>";
echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "Naam:<br>";
echo "<input type=\"text\" name=\"KL_voornaam\" value=\"" . htmlentities($_POST['KL_voornaam']) . "\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"invoeren in database!\">";
echo "</form>";
?>
error_reporting(E_ALL);
include "connect_db.php";
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
echo "database connectie mislukt!";
exit();
}
if ($_POST['submit'] &&
$_POST['KL_voornaam'])
{
$sql = "INSERT INTO klant SET ";
$sql .= "KL_id = ''";
$sql .= ",KL_voornaam = '" . $_POST['KL_voornaam'] . "'";
$error = "er ging iets fout";
if (($_GET["tafel"]) == "tafel1tijd1") {
$sql = "UPDATE tijd SET TD_eerste = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
if (($_GET["tafel"]) == "tafel1tijd2") {
$sql = "UPDATE tijd SET TD_tweede = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
if (($_GET["tafel"]) == "tafel1tijd3") {
$sql = "UPDATE tijd SET TD_derde = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo $error;
}
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
echo "invoer toegevoegd. <br><br> pagina wordt na 1 seconde herladen...";
echo "<meta http-equiv=\"refresh\" content=\"10;URL=overzicht_res_aanmaak.php\">";
}
else
echo "invoeren in database mislukt.";
}
else
{
if ($_POST['submit'])
echo "Enkele velden vergeten!";
}
echo "<h2>reserveringsformulier + koppeling naar res overzicht tabel</h2>";
echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "Naam:<br>";
echo "<input type=\"text\" name=\"KL_voornaam\" value=\"" . htmlentities($_POST['KL_voornaam']) . "\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"invoeren in database!\">";
echo "</form>";
?>
Verder zijn er nog meer onderdelen van het script waar ik niets van snap, wat is bv. de bedoeling van
? En wat dacht je van de if($res) ? Deze zal altijd TRUE zijn, FALSE is dankzij de die() , een paar regels eerder, onmogelijk.
Kortom, de logica zit niet goed in elkaar.
Quote:
Je maakt een $sql aan waarin een INSERT-query staat. Vervolgens ga je deze overschrijven met een $sql waarin een UPDATE-query staat. De eerste query heb je echter nog niet uitgevoerd!
okay, daar heb je gelijk in, maar... sql INSERT doet ie wel maar de updates niet.
hoe kan ik dat oplossen? dat ie wel altijd KL_voornaam in tabel klant zet en als $_GET["tafel"] overeenkomt met bijvoorbeeld tafel1tijd2 dat ie die bepaalde update doet? de if else statements anders zetten ?
je hebt een hoop if-else-jes staan die allemaal dezelfde $error kunnen opleveren. Dat is niet handig met debuggen, nu weet je nooit waar het misgaat. Tenslotte doe je niets met $error, je weet dus nooit of er iets is foutgegaan. Echo deze eens, dan kom je vast wel wat verder.
ik denk dat er dus iets fout zit in de of else statements...?
En 3 x dezelfde foutmelding, dat is je eigen fout, daar vraag je zelf om.
$sql_update
@Klaasjan alles verandert naar $sql_update, maar hoe laat ik dat dan uitvoeren?
ben nog steeds lerend...
je zou me er heel erg mee helpen, ben er al zolang mee bezig...
Geef even je script zoals het nu is, dan kunnen we kijken.
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
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
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
<?
error_reporting(E_ALL);
include "connect_db.php";
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
echo "database connectie mislukt!";
exit();
}
if ($_POST['submit'] &&
$_POST['KL_voornaam'])
{
$sql = "INSERT INTO klant SET ";
$sql .= "KL_id = ''";
$sql .= ",KL_voornaam = '" . $_POST['KL_voornaam'] . "'";
if (($_GET["tafel"]) == "tafel1tijd1") {
$sql_update = "UPDATE tijd SET TD_eerste = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd1 fout";
}
if (($_GET["tafel"]) == "tafel1tijd2") {
$sql_update = "UPDATE tijd SET TD_tweede = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd2 fout";
}
if (($_GET["tafel"]) == "tafel1tijd3") {
$sql_update = "UPDATE tijd SET TD_derde = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd3 fout";
}
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
echo "invoer toegevoegd. <br><br> pagina wordt na 1 seconde herladen...";
echo "<meta http-equiv=\"refresh\" content=\"10;URL=overzicht_res_aanmaak.php\">";
}
else
{
echo "invoeren in database mislukt.";
}
}
else
{
if ($_POST['submit'])
echo "Enkele velden vergeten!";
}
echo "<h2>reserveringsformulier + koppeling naar res overzicht tabel</h2>";
echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "Naam:<br>";
echo "<input type=\"text\" name=\"KL_voornaam\" value=\"" . htmlentities($_POST['KL_voornaam']) . "\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"invoeren in database!\">";
echo "</form>";
?>
error_reporting(E_ALL);
include "connect_db.php";
if (!@mysql_select_db($mysql_dbn, @mysql_connect($mysql_host, $mysql_user, $mysql_pass)))
{
echo "database connectie mislukt!";
exit();
}
if ($_POST['submit'] &&
$_POST['KL_voornaam'])
{
$sql = "INSERT INTO klant SET ";
$sql .= "KL_id = ''";
$sql .= ",KL_voornaam = '" . $_POST['KL_voornaam'] . "'";
if (($_GET["tafel"]) == "tafel1tijd1") {
$sql_update = "UPDATE tijd SET TD_eerste = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd1 fout";
}
if (($_GET["tafel"]) == "tafel1tijd2") {
$sql_update = "UPDATE tijd SET TD_tweede = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd2 fout";
}
if (($_GET["tafel"]) == "tafel1tijd3") {
$sql_update = "UPDATE tijd SET TD_derde = '" . $_POST['KL_voornaam'] . "' WHERE TD_id = 1";
}
else
{
echo "tafel1tijd3 fout";
}
$res = mysql_query($sql) or die(mysql_error());
if ($res)
{
echo "invoer toegevoegd. <br><br> pagina wordt na 1 seconde herladen...";
echo "<meta http-equiv=\"refresh\" content=\"10;URL=overzicht_res_aanmaak.php\">";
}
else
{
echo "invoeren in database mislukt.";
}
}
else
{
if ($_POST['submit'])
echo "Enkele velden vergeten!";
}
echo "<h2>reserveringsformulier + koppeling naar res overzicht tabel</h2>";
echo "<form method=\"POST\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
echo "Naam:<br>";
echo "<input type=\"text\" name=\"KL_voornaam\" value=\"" . htmlentities($_POST['KL_voornaam']) . "\"><br>";
echo "<input type=\"submit\" name=\"submit\" value=\"invoeren in database!\">";
echo "</form>";
?>
kan iemand mij een tip geven in de goede richting? ik zou je er erg dankbaar voor zijn!
En waarom controleer je niet of $_POST['KL_voornaam'] juiste gegevens bevat? Nu kan deze leeg zijn. Verder bestaat er een levensgrote kans op SQL-injection, de functie mysql_real_escape_string() is in geen velden of wegen te bekennen. En die heb je nodig bij alle user-input (COOKIE, GET, POST, etc.).
@frank
Quote:
Wanneer moet de update-query worden uitgevoerd?
als $_GET["tafel"] overeenkomt met tafel1tijd1 of tafel1tijd2 of tafel1tijd3 dan pas moet ie die bepaalde sql UPDATE doen.
Quote:
En waarom controleer je niet of $_POST['KL_voornaam'] juiste gegevens bevat?
ehm hoe doe je dat?
Quote:
Verder bestaat er een levensgrote kans op SQL-injection
het is niet voor de www maar voor een standalone pc
Quote:
de functie mysql_real_escape_string() is in geen velden of wegen te bekennen. En die heb je nodig bij alle user-input (COOKIE, GET, POST, etc.).
zo vergevorderd ben ik (nog) niet
Quote:
Ja, en? Veiligheid is dan ineens niet meer belangrijk? Zie http://www.php.net/manual/en/function.mysql-real-escape-string.php Je hoeft echt geen expert te zijn om deze functie te gebruiken. Deze functie MOET je ALTIJD gebruiken wanneer je user-input in de database (MySQL) gaat wegschrijven. Doe je dat niet, dan ben je ongelovelijk dom bezig en smeek je gewoon om problemen. Nooit meer vergeten dus! ;)het is niet voor de www maar voor een standalone pc
Dan de update-query: Hoe denk jij dat je een query moet uitvoeren? De insert-query weet je al uit te voeren, dan lijkt het mij een koud kunstje om ook de andere query uit te voeren. Probeer eens wat!
Quote:
Dan de update-query: Hoe denk jij dat je een query moet uitvoeren? De insert-query weet je al uit te voeren, dan lijkt het mij een koud kunstje om ook de andere query uit te voeren. Probeer eens wat!
hmmm als ik dat wist had ik het niet gepost op dit forum... ;)
Quote:
Waarom lukt het jou dan wel om de INSERT-query uit te voeren? Wat is het verschil met een UPDATE-query? Tuurlijk, de SQL is verschillend, maar de manier waarop je de query uitvoert is bij mijn weten niet zo verschillend.hmmm als ik dat wist had ik het niet gepost op dit forum... ;)
Tevens bestaat er nog een handleiding: http://www.php.net/manual/en/function.mysql-query.php
Quote:
De insert-query weet je al uit te voeren, dan lijkt het mij een koud kunstje om ook de andere query uit te voeren.
(diepe zucht) voor mij is het geen koud kunstje, ben nu twee volle dagen hiermee bezig ben nog gisternacht beziggeweest, heb al verschillende keren het hele script doorelkaar gehaald zonder resultaat... blijkbaar heb jij het precies in je hoofd zitten hoe het zou moeten werken... ik niet, dus zou je aub even hiermee willen helpen? ik zou je er erg dankbaar voor zijn!
ben jij in staat om de query $sql uit te voeren. Hoe denk je dan dat je de query $sql_update moet uitvoeren?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?
$res = mysql_query($sql,$sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql and $sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql) or die(mysql_error());
$res = mysql_query($sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql) and mysql_query($sql_update) or die(mysql_error());
//werkt niet
?>
$res = mysql_query($sql,$sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql and $sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql) or die(mysql_error());
$res = mysql_query($sql_update) or die(mysql_error());
//werkt niet
$res = mysql_query($sql) and mysql_query($sql_update) or die(mysql_error());
//werkt niet
?>
heb geen idee Frank
Gewijzigd op 01/01/1970 01:00:00 door David
Quote:
En nu mag ik raden wat er fout gaat? Dacht het niet! Wanneer jij niet meer moeite doet om een oplossing te vinden, dan zal dit nooit wat worden.werkt niet
De juiste oplossing staat overigens in het rijtje.
Veel succes met zoeken.
Gewijzigd op 01/01/1970 01:00:00 door Frank -