|
You last visited: Today at 18:29
Advertisement
[PHP] Beiträge listen und Löschbutton
Discussion on [PHP] Beiträge listen und Löschbutton within the Web Development forum part of the Coders Den category.
11/28/2014, 17:29
|
#1
|
elite*gold: 177
Join Date: Jan 2010
Posts: 5,963
Received Thanks: 1,130
|
[PHP] Beiträge listen und Löschbutton
Heyho Leute,
ich stehe wiedermal vor einem Problem und brauche euren Rat. Ich möchte Datenbankeinträge in einer Tabelle listen und daneben einen Löschbutton womit man den Wunscheintrag löschen kann.
Das ganze sollte in etwa so aussehen:
Code:
id | title | [URL="#"]Löschbutton[/URL]
Kann mir da wer von euch nen Codesnippet geben womit ich das umsetzen kann?
Mein bisheriger Code:
PHP Code:
<html> <head> <title>Test</title> </head> <body> <?php require_once('./config.php'); $query = mysql_query("SELECT * FROM events ORDER BY 'id' ASC"); while($row = mysql_fetch_assoc($query)) { $id = $row['id']; $title = $row["title"]; echo " <h3>ID {$id} <font color='red'>am</font> Event {$title}</h3> "; } ?> </body> </html>
Gruß Mo
|
|
|
11/28/2014, 18:07
|
#2
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
z.B.
PHP Code:
echo "<a href='delete.php?id={$id}'>Löschen</a>"
Das gleich dann mit Edit - Jedoch solltest du aufpassen, welcher User Rechte für diese Datei hat.
|
|
|
11/28/2014, 19:44
|
#3
|
elite*gold: 177
Join Date: Jan 2010
Posts: 5,963
Received Thanks: 1,130
|
Ich bräuchte ja das eigentliche Snippet womit ich den Beitrag auch löschen kann. Sprich die delete.php Bin leider noch nicht besonders weit mit PHP
|
|
|
11/28/2014, 19:53
|
#4
|
elite*gold: 12
Join Date: Feb 2014
Posts: 875
Received Thanks: 272
|
Quote:
Originally Posted by mastermo
Ich bräuchte ja das eigentliche Snippet womit ich den Beitrag auch löschen kann. Sprich die delete.php Bin leider noch nicht besonders weit mit PHP
|
So weit ich weiß brauchst du keine delet.php - du kannst auch deine aktuelle Datei löschen und eine Succes Message einblenden lassen. Das Script packst du eigentlich nach oben.
Wie bereits erwähnt solltest du noch absichern welcher Rank was löschen kann. Einfach die aktuelle SESSION abfragen was für einen Rank der angemeldetete Benutzer hat.
|
|
|
11/28/2014, 20:02
|
#5
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
@Threadersteller
|
|
|
11/28/2014, 20:29
|
#6
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
Falls du es so machen willst wie Caiv es dir vorschlägt:
Bei delete.php?id=4 wird über die GET-Methode der Wert 4 übermittelt. Durch $_GET['id'] kannst du ihn ansprechen.
Code:
$id = $_GET['id'];
$query = mysql_query("DELETE FROM events WHERE id = $id");
Evtl. " ' . um $id herum, falls es nicht als Variable wahrgenommen wird.
An deiner Stelle würde ich eher ein Formular aus der Ausgabe machen und wenn man den Button zum löschen klickt, wird er abgeschickt und löscht direkt. So in etwa wie Guron schrieb. Du musst halt wie eben bereits oft gesagt aufpassen, wer zu der Datei Zugang hat.
Übrigens würde ich Mysqli verwenden.
|
|
|
11/28/2014, 20:41
|
#7
|
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
|
Quote:
Originally Posted by Warnuk3r
Falls du es so machen willst wie Caiv es dir vorschlägt:
Bei delete.php?id=4 wird über die GET-Methode der Wert 4 übermittelt. Durch $_GET['id'] kannst du ihn ansprechen.
Code:
$id = $_GET['id'];
$query = mysql_query("DELETE FROM events WHERE id = $id");
Evtl. " ' . um $id herum, falls es nicht als Variable wahrgenommen wird.
An deiner Stelle würde ich eher ein Formular aus der Ausgabe machen und wenn man den Button zum löschen klickt, wird er abgeschickt und löscht direkt. So in etwa wie Guron schrieb. Du musst halt wie eben bereits oft gesagt aufpassen, wer zu der Datei Zugang hat.
Übrigens würde ich Mysqli verwenden.
|
Vorher aber bitte noch escapen sonst ist ein kompletter DB Zugriff möglich.
|
|
|
11/28/2014, 23:24
|
#8
|
elite*gold: 177
Join Date: Jan 2010
Posts: 5,963
Received Thanks: 1,130
|
Ich werds morgen mal austesten. Erstmal ein großes Danke an die tatkräftigen Lösungsvorschläge
Zur Berechtigung: Das Vorhaben ist nur für ein Adminpanel gedacht, wozu der Admin Zugang hat. Sprich wer kein Admin ist kommt auch nicht hin (hab ne Session vom Login davor, nur nicht im Snippet gepostet )
|
|
|
11/28/2014, 23:44
|
#9
|
elite*gold: LOCKED
Join Date: Apr 2013
Posts: 1,280
Received Thanks: 200
|
Tipp: Gestalte es als Tabelle!
PHP Code:
<table> while($row = mysqli_fetch_object($query)) { $sender = get_name($row->id_sender); $empfaenger = get_name($row->id_empfaenger, $db); echo "<tr><td>".$sender."</td><td>".$row->date."</td><td>".$row->time."</td><td>".$row->subject."</td><td>".'<a href="index.php?s=message&mode=read&id='.$row->id.'">Lesen</a>'."</td><td>".'<a href="index.php?s=message&mode=delete&id='.$row->id.'">Löschen</a>'; } </table>
(ist von einem alten PN-System meines Mini-Browsergames, bau dir einfach Sachen um, wie du's brauchst).
|
|
|
11/29/2014, 00:06
|
#10
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
Oder man schreibt eine Funktion, die alle Daten aus der DB in einem Array speichert.
So muss man nicht den HTML Code in die while-Schleife schreiben und kann den selben Code an mehreren Stellen nutzen
|
|
|
11/29/2014, 12:15
|
#11
|
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
|
Quote:
Originally Posted by Caiv
Oder man schreibt eine Funktion, die alle Daten aus der DB in einem Array speichert.
So muss man nicht den HTML Code in die while-Schleife schreiben und kann den selben Code an mehreren Stellen nutzen
|
Um die Inhalt des Arrays aber wieder auszugeben braucht man wieder ne schleife (foreach / while / for whatever), von daher ist es grad egal
|
|
|
11/29/2014, 13:22
|
#12
|
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
|
Quote:
Originally Posted by NotEnoughForYou
Um die Inhalt des Arrays aber wieder auszugeben braucht man wieder ne schleife (foreach / while / for whatever), von daher ist es grad egal
|
Jain^^
Wenn er auf einer Startseite alle Einträge auslesen will und nochmal im Backend, müsste er 2x mit einer While-Schleife arbeiten.
Mit einem Array kann man nur die Werte ausgeben, die an der Stelle gebraucht werden. Auf der Startseite sollen ja z.B. nicht die Links zum Löschen angegeben werden^^
PHP Code:
$db = new mysqli(...); function getBeitraege() { GLOBAL $db; $sql = "SELECT * FROM `tabelle`"; $result = $db->query($sql); $results = array(); while ($row = $result->fetch_assoc()) { $results[] = $row; } return $results; }
Dann kann man später mit einer foreach-Schleife nur die Werte ausgeben die man braucht:
Startseite:
PHP Code:
foreach (getBeitraege() as $beitrag) { echo '<h2>' . $beitrag['headline'] . '</h2>'; echo '<p>' . $beitrag['content'] . '</p>'; }
Backend:
PHP Code:
foreach (getBeitraege() as $beitrag) { //Alles was du im Backend brauchst echo '<a href="delete.php?id=' . $beitrag['id'] . '">Löschen</a>'; ... }
|
|
|
11/29/2014, 13:26
|
#13
|
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
|
Quote:
Originally Posted by Caiv
Jain^^
Wenn er auf einer Startseite alle Einträge auslesen will und nochmal im Backend, müsste er 2x mit einer While-Schleife arbeiten.
Mit einem Array kann man nur die Werte ausgeben, die an der Stelle gebraucht werden. Auf der Startseite sollen ja z.B. nicht die Links zum Löschen angegeben werden^^
PHP Code:
$db = new mysqli(...);
function getBeitraege() { GLOBAL $db;
$sql = "SELECT * FROM `tabelle`"; $result = $db->query($sql);
$results = array();
while ($row = $result->fetch_assoc()) { $results[] = $row; }
return $results; }
Dann kann man später mit einer foreach-Schleife nur die Werte ausgeben die man braucht:
Startseite:
PHP Code:
foreach (getBeitraege() as $beitrag) { echo '<h2>' . $beitrag['headline'] . '</h2>'; echo '<p>' . $beitrag['content'] . '</p>'; }
Backend:
PHP Code:
foreach (getBeitraege() as $beitrag) { //Alles was du im Backend brauchst echo '<a href="delete.php?id=' . $beitrag['id'] . '">Löschen</a>'; ... }
|
Wenn Frontend und Backend allerdings getrennt sind (so wie es sein sollte), dann würde sowieso niemals beides gleichzeitig aufgerufen werden, was somit die Performanceverbesserung durch die einmalige Zwischenspeicherung im Array wieder zu nicht machen würde.
Außerdem würde es auf der Startseite nicht viel bringen alle Einträge zu selectieren (was man vermeiden sollte) sondern dort auch nur die, die benötigt werden. Fürs Backend bräuchte man dann schon alle, deshalb würden sich hier unterschiedliche Funktionen anbieten.
|
|
|
All times are GMT +2. The time now is 18:29.
|
|