sql record updaten
Inmiddels ben ik weer wat verder, alleen zit ik nu met een database probleem... Weet iemand wat ik nu fout doe ?
Hierbij de code en alvast bedankt voor de tijd :-)
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
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
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
<?php
include ("pages/connect.php");
?>
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$id = (!empty($_POST['id'])) ? $_POST['id'] : 0;
$UpdateQuery = "UPDATE
vangaart_nieuws
SET
titel='".mysql_real_escape_string($_POST['titel'])."' ,
datum='".mysql_real_escape_string($_POST['datum'])."' ,
url='".mysql_real_escape_string($_POST['url'])."' ,
bericht='".mysql_real_escape_string($_POST['bericht'])."'
WHERE
id=".$id;
$resultaat = mysql_query($UpdateQuery) or die(mysql_error());
if ($resultaat) {
echo "Het bericht is geupdate";
} else {
echo "Bericht updaten is mislukt!";
}
} else { // er is niet op post geklikt
$titel = (!empty($_POST['titel'])) ? $_POST['titel'] : '';
$sql = "SELECT titel, datum, url, bericht FROM vangaart_nieuws WHERE id = ".$_GET['id'];
if(!$result = mysql_query($sql))
{
echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster";
}
else
{
if(mysql_num_rows($result) == 0)
{
echo "Er is geen bericht gekozen";
}
else
{
$gegevens = mysql_fetch_assoc($result);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<strong>Wijzigen bericht</strong>
<p><form action="<?php echo $_SERVER["PHP_SELF"]; ?>?page=wijzigen" method="post">
<table width="100%" border="0" cellspacing="0">
<tr>
<td colspan="3">Door middel van dit formulier kunt u zelf uw nieuws of persberichten
wijzigen.<br>
* Let hierbij goed op wat u invult bij het veld url !!, komt u er niet
helemaal uit ? raadpleeg dan de <a href="popup/help.htm" TARGET="popup" onClick="OpenVenster('popup/help.htm'); return false;">help
pagina</a>.</td>
</tr>
<tr>
<td width="20%"> </td>
<td width="3%"> </td>
<td width="77%"> </td>
</tr>
<tr>
<td><strong>ID</strong></td>
<td><strong>:</strong></td>
<td><input name="id" type="text" id="id" size="30"></td>
</tr>
<tr>
<td><strong>Datum</strong></td>
<td><strong>:</strong></td>
<td><input name="datum" type="text" id="datum" size="30" value="<?php echo $gegevens['datum']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"> </td>
</tr>
<tr>
<td><strong>Titel</strong></td>
<td><strong>:</strong></td>
<td><input name="titel" type="text" id="titel" size="30" value="<?php echo $gegevens['titel']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
</tr>
<tr>
<td><strong>Url</strong></td>
<td><strong>:</strong></td>
<td><input name="url" type="text" id="url" value="<?php echo $gegevens['url']; ?>" size="30">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
</tr>
<tr>
<td><strong>Bericht</strong></td>
<td><strong>:</strong></td>
<td rowspan="3"><textarea name="bericht" cols="35" rows="5" value="<?php echo $gegevens['bericht']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input name="submit" type="submit" value="Wijzig bericht"></td>
</tr>
</table>
</form> </p>
</body>
</html>
<?php
}
}
}
?>
include ("pages/connect.php");
?>
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$id = (!empty($_POST['id'])) ? $_POST['id'] : 0;
$UpdateQuery = "UPDATE
vangaart_nieuws
SET
titel='".mysql_real_escape_string($_POST['titel'])."' ,
datum='".mysql_real_escape_string($_POST['datum'])."' ,
url='".mysql_real_escape_string($_POST['url'])."' ,
bericht='".mysql_real_escape_string($_POST['bericht'])."'
WHERE
id=".$id;
$resultaat = mysql_query($UpdateQuery) or die(mysql_error());
if ($resultaat) {
echo "Het bericht is geupdate";
} else {
echo "Bericht updaten is mislukt!";
}
} else { // er is niet op post geklikt
$titel = (!empty($_POST['titel'])) ? $_POST['titel'] : '';
$sql = "SELECT titel, datum, url, bericht FROM vangaart_nieuws WHERE id = ".$_GET['id'];
if(!$result = mysql_query($sql))
{
echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster";
}
else
{
if(mysql_num_rows($result) == 0)
{
echo "Er is geen bericht gekozen";
}
else
{
$gegevens = mysql_fetch_assoc($result);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<strong>Wijzigen bericht</strong>
<p><form action="<?php echo $_SERVER["PHP_SELF"]; ?>?page=wijzigen" method="post">
<table width="100%" border="0" cellspacing="0">
<tr>
<td colspan="3">Door middel van dit formulier kunt u zelf uw nieuws of persberichten
wijzigen.<br>
* Let hierbij goed op wat u invult bij het veld url !!, komt u er niet
helemaal uit ? raadpleeg dan de <a href="popup/help.htm" TARGET="popup" onClick="OpenVenster('popup/help.htm'); return false;">help
pagina</a>.</td>
</tr>
<tr>
<td width="20%"> </td>
<td width="3%"> </td>
<td width="77%"> </td>
</tr>
<tr>
<td><strong>ID</strong></td>
<td><strong>:</strong></td>
<td><input name="id" type="text" id="id" size="30"></td>
</tr>
<tr>
<td><strong>Datum</strong></td>
<td><strong>:</strong></td>
<td><input name="datum" type="text" id="datum" size="30" value="<?php echo $gegevens['datum']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"> </td>
</tr>
<tr>
<td><strong>Titel</strong></td>
<td><strong>:</strong></td>
<td><input name="titel" type="text" id="titel" size="30" value="<?php echo $gegevens['titel']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
</tr>
<tr>
<td><strong>Url</strong></td>
<td><strong>:</strong></td>
<td><input name="url" type="text" id="url" value="<?php echo $gegevens['url']; ?>" size="30">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></td>
</tr>
<tr>
<td><strong>Bericht</strong></td>
<td><strong>:</strong></td>
<td rowspan="3"><textarea name="bericht" cols="35" rows="5" value="<?php echo $gegevens['bericht']; ?>">
<input type="hidden" name="id" value="<?=$_GET['id'];?>"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input name="submit" type="submit" value="Wijzig bericht"></td>
</tr>
</table>
</form> </p>
</body>
</html>
<?php
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";
?>
$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";
?>
doe eens echo $sql en kijk dan verder
Overigens heeft wes een tekst gemaakt over het inkorten van tekst
daar las ik ook iets zoals
if (!empty($_POST)) { extract($_POST); }
te gebruiken i.p.v $poep = $_POST['poep'];
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
echo '$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";'
?>
echo '$sql = "
UPDATE vangaart_nieuws
SET
titel = '$titel',
datum = '$datum',
url = '$url',
bericht = '$bericht',
WHERE id = $id";'
?>
zo ja ( zal denk ik niet... ) dan werkt het niet. De rest van de pagina is wel goed begrijp ik, ik moet me alleen concentreren nu op dit stuk dan ?
Sorry voor alle vragen hoor..
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$id = $_POST['id'];
$titel = $_POST['titel'];
$datum = $_POST['datum'];
$url = $_POST['url'];
$bericht = $_POST['bericht'];
?>
$id = $_POST['id'];
$titel = $_POST['titel'];
$datum = $_POST['datum'];
$url = $_POST['url'];
$bericht = $_POST['bericht'];
?>
Dit is een garantie op problemen. Jij gaat vervolgens alle variabelen zonder enige vorm van controle/beveiling in de query zetten waarmee je een enorm veiligheidslek aanmaakt.
mysql_real_escape_string() is wel de meest minimale beveiliging die je hier nodig hebt. Tevens zul jij moeten controleren of $_POST['id'] een nummer is (ctype_digit() ) en $_POST['datum'] wel een datum is (checkdate() en vervolgens in het iso-formaat yyyy-mm-dd zetten) en tenslotte of $_POST['url'] wel een url is (regex gebruiken).
Zonder deze controles en beveiliging, heb je de garantie dat je een problemen en bugs aan het maken bent. Een goed werkend systeem is echt heel wat anders!
@ Frank, wat je zegt $_POST['id'] een nummer is (ctype_digit() ), doel je hiermee op de waarde van de tabel ? zoals bv varchar ? want heb nog nooit hiervan gehoord namelijk.
Als je me dat zou willen uitleggen graag, want wil het graag allemaal onder de knie krijgen op den duur
Quote:
zeker niemand die zich geroepen voelt om de code aan te passen ?
dit zal je zelf moeten doen..
ook voor je eerste post.. lees eerst even de faq voordat je verder gaat op deze site. http://www.phphulp.nl/faq/
Dit $_SERVER["pages/PHP_SELF"] bestaat niet.
@ Santhe : dat had ik al eerder gehoord inderdaad, had eerst pages/$_SERVER["PHP_SELF"] ook geprobeerd omdat de pagina in die dir staat maar dat werkte ook niet. vandaar dat er een beetje in bleef hangen.
Maar als ik dus de pagina zelf aan roep, dan is het dus alleen $_SERVER["PHP_SELF"] . in ieder geval weer wat bijgeleerd...
Positief denken toch ? :-D
Ik ga me volgende keer opgeven als acteur van lost denk ik...zoals hun voel ik me nu ook...alleen ik zit niet op een warm eiland haha.. maar goed....
Als iemand wat pointers heeft graag..dan kan ik weer wat proberen in elkaar te knutselen.
Weet iemand anders een goed update script dat ik kan aanpassen ? :-(
Gewijzigd op 01/01/1970 01:00:00 door Dennis
kijk even tussen de scripts hier op de site. zit vast wel wat tussen
In ieder geval iedereen die al gereageerd heeft enorm bedankt voor de moeite!
Meer suggesties latijd welkom!
Nu het volgende te tackelen probleem... de database :-) voor de connectie is alles goed ingevuld, alleen ergens hapert het...
Anyone ?
error?
Lekker helder.... Foutmelding....
Post je foutmelding(en), dat maakt helpen een stuk eenvoudiger. :)
Quote:
En wat zegt mysl_error() over deze hapering? Of neem jij aan dat alles wel goed zal gaan en controleer je niet of het ook daadwerkelijk is goedgegaan?alleen ergens hapert het
Debuggen begint bij het controleren van alle uitgevoerde acties. Je hebt namelijk de garantie dat alles wat fout kán gaan, ook fout zál gaan. En is dat niet vandaag, dan is het wel morgen.
Database probleem. Probeer het nog een keer of neem contact op met de webmaster
Daar gaat het fout. Denk dat ik bij het selecteren van de velden wat fout heb gedaan.
Code (php)
1
2
3
4
5
2
3
4
5
$sql = "SELECT titel, datum, url, bericht FROM vangaart_nieuws WHERE id = ".$_GET['id'];
if(!$result = mysql_query($sql))
{
echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster";
}
if(!$result = mysql_query($sql))
{
echo "<b>Database probleem.</b><br> Probeer het nog een keer of neem contact op met de webmaster";
}
Gewijzigd op 01/01/1970 01:00:00 door Dennis
De komma achter url hoort er niet.
Query mislukt.
@ SanThe : misschien een hele fijne lompe donderdagmiddag vraag :-), maar uuhhmmm wat bedoel je precies ?