Verwijderen van Advertentie
Als ik een advertentie verwijder, wordt ie verwijderd uit de database maar is nog wel zichtbaar op mijn php pagina. Het controleren welke verwijderknop is geklikt en het laten zien van de advertenties deed ik in één while loop. Nu doe ik dat in een aparte while loop en wordt wel alles verwijderd.
Alleen om het te laten werken moet ik voor beide while loops dezelfde query uitvoeren. Is dat normaal ?
Toevoeging op 13/09/2014 15:27:45:
Dit is mijn 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
define("DBASE","sqlite:../sqlite/Polderlaan_Db.sqlite");
$style = '../.common/default.css';
$table = 'AanbodSpul';
try {
$db = new PDO(DBASE);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
die();
}
function Delete($id) {
global $db, $table;
$test = $db->query("DELETE FROM $table WHERE id = $id");
if($test) echo "ID: $id deleted";
if (is_file("../fotoos/$id.jpg"))
unlink("../fotoos/$id.jpg");
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
define("DBASE","sqlite:../sqlite/Polderlaan_Db.sqlite");
$style = '../.common/default.css';
$table = 'AanbodSpul';
try {
$db = new PDO(DBASE);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e->getMessage();
die();
}
function Delete($id) {
global $db, $table;
$test = $db->query("DELETE FROM $table WHERE id = $id");
if($test) echo "ID: $id deleted";
if (is_file("../fotoos/$id.jpg"))
unlink("../fotoos/$id.jpg");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="pragma" content="no-cache" />
<html>
<head>
<title>Test</title>
<link rel='stylesheet' type='text/css' href='$style'>
</head>
<body>
<table id = 'table'><tr>
<form action='indexbody.php' method='post'>
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
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
<?
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
$i = -1;
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$i++;
$id = $object->id;
if(isset($_POST['delete'.$i])) {
Delete($id);
}
}
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
$i = -1;
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$id = $object->id;
$lidnr = $object->lidnr;
$datum = $object->datum;
$omschrijving = $object->tekst;
$i++;
$plaatje="../fotoos/".$id.".jpg";
$ext = "jpg";
if (!is_file($plaatje))
{$plaatje='../fotoos/blanco.gif'; $ext = "gif";}
$src="resizefoto.php?plaatje=$plaatje&ext=$ext";
$info = "Spullen:$id <small>$datum</small>";
?>
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
$i = -1;
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$i++;
$id = $object->id;
if(isset($_POST['delete'.$i])) {
Delete($id);
}
}
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
$i = -1;
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$id = $object->id;
$lidnr = $object->lidnr;
$datum = $object->datum;
$omschrijving = $object->tekst;
$i++;
$plaatje="../fotoos/".$id.".jpg";
$ext = "jpg";
if (!is_file($plaatje))
{$plaatje='../fotoos/blanco.gif'; $ext = "gif";}
$src="resizefoto.php?plaatje=$plaatje&ext=$ext";
$info = "Spullen:$id <small>$datum</small>";
?>
<td class='table-cell'><div id = 'ad'><a href='nwspul_big.php?id=$id' target= '_top'><img id='foto' src='';></a><div id = 'infoblok'></div><div id = 'localtekstblok'></div></div>
<input type='submit' id='delete' name='delete' value='Delete' title='wis advertentie'></td>
</tr></table></form>
</body>
</html>
Ik neem aan dat je een select query gebruikt om de advertentie gegevens uit de database te halen. Het lijkt er op dat je eerst de advertenties inleest en in een array plaatst (ze staan dan dus in het geheugen van de server) en daarna de bewuste advertentie uit de database verwijderd?
Zou je dat andersom doen namelijk eerst de advertentie verwijderen en dan pas de select query uitvoeren dan komt ie niet meer op je pagina te staan.
De code heb ik toegevoegd. Maar waarom moet ik twee keer de query uitvoeren?
Hou je PHP code bovenaan in je script en begin de output pas helemaal onder in.
Je kunt met één query meerdere (ook alle!) records verwijderen uit een tabel.
gebruik geen maar gebruik
gebruik bij HTML tags double quotes: "
in een table of td hoort geen <div> thuis
Gewijzigd op 13/09/2014 15:49:02 door Frank Nietbelangrijk
Gewijzigd op 13/09/2014 16:00:47 door Farid Khadafi
Code (php)
1
<input type="submit" id="delete" name="delete<?php echo $object->id; ?>" value="Delete" title="wis advertentie">
vervolgens krijg je het id uit
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// Zoek een element in de $_POST array die de waarde 'Delete' heeft
$key = array_search('Delete', $_POST);
// haal het id uit de array-key (bijv. Delete26 wordt 26)
$id= intval(substr($key, 6));
// verwijder het record met het id dat we verkregen hebben
$db->query("DELETE FROM " . $table . " WHERE id = " . $id);
?>
// Zoek een element in de $_POST array die de waarde 'Delete' heeft
$key = array_search('Delete', $_POST);
// haal het id uit de array-key (bijv. Delete26 wordt 26)
$id= intval(substr($key, 6));
// verwijder het record met het id dat we verkregen hebben
$db->query("DELETE FROM " . $table . " WHERE id = " . $id);
?>
Gewijzigd op 13/09/2014 16:23:59 door Frank Nietbelangrijk
Toevoeging op 13/09/2014 16:22:17:
Ik heb nu 1 while loop:
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
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
<?php
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$id = $object->id;
$lidnr = $object->lidnr;
$datum = $object->datum;
$omschrijving = $object->tekst;
if(isset($_POST['delete'.$id])) {
Delete($id);
}
$plaatje="../fotoos/".$id.".jpg";
$ext = "jpg";
if (!is_file($plaatje))
{$plaatje='../fotoos/blanco.gif'; $ext = "gif";}
$src="resizefoto.php?plaatje=$plaatje&ext=$ext";
$info = "Spullen:$id <small>$datum</small>";
?>
$query = $db->query("SELECT * FROM $table ORDER BY id DESC");
while($object = $query->fetch(PDO::FETCH_OBJ)) {
$id = $object->id;
$lidnr = $object->lidnr;
$datum = $object->datum;
$omschrijving = $object->tekst;
if(isset($_POST['delete'.$id])) {
Delete($id);
}
$plaatje="../fotoos/".$id.".jpg";
$ext = "jpg";
if (!is_file($plaatje))
{$plaatje='../fotoos/blanco.gif'; $ext = "gif";}
$src="resizefoto.php?plaatje=$plaatje&ext=$ext";
$info = "Spullen:$id <small>$datum</small>";
?>
<td class='table-cell'><div id = 'ad'><a href='nwspul_big.php?id=$id' target= '_top'><img id='foto' src='';></a><div id = 'infoblok'></div><div id = 'localtekstblok'></div></div>
<input type='submit' id='delete' name='delete' value='Delete' title='wis advertentie'></td>
Maar ik moet steeds 2 keer op de delete button klikken voor hij verwijderd wordt.
Code (php)
1
<input type="submit" id="delete" name="delete<?php echo $object->id; ?>" value="Delete" title="wis advertentie">
vervolgens krijg je het id uit
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
// Zoek een element in de $_POST array die de waarde 'Delete' heeft
$key = array_search('Delete', $_POST);
// haal het id uit de array-key (bijv. Delete26 wordt 26)
$id= intval(substr($key, 6));
// verwijder het record met het id dat we verkregen hebben
$db->query("DELETE FROM " . $table . " WHERE id = " . $id);
?>
// Zoek een element in de $_POST array die de waarde 'Delete' heeft
$key = array_search('Delete', $_POST);
// haal het id uit de array-key (bijv. Delete26 wordt 26)
$id= intval(substr($key, 6));
// verwijder het record met het id dat we verkregen hebben
$db->query("DELETE FROM " . $table . " WHERE id = " . $id);
?>
Toevoeging op 13/09/2014 16:27:30:
dit zit in $_POST
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
<?php function Delete($id) {
global $db, $table;
$test = $db->query("DELETE FROM $table WHERE id = $id");
if($test) echo "ID: $id deleted";
if (is_file("../fotoos/$id.jpg"))
unlink("../fotoos/$id.jpg");
}
if(isset($_POST['delete'.$id])) {
Delete($id);
}
Alleen ik moet steeds 2 keer op de delete knop klikken voor de advertentie verwijderd wordt.
global $db, $table;
$test = $db->query("DELETE FROM $table WHERE id = $id");
if($test) echo "ID: $id deleted";
if (is_file("../fotoos/$id.jpg"))
unlink("../fotoos/$id.jpg");
}
if(isset($_POST['delete'.$id])) {
Delete($id);
}
Alleen ik moet steeds 2 keer op de delete knop klikken voor de advertentie verwijderd wordt.
DELETE FROM ... WHERE id IN(implode(',',$_POST['delete']))
Gewijzigd op 13/09/2014 16:37:20 door - SanThe -
Code (php)
1
2
3
4
2
3
4
<form method="post" action="">
<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
<input type="submit" name="delete" value="Delete" />
</form>
<input type="hidden" name="id" value="<?php echo $object->id; ?>" />
<input type="submit" name="delete" value="Delete" />
</form>
dit is de $_POST array na een submit:
De php code om een record te verwijderen:
Code (php)
?>
Toevoeging op 13/09/2014 17:40:50:
Ik heb het al opgelost ik moest de :
plaatsen voor de delete functie :
Code (php)
Toevoeging op 13/09/2014 17:43:22:
Ik wil je hartelijk bedanken! Ik had dit probleem voorgelegd aan phphulp.com en die konden mij niet helpen.
Graag gedaan!