invoeren in db werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Willem van beek

willem van beek

16/01/2009 16:41:00
Quote Anchor link
hallo, nu heb ik een poging gedaan om een bod toe te voegen in mijn db
nu word eerder in het script hier al een connectie mee gemaakt en word niet afgesloten. als het bod hoger is dan een oud bod krijg je de INSERT code alleen word er bij het uitvoeren hier van niks ingevoerd,,,
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
<?php
    $bod
= $_POST['bod'];
    if(isset($var, $bod) && $var < $bod){
            echo "dank u";
        $naam = $_POST['naam'];
        $email = $_POST['email'];
    $sql = "INSERT INTO 'bieding'";
    $sql .= "('naam', 'email', 'bod') ";
    $sql .= " VALUES";
    $sql .= "('$naam', '$email', '$bod')";
    }
else{
        echo" uw bod is niet hoog genoeg ";
?>

[\code]
 
PHP hulp

PHP hulp

30/11/2024 05:49:22
 
Jesper Diovo

Jesper Diovo

16/01/2009 16:42:00
Quote Anchor link
'bieding' is geen tabelnaam maar een waarde. In een waarde kan niks worden ingevoerd. Haal die enkele quotes dus maar weg ;-).
 
Bart Tuma

Bart Tuma

16/01/2009 16:46:00
Quote Anchor link
Heb je de handleiding van Sql al door gelezen ?... dat zou ik eerst eens doen.
http://phphulp.jorendewit.nl/view/41/

Want:

- Er wordt niet gecontroleerd of de velden wel zijn ingevuld
- sql-injecties worden niet gecontroleerd
- en waar om $sql = "..." enzo ?

edit:
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
<?php
$bod
= mysql_real_escape_string($_POST['bod']); // Alle verboden tekens en alles waar sql niet tegenkan blokkeren!.

if( isset($var, $bod) && !empty($var) && !empty($bod) ) {

    if( $var < $bod ) {
    
        /*
        Bod was goed, invoeren in database
        Zorg dat je bod wel op geldigheid wordt gecontrolleerd bijvoorbeeld dat het is 14.00 i.p.v. 1r.00...
        en check of de overige velden zijn ingevuld (naam en e-mail).
        */

        
    } else {
    
        // Bod is te laag.
        echo 'Het bod wat u gaf was te laag, probeer opnieuw.';
        
    }

}

?>
Gewijzigd op 01/01/1970 01:00:00 door Bart Tuma
 
Willem van beek

willem van beek

16/01/2009 16:52:00
Quote Anchor link
ok dan krijg ik dit:

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
<?php
    $bod
= $_POST['bod'];
    if(isset($var, $bod) && $var < $bod){
       $rs=odbc_exec($conn, $sql);
            echo "dank u";
        $naam = $_POST['naam'];
        $email = $_POST['email'];
    $sql = "INSERT INTO bieding";
    $sql .= "('naam, email, bod) ";
    $sql .= " VALUES";
    $sql .= "($naam, $email, $bod)";
    }
