sql insert en sql update in if else statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

David

David

27/10/2006 13:21:00
Quote Anchor link
bedoeling van het script is:

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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>";
?>
 
PHP hulp

PHP hulp

18/11/2024 12:41:56
 
Frank -

Frank -

27/10/2006 13:30:00
Quote Anchor link
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!

Verder zijn er nog meer onderdelen van het script waar ik niets van snap, wat is bv. de bedoeling van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
if ($_POST['submit'])
     echo "Enkele velden vergeten!";
}
    
?>

? 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.
 
David

David

27/10/2006 14:00:00
Quote Anchor link
Frank bedankt voor je snelle reactie!

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 ?
 
Frank -

Frank -

27/10/2006 14:03:00
Quote Anchor link
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.
 
David

David

27/10/2006 14:12:00
Quote Anchor link
als ik iets invoer en ik druk op de button dan doet ie wel wat er staat bij de sql INSERT, maar krijg dan wel 3x dezelfde error: er ging iets fout en de mededeling: invoer toegevoegd.

ik denk dat er dus iets fout zit in de of else statements...?
 
Frank -

Frank -

27/10/2006 14:18:00
Quote Anchor link
Welke data bevat $_GET['tafeltijd'] ? Echo deze eens, dan weet je meer.

En 3 x dezelfde foutmelding, dat is je eigen fout, daar vraag je zelf om.
 
Klaasjan Boven

Klaasjan Boven

27/10/2006 14:18:00
Quote Anchor link
Geef de update sqlletjes eens een andere naam bijv
$sql_update
 
David

David

27/10/2006 14:41:00
Quote Anchor link
@Frank $_GET["tafel"] bevat tafel1tijd1 of tafel1tijd2 of tafel1tijd3 en ik heb elke error een andere naam gegeven.

@Klaasjan alles verandert naar $sql_update, maar hoe laat ik dat dan uitvoeren?
 
David

David

27/10/2006 15:29:00
Quote Anchor link
iemand een idee? of een andere constructie?
ben nog steeds lerend...
je zou me er heel erg mee helpen, ben er al zolang mee bezig...
 
Jan Koehoorn

Jan Koehoorn

27/10/2006 16:01:00
Quote Anchor link
Geef even je script zoals het nu is, dan kunnen we kijken.
 
David

David

27/10/2006 16:04:00
Quote Anchor link
dit is hoe de code nu is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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>";
?>
 
David

David

27/10/2006 17:00:00
Quote Anchor link
kan iemand mij een tip geven in de goede richting? ik zou je er erg dankbaar voor zijn!
 
Frank -

Frank -

27/10/2006 17:09:00
Quote Anchor link
Leg ook eens uit wat nu de bedoeling is. Je maakt 2 queries aan, maar je voert er slechts eentje uit. Wanneer moet de update-query worden uitgevoerd?

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.).
 
David

David

27/10/2006 17:22:00
Quote Anchor link
okay, ben nog steeds een beginner...

@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
 
Frank -

Frank -

27/10/2006 17:30:00
Quote Anchor link
Quote:
het is niet voor de www maar voor een standalone pc
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! ;)

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!
 
David

David

27/10/2006 17:38:00
Quote Anchor link
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... ;)
 
Frank -

Frank -

27/10/2006 17:41:00
Quote Anchor link
Quote:
hmmm als ik dat wist had ik het niet gepost op dit forum... ;)
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.

Tevens bestaat er nog een handleiding: http://www.php.net/manual/en/function.mysql-query.php
 
David

David

27/10/2006 18:01:00
Quote Anchor link
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!
 
Frank -

Frank -

27/10/2006 18:04:00
Quote Anchor link
Met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $res = mysql_query($sql) or die(mysql_error());  ?>

ben jij in staat om de query $sql uit te voeren. Hoe denk je dan dat je de query $sql_update moet uitvoeren?
 
David

David

27/10/2006 18:18:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>


heb geen idee Frank
Gewijzigd op 01/01/1970 01:00:00 door David
 
Frank -

Frank -

27/10/2006 18:23:00
Quote Anchor link
Quote:
werkt niet
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.

De juiste oplossing staat overigens in het rijtje.

Veel succes met zoeken.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.