Update met mysql werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

KJ Da

KJ Da

23/09/2010 20:57:29
Quote Anchor link
Van de onderstaande code werkt Toevoegen en Verwijderen goed. Alleen bijwerken niet.

Ik heb een textarea waarmee je je berichtje kan typen en dan toevoegen en dan wordt het aan de database toegevoegd en in de andere pagina geupdated.

Als je bericht wil verwijderen moet je in een textarea de id typen en met de knop wordt de id verwijderd uit de database.

Alvorens je het bericht wil bijwerken moet je de id in textarea typen en dan wordt het bericht opgehaald. Hier kan je je bericht aanpassen en dan vervolgens op update klikken. Helaas werkt het hier niet goed:

Quote:
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id='" .$id. "'";

Uitkomst bij echo is dan: UPDATE tblBlog SET message ='Tekstvoorbeeld!' WHERE id='10'

Ik heb ook geprobeerd, maar zonder succes:

Quote:
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id=" .$id.;


Als ik manueel inzet, dan werkt het wel goed:

Quote:
$query = "UPDATE tblBlog SET message ='Tekstvoorbeeld' WHERE id=10";



Message is string, id is integer.


Quote:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php

// inloggegevens om database op te halen
include("inlog.inc");
$global_dbh = mysql_connect($hostname, $username, $password) or die("Failure to communicate with database");;
mysql_select_db($db, $global_dbh);

// Initialiseren anders krijg je Undefined variable-foutmelding
$boodschap = "";
$datum = "";
$success_msg = "";
$id = "";

// Knop Verwijderen
if(isset($_POST['Verwijder'])){
    if(!empty($_POST['boodschap'])) {
        $id = $_POST['boodschap'];
        $sql_query = "SELECT * FROM tblBlog WHERE id=$id";
        $res = mysql_query($sql_query) or die (mysql_error());
        
        if(mysql_num_rows($res)) {
            $sql_query = "DELETE FROM tblBlog WHERE id=".$_POST['boodschap'];
            mysql_query($sql_query) or die (mysql_error());
            echo "<div class='succes'>Het bericht is succesvol verwijderd!</div>";
            $toegevoegd = True;
        }

        else {
            echo "<div class='errors'>Ingevoerde waarde ID bestaat niet of is al verwijderd!</div>";
            $toegevoegd = false;
        }
    }

    else {
        echo "<div class='errors'>Ongeldig bericht ID<br /></div>";
        $toegevoegd = false;
    }


    // Indien correct ingevoerd, ga dan naar Blog-pagina
    if ($toegevoegd) {
       header("location: blog.php");
       exit;
    }
}


// Knop Toevoegen
if(isset($_POST['Toevoeg'])){
         if(!empty($_POST['boodschap'])) {

              // Voeg de waarden toe aan de tabel
              $boodschap = $_POST['boodschap'];
              $datum = gmDate("Y-m-d\TH:i:s\Z");
              $query = "INSERT INTO tblBlog (id, message, tijd) VALUES (null, '$boodschap', '$datum')";
              $result = mysql_query($query);

              // Controleer of de waarden zijn ingevoerd in de tabel
              if (mysql_affected_rows() == 1) {
                 $success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
                 $toegevoegd = True;
              }
else {
                error_log(mysql_error());
                $success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
                $toegevoegd = false;
              }


           // Indien correct ingevoerd, ga dan naar Blog-pagina
           if ($toegevoegd) {
              header("location: blog.php");
              exit;
           }

      }
}


// Knop bijwerken
if(isset($_POST['Update'])){
         $boodschap = $_POST['boodschap'];
         if (intval($boodschap) > 0) {
            $id = $_POST['boodschap'];
            $query = "SELECT * FROM tblBlog WHERE id=$id";
            $result = mysql_query($query);
            $column_count = mysql_num_fields($result); // or die ("display_db_query:" . mysql_error());
            while ($row = mysql_fetch_row($result)) {
                  $boodschap = $row[1];
            }
         }
else {
           $id = $_POST['id'];
           $datum = gmDate("Y-m-d\TH:i:s\Z");
           $query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id='" .$id. "'";
           $result = mysql_query($query) or die ("display_db_query:" . mysql_error());

            // Controleer of de waarden zijn ingevoerd in de tabel
            if (mysql_affected_rows() == 1) {
               $success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
               $toegevoegd = True;
            }
else {
              error_log(mysql_error());
              $success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
              echo($query);
              $toegevoegd = false;
            }
            }


          // Indien correct ingevoerd, ga dan naar Blog-pagina
          /*if ($toegevoegd) {
              header("location: blog.php");
              exit;
          }
          */

}

$thispage = $_SERVER['PHP_SELF']; //Dit is nodig voor heredoc
$form_page = <<< EOFORMPAGE
<HTML>
<
HEAD>
<
/HEAD>
<
BODY>
<
H1>Typ uw blog in:</H1>
$success_msg
<FORM METHOD="post" ACTION="$thispage">
<
TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>

<tr><td>Bericht:</td><td><TEXTAREA NAME="boodschap" ROWS=10 COLS=50>$boodschap</TEXTAREA></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="datum" value="$datum"></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="id" value="$id"></td></tr></table>
<table><TR><TD><INPUT type="submit" name="Toevoeg" value="Toevoeg"></TD>
<TD><INPUT type="submit" name="Verwijder" value="Verwijder"></TD>
<TD><INPUT type="submit" name="Update" value="Update"></TD></TR>
</TD></TR></TABLE>
</FORM>
</BODY>
</HTML>
EOFORMPAGE;
echo $form_page;
?>
 
PHP hulp

PHP hulp

23/12/2024 13:33:59
 
- SanThe -

- SanThe -

23/09/2010 21:13:19
Quote Anchor link
Script is lek => SQL-Injection.
Nette foutafhandeling ontbreekt.
 
KJ Da

KJ Da

23/09/2010 22:35:26
Quote Anchor link
SanThe, wat bedoel je daarmee?
 
- SanThe -

- SanThe -

23/09/2010 22:55:49
Quote Anchor link
KJ Da op 23/09/2010 22:35:26:
SanThe, wat bedoel je daarmee?


Dat je database niet veilig is omdat je door de gebruiker ingegeven gegevens direct en dus onbeschermd in de query zet. Verder zal er een melding op het scherm verschijnen als er iets fout gaat als je een nette foutafhandeling zou hebben. Zonder zo'n melding blijft het gissen waar het fout gaat. Zie de vele topics waar dit al vaak is besproken en kijk ook eens op www.phptuts.nl.
 



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.