DELETE FROM werkt niet
Maar ik wil nu als ik op dat fototje druk dat die de post met die id delete
hieronder code voor genereren van lijstje:
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
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
<?php
// aanmaken van pagina en tabel voor wijzigen van een bericht
if ($action == 'bewerk')
{
$sql= "SELECT NieuwsDatum,NieuwsOnderwerp,NieuwsText,NieuwsID,NieuwsGepostDoor FROM nieuws ORDER BY NieuwsID DESC ";
$query = mysql_query($sql) or die(mysql_error());
while($line = mysql_fetch_array($query,MYSQL_NUM))
{
$standaard = 'logo.gif';
$Nieuwsdatum = $line[0];
$NieuwsOnderwerp = $line[1];
$NieuwsText = $line[2];
$id = $line[3];
$nick = $line[4];
/* <tr bgcolor="#ECECEC" onmouseover="this.bgColor=\'#ff9900\'"
onmouseout="this.bgColor=\'#ECECEC\';this.style.cursor=\'pointer\'"
onclick="window.location=\'?page=nieuws&id='.$line[3].'&action=dobewerk\'"> */
echo'
<center>
<table cellpadding="0" cellspacing="0" width="500" border="0">
<tr>
<td width="10%" id="header">ID</td>
<td width="15%" id="header">Naam</td>
<td width="50%" align="center" id="header">Onderwerp</td>
<td width="100%" align="center" id="header">Datum</td>
<td width="10%" id="header"></td>
<td width="10%" id="header" ></td>
</tr>
<tr bgcolor="#2CC0E8" onmouseover="this.bgColor=\'#ff9900\'"
onmouseout="this.bgColor=\'#2CC0E8\';" >
<td id="kolrechts">'.$id.'</td>
<td align="left" id="kolrechts">'.$nick.'</td>
<td align="center" id="kolrechts">'.$NieuwsOnderwerp.'</td>
<td align="center" id="kolrechts">'.$Nieuwsdatum.'</td>
<td>
<a href="?page=nieuws&id='.$line[3].'&action=dobewerk">
<img src="afbeeldingen/knoppen/wijzig.gif" alt="wijzig" width="16" height="16" id="noborder">
<a/>
</td>
<td>
<a href="?page=nieuws&id='.$line[3].'&action=dodelete">
<img src="afbeeldingen/knoppen/delete.gif" alt="delete" width="16" height="16" id="noborder">
</a>
</td>
</tr>
</table>
</center>';
}
}
?>
// aanmaken van pagina en tabel voor wijzigen van een bericht
if ($action == 'bewerk')
{
$sql= "SELECT NieuwsDatum,NieuwsOnderwerp,NieuwsText,NieuwsID,NieuwsGepostDoor FROM nieuws ORDER BY NieuwsID DESC ";
$query = mysql_query($sql) or die(mysql_error());
while($line = mysql_fetch_array($query,MYSQL_NUM))
{
$standaard = 'logo.gif';
$Nieuwsdatum = $line[0];
$NieuwsOnderwerp = $line[1];
$NieuwsText = $line[2];
$id = $line[3];
$nick = $line[4];
/* <tr bgcolor="#ECECEC" onmouseover="this.bgColor=\'#ff9900\'"
onmouseout="this.bgColor=\'#ECECEC\';this.style.cursor=\'pointer\'"
onclick="window.location=\'?page=nieuws&id='.$line[3].'&action=dobewerk\'"> */
echo'
<center>
<table cellpadding="0" cellspacing="0" width="500" border="0">
<tr>
<td width="10%" id="header">ID</td>
<td width="15%" id="header">Naam</td>
<td width="50%" align="center" id="header">Onderwerp</td>
<td width="100%" align="center" id="header">Datum</td>
<td width="10%" id="header"></td>
<td width="10%" id="header" ></td>
</tr>
<tr bgcolor="#2CC0E8" onmouseover="this.bgColor=\'#ff9900\'"
onmouseout="this.bgColor=\'#2CC0E8\';" >
<td id="kolrechts">'.$id.'</td>
<td align="left" id="kolrechts">'.$nick.'</td>
<td align="center" id="kolrechts">'.$NieuwsOnderwerp.'</td>
<td align="center" id="kolrechts">'.$Nieuwsdatum.'</td>
<td>
<a href="?page=nieuws&id='.$line[3].'&action=dobewerk">
<img src="afbeeldingen/knoppen/wijzig.gif" alt="wijzig" width="16" height="16" id="noborder">
<a/>
</td>
<td>
<a href="?page=nieuws&id='.$line[3].'&action=dodelete">
<img src="afbeeldingen/knoppen/delete.gif" alt="delete" width="16" height="16" id="noborder">
</a>
</td>
</tr>
</table>
</center>';
}
}
?>
en dit is query om te deleten, dit werkt NIET , iemand enig idee waarom ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if($action == 'dodelete')
{
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."'";
$result = mysql_query($sql2) or die('Kan het nieuwsbericht niet verwijderen!');
echo 'Het nieuwsbericht werd succesvol verwijderd, u keert nu terug naar de site.
<meta http-equiv="refresh" content="1;URL=index.php" />';
}
?>
if($action == 'dodelete')
{
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."'";
$result = mysql_query($sql2) or die('Kan het nieuwsbericht niet verwijderen!');
echo 'Het nieuwsbericht werd succesvol verwijderd, u keert nu terug naar de site.
<meta http-equiv="refresh" content="1;URL=index.php" />';
}
?>
- Waar komt $id vandaan
- Het is een goede gewoonte om bij DELETE query's waarbij er maar 1 resultaat verwijderd moet worden, even LIMIT 1 erachter te zetten
- Als je even de mysql_error() echoot, dan weet je waarschijnlijk precies wat er verkeerd gaat
id = $line[3];
ik heb er hetvolgende van gemaakt
Code (php)
1
2
3
4
2
3
4
<?
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1";
$result = mysql_query($sql2) or die(mysql_error());
?>
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1";
$result = mysql_query($sql2) or die(mysql_error());
?>
maar ik krijg geen error, ik krijg mijn boodschapje dat hij zogezegd gedelete is, wat dus niet het geval blijkt te zijn.
mysql_affected_rows() gebruiken om te checken hoeveel er is verwijderd en de query echoen om te zien wat er richting database is gestuurd. Daar word je altijd een stuk wijzer van.
Voer dit eens uit:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$sql_select = mysql_query("SELECT id FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1");
if($sql_select)
{
echo 'SELECT Query met succes uitgevoerd, aantal rijen gevonden: '.mysql_num_rows($sql_select).'<br />';
$sql_delete = mysql_query("DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1");
if($sql_delete)
{
echo 'DELETE Query met succes uitgevoerd';
}
else
{
echo 'DELETE Query mislukt, error: '.mysql_error();
}
}
else
{
echo 'SELECT Query mislukt, error:'.mysql_error();
}
?>
$sql_select = mysql_query("SELECT id FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1");
if($sql_select)
{
echo 'SELECT Query met succes uitgevoerd, aantal rijen gevonden: '.mysql_num_rows($sql_select).'<br />';
$sql_delete = mysql_query("DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1");
if($sql_delete)
{
echo 'DELETE Query met succes uitgevoerd';
}
else
{
echo 'DELETE Query mislukt, error: '.mysql_error();
}
}
else
{
echo 'SELECT Query mislukt, error:'.mysql_error();
}
?>
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
if($action == 'dodelete')
{
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1";
$result = mysql_query($sql2) or die (mysql_affected_rows()) ;
echo $result;
}
?>
if($action == 'dodelete')
{
$sql2 = "DELETE FROM nieuws WHERE NieuwsID = '".$id."' LIMIT 1";
$result = mysql_query($sql2) or die (mysql_affected_rows()) ;
echo $result;
}
?>
dit is de url dat ik heb dus hij neemt de url en de action juist over
/localhost/site/nieuwsadmin.php?page=nieuws&id=105&action=dodelete
en hij retourneert mj van de echo
het getal 1
anyway, hij vind dus blijkbaar mijn lijn niet want ik krijg hetvolgende
SELECT Query met succes uitgevoerd, aantal rijen gevonden: 0
DELETE Query met succes uitgevoerd
best wel lullig :s
Zoek daar maar eens op. Jouw script is in elk geval flink achterhaald en onveilig.
Voilá, dan weet je waar het probleem zit. MySQL ziet de rij die jij wilt verwijderen niet eens, laat staan dat hij die rij kan verwijderen...
nou momenteel delte is al wel, maar er is nog iets mis, hij delete enkel de meest recente. dus er is nog steeds iets mis met de id, alvast al erg bedankt voor jullie hulp
de superglobals hebben het gedaan :)
many thanks