Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 18:29

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #1
 
mastermo's Avatar
 
elite*gold: 177
Join Date: Jan 2010
Posts: 5,963
Received Thanks: 1,130
Question [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
mastermo is offline  
Old 11/28/2014, 18:07   #2

 
~ JWonderpig ~'s Avatar
 
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.
~ JWonderpig ~ is offline  
Thanks
1 User
Old 11/28/2014, 19:44   #3
 
mastermo's Avatar
 
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
mastermo is offline  
Old 11/28/2014, 19:53   #4
 
Guron's Avatar
 
elite*gold: 12
Join Date: Feb 2014
Posts: 875
Received Thanks: 272
Quote:
Originally Posted by mastermo View Post
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.
Guron is offline  
Thanks
1 User
Old 11/28/2014, 20:02   #5
 
Mikesch01's Avatar
 
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190


@Threadersteller
Mikesch01 is offline  
Old 11/28/2014, 20:29   #6
 
Warnuk3r's Avatar
 
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.
Warnuk3r is offline  
Thanks
2 Users
Old 11/28/2014, 20:41   #7
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
Quote:
Originally Posted by Warnuk3r View Post
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.
NotEnoughForYou is offline  
Thanks
1 User
Old 11/28/2014, 23:24   #8
 
mastermo's Avatar
 
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 )
mastermo is offline  
Old 11/28/2014, 23:44   #9

 
.Kirataro's Avatar
 
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).
.Kirataro is offline  
Thanks
1 User
Old 11/29/2014, 00:06   #10

 
~ JWonderpig ~'s Avatar
 
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
~ JWonderpig ~ is offline  
Old 11/29/2014, 12:15   #11
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
Quote:
Originally Posted by Caiv View Post
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
NotEnoughForYou is offline  
Old 11/29/2014, 13:22   #12

 
~ JWonderpig ~'s Avatar
 
elite*gold: 60
Join Date: Sep 2013
Posts: 1,427
Received Thanks: 248
Quote:
Originally Posted by NotEnoughForYou View Post
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>';
    ...

~ JWonderpig ~ is offline  
Old 11/29/2014, 13:26   #13
 
NotEnoughForYou's Avatar
 
elite*gold: 0
Join Date: Jun 2010
Posts: 3,407
Received Thanks: 2,024
Quote:
Originally Posted by Caiv View Post
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.
NotEnoughForYou is offline  
Reply


Similar Threads Similar Threads
[B] Meine Signatur als Werbeplatz [ ~ 5000 Beiträge, ~ 50 Beiträge pro Tag]
10/28/2016 - elite*gold Trading - 15 Replies
Macht Vorschläge.
LIFETIME WERBUNG NUR 75ELITEGOLD [1400+ Beiträge | 6 Beiträge am Tag !!!STEIGEND!!!]
05/01/2012 - elite*gold Trading - 0 Replies
Hey ^Topic Ich biete euch Meinen Service an da ich dringend etwas elitegold benötige und meine Signatur eh etwas leer ist . Da dachte ich mir : warum vermiete ich nicht miene Signatur ? Und der Thread ist die Antwort auf meine Frage :D Also wenn ihr interesse habt wie schon gessat 75 LIFETIME only LIFETIME ! Ändern von Dem Text selbstverstänflich kostenlos!
LIFETIME WERBUNG NUR 100ELITEGOLD [1250+ Beiträge | 6 Beiträge am Tag !!!STEIGEND!!!]
04/17/2012 - elite*gold Trading - 2 Replies
TOPIX -NUR TEXTWERBUNG! -JEDERZEIT ÄNDERBAR -TRUSTED



All times are GMT +2. The time now is 18:29.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.