Probleem met het updaten van een nieuwsbericht.
ben al een tijdje de website aan het updaten, en ben aangekomen bij een script waarmee je gemakkelijk de nieuwsberichten kunt beheren, die in de database staan.
Mijn probleem is simpel, als ik een nieuw item toe voeg, geen probleem. Wil ik dat item gaan verwijderen of bewerken, dan bewerkt/verwijdert het script wel een nieuwsitem, maar niet de juiste. Hij bewerkt/verwijdert het nieuwsitem uit de database wat het laagste id heeft en niet het id van het item wat ik bewerk/verwijder. Iemand oplossingen?
Het is zelf gemaakt, het script staat hieronder.
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
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
<?php
session_start();
ini_set('error_reporting', E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
</head>
<body>
<?php
if($_SESSION['adminlogin'] == "1")
{
$sql = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql))
{
if(isset($_POST["save".$row['id']]))
{
$delen = explode("/", $_POST['plaatsdatum']);
$plaatsdatum = $delen[2] . '-' . $delen[1] . '-' . $delen[0];
$sql2="UPDATE smash_nieuws SET datum='".$plaatsdatum."', naam='".$_POST['naam']."', tekst='".$_POST['tekst']."' WHERE id='".$row['id']."'";
@mysql_query($sql2) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes opgeslagen.</font>".$row['naam']." ".$row['id'];
}
if(isset($_POST["delete".$row['id']]))
{
$sql3="DELETE FROM smash_nieuws WHERE id='".$row['id']."' AND naam='".$row['naam']."'";
@mysql_query($sql3) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes verwijderd.</font>".$row['naam']." ".$row['id'];
}
}
if(isset($_POST['add']) && !empty($_POST['n-plaatsdatum']) && !empty($_POST['n-naam']) && !empty($_POST['n-tekst']))
{
$ndelen = explode("/", $_POST['n-plaatsdatum']);
$nplaatsdatum = $ndelen[2] . '-' . $ndelen[1] . '-' . $ndelen[0];
$sql4="INSERT INTO smash_nieuws SET datum='".$nplaatsdatum."', naam='".$_POST['n-naam']."', tekst='".$_POST['n-tekst']."'";
@mysql_query($sql4) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is succesvol toegevoegd!</font>";
$_POST['n-plaatsdatum'] = "";
$_POST['n-naam'] = "";
$_POST['n-tekst'] = "";
}
?>
<form class="nieuws-bewerken" action="nieuws-bewerken.php" method="post">
<a class="kop">Nieuws</a><br>
<br>
<table border="0" width="800">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $_POST['n-naam']; ?>" name="n-naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo date("d/m/Y"); ?>" name="n-plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="n-tekst"><?php echo $_POST['n-tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="add" value="Toevoegen" onfocus="this.blur();" name="add">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
<?php
$sql5 = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql5))
{
?>
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $row['naam']; ?>" name="naam"> <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo $row['plaatsdatum']; ?>" name="plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="tekst"><?php echo $row['tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="save" value="Opslaan" onfocus="this.blur();" name="save<?php echo $row['id']; ?>"> <input type="submit" class="delete" value="Verwijderen" onfocus="this.blur();" onclick="javascript:return confirm('Weet u zeker dat u het geselecteerde nieuwsitem wilt verwijderen?')" name="delete<?php echo $row['id']; ?>">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
<?php
}
?>
</table>
</form>
<?php
}
?>
</body>
</html>
session_start();
ini_set('error_reporting', E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
</head>
<body>
<?php
if($_SESSION['adminlogin'] == "1")
{
$sql = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql))
{
if(isset($_POST["save".$row['id']]))
{
$delen = explode("/", $_POST['plaatsdatum']);
$plaatsdatum = $delen[2] . '-' . $delen[1] . '-' . $delen[0];
$sql2="UPDATE smash_nieuws SET datum='".$plaatsdatum."', naam='".$_POST['naam']."', tekst='".$_POST['tekst']."' WHERE id='".$row['id']."'";
@mysql_query($sql2) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes opgeslagen.</font>".$row['naam']." ".$row['id'];
}
if(isset($_POST["delete".$row['id']]))
{
$sql3="DELETE FROM smash_nieuws WHERE id='".$row['id']."' AND naam='".$row['naam']."'";
@mysql_query($sql3) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes verwijderd.</font>".$row['naam']." ".$row['id'];
}
}
if(isset($_POST['add']) && !empty($_POST['n-plaatsdatum']) && !empty($_POST['n-naam']) && !empty($_POST['n-tekst']))
{
$ndelen = explode("/", $_POST['n-plaatsdatum']);
$nplaatsdatum = $ndelen[2] . '-' . $ndelen[1] . '-' . $ndelen[0];
$sql4="INSERT INTO smash_nieuws SET datum='".$nplaatsdatum."', naam='".$_POST['n-naam']."', tekst='".$_POST['n-tekst']."'";
@mysql_query($sql4) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is succesvol toegevoegd!</font>";
$_POST['n-plaatsdatum'] = "";
$_POST['n-naam'] = "";
$_POST['n-tekst'] = "";
}
?>
<form class="nieuws-bewerken" action="nieuws-bewerken.php" method="post">
<a class="kop">Nieuws</a><br>
<br>
<table border="0" width="800">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $_POST['n-naam']; ?>" name="n-naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo date("d/m/Y"); ?>" name="n-plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="n-tekst"><?php echo $_POST['n-tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="add" value="Toevoegen" onfocus="this.blur();" name="add">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
<?php
$sql5 = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql5))
{
?>
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $row['naam']; ?>" name="naam"> <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo $row['plaatsdatum']; ?>" name="plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="tekst"><?php echo $row['tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="save" value="Opslaan" onfocus="this.blur();" name="save<?php echo $row['id']; ?>"> <input type="submit" class="delete" value="Verwijderen" onfocus="this.blur();" onclick="javascript:return confirm('Weet u zeker dat u het geselecteerde nieuwsitem wilt verwijderen?')" name="delete<?php echo $row['id']; ?>">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
<?php
}
?>
</table>
</form>
<?php
}
?>
</body>
</html>
Alvast hartstikke bedankt voor diegene die dit op kan lossen!
Gewijzigd op 18/04/2012 16:57:24 door Thomas R
Je moet je code inkorten... En waarom Include je je stylesheet niet?
Fijn dat je zo snel reageert, maar ik vroeg niet om commentaar maar om een oplossing ;) Ik include die niet omdat ik nog niet klaar ben met het bijwerken van het script, zo kan ik de style altijd nog sneller wijzigen.
Thomas Roovers op 18/04/2012 16:50:49:
Fijn dat je zo snel reageert, maar ik vroeg niet om commentaar maar om een oplossing ;) Ik include die niet omdat ik nog niet klaar ben met het bijwerken van het script, zo kan ik de style altijd nog sneller wijzigen.
Ik kan je vertellen dat de meeste reacties van de profs beginnen met "kort even je code in", "haal even het CSS gedeelte weg" en etc. Dat dit niet de oplossing voor je probleem is zag ik ook nog wel in ;)
veel korter kan het php gedeelte trouwens niet volgens mij. en zal de css dan maar weghalen.
Gebruik altijd mysql_real_escape_string in je query.
Tevens is het gebruiken van or die() iets uit de middel eeuwen en word overal sterk afgeraden om deze te gebruiken. Je kunt beter een goede foutafhandeling gebruiken.
Zie voor een uitleg hier: Klik
Tevens zie ik op diverse query's staan SELECT * FROM. Ook dit is geen goede manier.
Je haalt hierbij alle velden op die in de database staan. Stel je hebt 10 velden in je DB, daarvan wil je er ma 4 ophalen. JE haalt nu dus 6x overbodige velden op wat extra overbodige geheugen van je server zal vragen. Je kan beter de velden op de plek van * benoemen die je nodig bent.
EDIT:
Voor je vraag. Bij het updaten of deleten van je gegevens kan je in je form action de id mee geven. iets als action="bewerk.php?id=1" In je update of delete query zet je dan weer: WHERE id = 1. Zo zul je de row met id 1 deleten of updaten.
Gewijzigd op 18/04/2012 17:14:38 door Frank WD
Frank WD op 18/04/2012 17:05:08:
Je query is niet veilig voor SQL-Injection.
Gebruik altijd mysql_real_escape_string in je query.
Tevens is het gebruiken van or die() iets uit de middel eeuwen en word overal sterk afgeraden om deze te gebruiken. Je kunt beter een goede foutafhandeling gebruiken.
Zie voor een uitleg hier: Klik
Tevens zie ik op diverse query's staan SELECT * FROM. Ook dit is geen goede manier.
Je haalt hierbij alle velden op die in de database staan. Stel je hebt 10 velden in je DB, daarvan wil je er ma 4 ophalen. JE haalt nu dus 6x overbodige velden op wat extra overbodige geheugen van je server zal vragen. Je kan beter de velden op de plek van * benoemen die je nodig bent.
Gebruik altijd mysql_real_escape_string in je query.
Tevens is het gebruiken van or die() iets uit de middel eeuwen en word overal sterk afgeraden om deze te gebruiken. Je kunt beter een goede foutafhandeling gebruiken.
Zie voor een uitleg hier: Klik
Tevens zie ik op diverse query's staan SELECT * FROM. Ook dit is geen goede manier.
Je haalt hierbij alle velden op die in de database staan. Stel je hebt 10 velden in je DB, daarvan wil je er ma 4 ophalen. JE haalt nu dus 6x overbodige velden op wat extra overbodige geheugen van je server zal vragen. Je kan beter de velden op de plek van * benoemen die je nodig bent.
Er staan 4 gegevens in de database en ik gebruik ze ook alle vier. Ik zal de rest eens doorlezen, maar opnieuw, dit is commentaar en ik wil graag hulp..
Tevens is dit geen commentaar zoals jij dit ziet.
Dit is hulp bieden bij fouten in je codering, je wilt neem ik aan een code die goed is? Bij een code die goed is hoort ook overige commentaar op je code. Het overige commentaar geef ik jou in mijn vorige bericht.
Voor een oplossing zie mijn laatste toegevoegd stukje tekst.
Tevens ben ik van mening als je het bovenstaande weg schrijft als commentaar? Dan kan ik je niet verder helpen in het probleem.
EDIT:
Als je 4 velden hebt? Dan dien je deze alsnog voluit te schijven in je query.
Je dient dit zelf nog te doen als je 1,000 velden wilt selecteren in je query.
Gewijzigd op 18/04/2012 17:13:36 door Frank WD
Jij bedoelt, als ik de while open, de <form> tag ook pas openen?
Ja dan zul je de id mee moeten geven aan je form. En dan zal deze ook in je While mee moeten.
Je kan het ook oplossen door een hidden input veld meen ik.
Maar als dat de manier is van alles? Dat denk ik persoonlijk weer niet.
Tevens zie ik dat je 3 query's heb in 1 pagina. Dit is normaal 'vind ik' niet de manier. Je kan beter verdelen in 3 pagina's: edit.php - toevoegen.php - delete.php
Dit is een persoonlijke mening, wellicht zal er een ander er anders over denken.
Het is geen commentaar nee, mijn fout, en bedankt.
Reden dat je het eerst ziet als commentaar weet ik ook wel. Je ziet het als commentaar omdat het niks toevoegt in het probleem die je hebt. Maar het is wel zeer relevant op je codering. Excusses hierbij aangenomen.
Hieronder de 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
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
133
134
135
136
137
138
139
140
141
142
143
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
133
134
135
136
137
138
139
140
141
142
143
<?php
session_start();
ini_set('error_reporting', E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
</head>
<body>
<?php
if($_SESSION['adminlogin'] == "1")
{
if(isset($_POST["save"]))
{
$delen = explode("/", $_POST['plaatsdatum']);
$plaatsdatum = $delen[2] . '-' . $delen[1] . '-' . $delen[0];
$sql2="UPDATE smash_nieuws SET datum='".mysql_real_escape_string($plaatsdatum)."', naam='".mysql_real_escape_string($_POST['naam'])."', tekst='".mysql_real_escape_string($_POST['tekst'])."' WHERE id='".$_GET['id']."'";
@mysql_query($sql2) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes opgeslagen.</font>";
}
if(isset($_POST["delete"]))
{
$sql3="DELETE FROM smash_nieuws WHERE id='".$_GET['id']."'";
@mysql_query($sql3) or die(mysql_error());
}
if(isset($_POST['add']) && !empty($_POST['n-plaatsdatum']) && !empty($_POST['n-naam']) && !empty($_POST['n-tekst']))
{
$ndelen = explode("/", $_POST['n-plaatsdatum']);
$nplaatsdatum = $ndelen[2] . '-' . $ndelen[1] . '-' . $ndelen[0];
$sql4="INSERT INTO smash_nieuws SET datum='".mysql_real_escape_string($nplaatsdatum)."', naam='".mysql_real_escape_string($_POST['n-naam'])."', tekst='".mysql_real_escape_string($_POST['n-tekst'])."'";
@mysql_query($sql4) or die(mysql_error());
$_POST['n-plaatsdatum'] = "";
$_POST['n-naam'] = "";
$_POST['n-tekst'] = "";
}
if($sql2)
{
?>
<script>
$(function() {
var $succes = $('#succes');
$succes.slideToggle("slow");
setTimeout( function(){
$succes.slideToggle("slow");
}, 2500);
});
</script>
<?php
}
?>
<a class="kop">Nieuws</a><br>
<br>
<div id="succes" style="display: none;">
<?php
echo $succes.'<br><br>';
?>
</div>
<table border="0" width="800">
<form class="nieuws-bewerken" action="nieuws-bewerken.php" method="post">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $_POST['n-naam']; ?>" name="n-naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo date("d/m/Y"); ?>" name="n-plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="n-tekst"><?php echo $_POST['n-tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="add" value="Toevoegen" onfocus="this.blur();" name="add">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
</form>
<?php
$sql5 = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql5))
{
?>
<form class="nieuws-bewerken" action="nieuws-bewerken.php?id=<?php echo $row['id']; ?>" method="post">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $row['naam']; ?>" name="naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo $row['plaatsdatum']; ?>" name="plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="tekst"><?php echo $row['tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="save" value="Opslaan" onfocus="this.blur();" name="save"> <input type="submit" class="delete" value="Verwijderen" onfocus="this.blur();" onclick="javascript:return confirm('Weet u zeker dat u het geselecteerde nieuwsitem wilt verwijderen?')" name="delete">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
</form>
<?php
}
?>
</table>
<?php
}
?>
</body>
</html>
[size=xsmall][i]Toevoeging op 18/04/2012 17:31:49:[/i][/size]
Ik heb het eerst inderdaad met een hidden field geprobeert, maar dit wertke dus niet.
Ik houd het trouwens allemaal op n pagina omdat dit voor de gebruiker van het script veel duidelijker is, geen weergave verandering of zoiets.
Alles op n pagina en gelijk de wijzigen zien die je doorvoert lijkt me beter toch?
session_start();
ini_set('error_reporting', E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title></title>
</head>
<body>
<?php
if($_SESSION['adminlogin'] == "1")
{
if(isset($_POST["save"]))
{
$delen = explode("/", $_POST['plaatsdatum']);
$plaatsdatum = $delen[2] . '-' . $delen[1] . '-' . $delen[0];
$sql2="UPDATE smash_nieuws SET datum='".mysql_real_escape_string($plaatsdatum)."', naam='".mysql_real_escape_string($_POST['naam'])."', tekst='".mysql_real_escape_string($_POST['tekst'])."' WHERE id='".$_GET['id']."'";
@mysql_query($sql2) or die(mysql_error());
$succes="<font style='color: green; font-weight: bold;'>Het nieuwsitem is met succes opgeslagen.</font>";
}
if(isset($_POST["delete"]))
{
$sql3="DELETE FROM smash_nieuws WHERE id='".$_GET['id']."'";
@mysql_query($sql3) or die(mysql_error());
}
if(isset($_POST['add']) && !empty($_POST['n-plaatsdatum']) && !empty($_POST['n-naam']) && !empty($_POST['n-tekst']))
{
$ndelen = explode("/", $_POST['n-plaatsdatum']);
$nplaatsdatum = $ndelen[2] . '-' . $ndelen[1] . '-' . $ndelen[0];
$sql4="INSERT INTO smash_nieuws SET datum='".mysql_real_escape_string($nplaatsdatum)."', naam='".mysql_real_escape_string($_POST['n-naam'])."', tekst='".mysql_real_escape_string($_POST['n-tekst'])."'";
@mysql_query($sql4) or die(mysql_error());
$_POST['n-plaatsdatum'] = "";
$_POST['n-naam'] = "";
$_POST['n-tekst'] = "";
}
if($sql2)
{
?>
<script>
$(function() {
var $succes = $('#succes');
$succes.slideToggle("slow");
setTimeout( function(){
$succes.slideToggle("slow");
}, 2500);
});
</script>
<?php
}
?>
<a class="kop">Nieuws</a><br>
<br>
<div id="succes" style="display: none;">
<?php
echo $succes.'<br><br>';
?>
</div>
<table border="0" width="800">
<form class="nieuws-bewerken" action="nieuws-bewerken.php" method="post">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $_POST['n-naam']; ?>" name="n-naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo date("d/m/Y"); ?>" name="n-plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="n-tekst"><?php echo $_POST['n-tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="add" value="Toevoegen" onfocus="this.blur();" name="add">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
</form>
<?php
$sql5 = mysql_query("SELECT *, DATE_FORMAT(datum, '%d/%m/%Y') AS plaatsdatum FROM smash_nieuws ORDER BY id DESC") or die(mysql_error());
while($row=mysql_fetch_array($sql5))
{
?>
<form class="nieuws-bewerken" action="nieuws-bewerken.php?id=<?php echo $row['id']; ?>" method="post">
<tr class="top">
<td align="left" width="600">
Naam: <input type="text" class="text" style="width: 300px;" value="<?php echo $row['naam']; ?>" name="naam">
</td>
<td width="200" align="right">
Datum: <input type="text" class="text" style="width: 75px;" value="<?php echo $row['plaatsdatum']; ?>" name="plaatsdatum">
</td>
</tr>
<tr class="bottom">
<td style="padding: 0px;" colspan="2">
<textarea class="nieuwsitem" onSelect="storeCaret(this);" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" wrap="soft" cols="35" rows="6" name="tekst"><?php echo $row['tekst']; ?></textarea>
</td>
</tr>
<tr height="10">
<td></td>
</tr>
<tr height="35">
<td colspan="2" align="center">
<input type="submit" class="save" value="Opslaan" onfocus="this.blur();" name="save"> <input type="submit" class="delete" value="Verwijderen" onfocus="this.blur();" onclick="javascript:return confirm('Weet u zeker dat u het geselecteerde nieuwsitem wilt verwijderen?')" name="delete">
</td>
</tr>
<tr height="20">
<td></td>
</tr>
</form>
<?php
}
?>
</table>
<?php
}
?>
</body>
</html>
[size=xsmall][i]Toevoeging op 18/04/2012 17:31:49:[/i][/size]
Ik heb het eerst inderdaad met een hidden field geprobeert, maar dit wertke dus niet.
Ik houd het trouwens allemaal op n pagina omdat dit voor de gebruiker van het script veel duidelijker is, geen weergave verandering of zoiets.
Alles op n pagina en gelijk de wijzigen zien die je doorvoert lijkt me beter toch?
Hoop alleen dat je ook wat doet met de overige tips.
Succes er mee.
Ik houd het trouwens allemaal op één pagina omdat dit voor de gebruiker van het script veel duidelijker is, geen weergave verandering of zoiets.
Alles op één pagina en gelijk de wijzigen zien die je doorvoert lijkt me beter toch?
Toevoeging op 18/04/2012 17:34:33:
nog één vraagje, als je iets update of insert in de database moet je dus altijd, voor alles, mysql_real_escape_string zetten?
Als je goed controleert of iets een getal is, hoef je daar niet perse mysql_real_escape_string over heen te zetten. Een wachtwoord (uiteraard gecodeerd / met zout en peper) hoeft ook niet.
Iets in de geest als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$query = ("INSERT INTO
table
(
veld_1,
veld_2,
veld_3.
veld_4
)
VALUES
(
'".mysql_real_escape_string($_POST['veld_1'])."',
'".mysql_real_escape_string($_POST['veld_2'])."',
'".mysql_real_escape_string($_POST['veld_3'])."',
'".mysql_real_escape_string($_POST['veld_4'])."'
)");
?>
$query = ("INSERT INTO
table
(
veld_1,
veld_2,
veld_3.
veld_4
)
VALUES
(
'".mysql_real_escape_string($_POST['veld_1'])."',
'".mysql_real_escape_string($_POST['veld_2'])."',
'".mysql_real_escape_string($_POST['veld_3'])."',
'".mysql_real_escape_string($_POST['veld_4'])."'
)");
?>
Het opvragen van je gegevens van de gevens gebruik je verder niks in je query.
Alleen bij het echoén van je rows zul je deze weer moeten omzetten. Dit doe je met html
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
echo '
'. htmlspecialchars($row['veld_1']).'<br />
'. htmlspecialchars($row['veld_2']).'<br/>
'. htmlspecialchars($row['veld_3']).'<br />
'. htmlspecialchars($row['veld_4']).' ';
?>
echo '
'. htmlspecialchars($row['veld_1']).'<br />
'. htmlspecialchars($row['veld_2']).'<br/>
'. htmlspecialchars($row['veld_3']).'<br />
'. htmlspecialchars($row['veld_4']).' ';
?>
Alles op één pagina en gelijk de wijzigen zien die je doorvoert lijkt me beter toch?
Ik zal voor deze opzet kiezen persoonlijk:
+---------------------------------+
| Overzicht alle nieuws berichten |
+-------+----------+-----------+
| Titel 1 | Edit-icon | Dele-icon |
+-------+----------+-----------+
| Titel 2 | Edit-icon | Dele-icon |
+-------+----------+-----------+
| Titel 3 | Edit-icon | Dele-icon |
+-------+----------+----------+
Je hebt dan de volgende pagina's als waarde:
Toevoeg.php: Voor het toevoegen van een nieuw Nieuws Bericht
Overzicht.php: Voor het tonen alle rows op Nieuws Titel
edit.php: Voor het UPDATE van een Nieuws Bericht.
delete.php: Voor het verwijderen van een Nieuws Bericht
Op deze manier hou je alles apart van elkaar.
Gewijzigd op 18/04/2012 18:26:34 door Frank WD
Waarom moet je bij het selecteren van de gegevens uit de tabel, ook weer htmlspecialchars gebruiken?