else{
        echo" uw bod is niet hoog genoeg ";
?>


nu helaas nog geen extra record nu heb ik dit toegevoegd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$rs=odbc_exec($conn, $sql);
[\code]
maar dat maakt ook geen verschil is het soms zo dat ik toch op nieuw eerst moet verbinden ?
 
Willem van beek

willem van beek

16/01/2009 16:53:00
Quote Anchor link
ok hier de volledige code misschien helpt het wat beter:
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
68
69
70
71
72
73
74
75
76
77
<?php
<form id="form1" method="post" action="<?php $_SERVER['PHP_SELF']?>">
  <
table width="203" height="114" border="0">
    <
tr>
      <
td width="48">naam: </td>
      <
td width="145"><input type="text" name="naam" id="naam" /></td>
    <
/tr>
    <
tr>
      <
td>email:</td>
      <
td><input type="text" name="email" id="email" /></td>
    <
/tr>
    <
tr>
      <
td><label>bod: </label></td>
      <
td><input type="text" name="bod" id="bod" /></td>
    <
/tr>
  <
/table>
  <
p>
    <
label>
    <
input type="submit" name="submit" id="submit" value="Plaats bod" />
    <
/label>
  <
/p>
<
/form>
[
code]<?php
if(isset($_POST['bod'])){
    if (empty($_POST['naam'])) {
        echo "Je hebt geen naam ingevuld, Probeer nogmaals.";
    }
else if (empty($_POST['email'])) {
        echo "Je hebt geen email ingevuld, Probeer nogmaals.";
    }
else if (empty($_POST['bod'])) {
        echo "Je hebt geen bod ingevoerd, Probeer nogmaals.";
    }
else {

    //connectie maken met db
    $conn=odbc_connect('website','','');
        if (isset($_POST['bod'])) {    
            if (!$conn) {
                exit("Connection Failed: " . $conn);
            }
        }

         //tabel ordenen
                    $sql = "
                               SELECT TOP 1 bieding.bod AS bod
                            FROM
                                bieding
                            ORDER BY
                                bieding.bod DESC
"
;
        $rs=odbc_exec($conn,$sql);
            if (!$rs){
                trigger_error(odbc_error().'<br />In query: '.$sql);
            }

            elseif(odbc_num_rows($rs) == 0)
            {

                echo 'Geen resultaten gevonden';
            }
else{
                //als rij is gevonden oprapen en dan gebruiken (weergeven of in een variabele stoppen)
               while($row = odbc_fetch_row($rs))
            {

            $var = odbc_result($rs,1);
        }
    }

    $bod = $_POST['bod'];
    if(isset($var, $bod) && $var < $bod){
    $rs=odbc_exec($conn, $sql);
        echo "dank u";
        $naam = $_POST['naam'];
        $email = $_POST['email'];
    $sql = "INSERT INTO bieding";
    $sql .= "(naam, email, bod) ";
    $sql .= " VALUES";
    $sql .= "($naam, $email, $bod)";
    }
else{
        echo" uw bod is niet hoog genoeg ";
}
}
}

    ?>
Gewijzigd op 01/01/1970 01:00:00 door willem van beek
 
Frank -

Frank -

16/01/2009 16:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
= "INSERT INTO bieding";
    $sql .= "('naam, email, bod) ";
    $sql .= " VALUES";
    $sql .= "($naam, $email, $bod)";
?>

Mag je veranderen in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
= "INSERT INTO bieding
    (naam, email, bod)
     VALUES
    ('"
.$naam."', '".$email."', '".$bod."')";
?>

Uiteraard moet je de variabelen nog beveiligen tegen SQL-injection, zie de php-handleiding over odbc en de bijbehorende escape-functie.

Edit: Nog een foute quote verwijderd
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Frank -

Frank -

16/01/2009 16:55:00
Quote Anchor link
edit: dubbelpost
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Willem van beek

willem van beek

16/01/2009 17:01:00
Quote Anchor link
okej nu dat te veranderd hebben kijk ik even in mijn db ennog steeds geen extra rij, zou het dan kunnen liggen aan mijn connectie met mijn db ?
het beveiligen tegen sql-injection kan altijd nog ^^ ben best nieuw met php en kan niet alles tegelijk zou ik zeggen, heb hier en dik boek waar ik dus ook niet veel wijzer van word :P
 
Bart Tuma

Bart Tuma

16/01/2009 17:08:00
Quote Anchor link
... "kan altijd nog..." dat is niet slim helemaal niet zelfs, doe het gelijk goed!.
je kan hoog of laag springen, maar het zal toch moeten tenzij je natuurlijk iemand je website mag / gaat knoeien.

http://phphulp.jorendewit.nl/view/41/1/ altijd wel handig om even door te lezen, en dat boek weg...

zie mijn edit voor een kleine toevoeging aan pqFrank... m.b.t. controle velden.
 
Willem van beek

willem van beek

16/01/2009 17:16:00
Quote Anchor link
ok dan zal ik daar wel even mijn weg inlezen, om die beveiliging in te bouwen,
en dat dus even aan te passen.. al zal dat wel even tijd gaan kosten maar het is dus wel de moeite waard,,ok dat boek is van de tafel,,*plof* als ik die site eens bekijk en even vergelijk gaat alles op zich wel goed maar toch vreemd dat er niks in mijn db komt ik blijf het dus nu even achter de connectie aan zitten al kan hij wel eerder in het script dingen uitlezen,,,
 
Willem van beek

willem van beek

16/01/2009 17:35:00
Quote Anchor link
mijn connectie was idd niet helemaal af blijkt heb het nu gecorigrred en dat werkt nu, nu nog mezelf inlezen op het sql-injection pobleem

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
<?php
$bod
= $_POST['bod'];
    if(isset($var, $bod) && $var < $bod){
        $naam = $_POST['naam'];
        $email = $_POST['email'];
    require_once 'phpconfig.php';
    $sql = "INSERT INTO bieding
    (naam, email, bod)
     VALUES
    ('"
.$naam."', '".$email."', '".$bod."')";
    $rs=odbc_exec($conn,$sql);
            if (!$rs){
                trigger_error(odbc_error().'<br />In query: '.$sql);
            }

    echo "dank u";
    }
else{
        echo" uw bod is niet hoog genoeg ";
?>
 



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.