Daten aus MySQL-Tabelle gezielt löschen/bearbeiten
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
auslese
bearbeiten
bearbeitet code
code
datum
fehlermeldung
frage
inhalt
komma
ordern
problem
punkt
schema
schleife
senden
spalte
tabelle
vermutung
verwalten
-
Hallo Leute, ich hab mir ein kleines Newsskript gebastelt, dass ich gerne über einen Adminbereich verwalten würde. Das Problem dabei ist nur, ich hab diesen Code hier:
<?php $sql = 'SELECT Titel, Datum, Inhalt FROM News ORDER BY Datum DESC'; $result = $db->query($sql); if (!$result) { die ('Konnte den Folgenden Query nicht senden: '.$sql."<br />\nFehlermeldung: ".$db->error); } if (!$result->num_rows) { echo '<p class="info">Es sind keine Newsbeiträge vorhanden</p>'; } else { while ($row = $result->fetch_assoc()) { echo '<table width="100%">'; echo '<tr>'; echo '<td width="25%" align="center" valign="middle">'; echo '<input type="checkbox">'; echo '</td>'; echo '<td width="75%" align="left" valign="middle" bgcolor="Ef4d0d0">'; echo '<u>'.$row['Titel'].'</u> am <u>'.$row['Datum'].'</u><br>'; echo $row['Inhalt']; echo '</td>'; echo '</tr>'; echo '</table>'; } } echo '<input type="submit" value="makierte löschen">'; echo '<input type="submit" value="makierte bearbeiten">'; ?>
|Wie man sieht hab ich eine Checkbox für jeden beitrag genommen und zwei Submit am Ende der Seite.|
Problem: Wie gestalte ich die MySQL-abfrage für die löschung eines Bestimmten Beitrags? Was ich noch vergessen hab: Natürlich ist in der abgefragten Tabelle eine ID spalte, wenn das weiterhilft...
Problem2: Wie mach ich das mit dem bearbeiten und abschließenden Speichern?
MfG Limabone
Beitrag zuletzt geändert: 25.10.2009 18:38:29 von limabone -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich habs gerade mit deinem Code versucht, ging aber nicht.
Hab hier den Code bearbeitet:
<?php $db = @new mysqli('locaolhost', 'root', 'pass', 'database'); $id = $_POST['id']; $sql = 'DELETE FROM `db_138318_2`,`News` WHERE `News`,`ID` = $id'; echo 'Beitrag wurde gelöscht'; ?>
aber der funkt auch ned.... -
limabone schrieb:
Ich habs gerade mit deinem Code versucht, ging aber nicht.
Hab hier den Code bearbeitet:
<?php $db = @new mysqli('locaolhost', 'root', 'pass', 'database'); $id = $_POST['id']; $sql = 'DELETE FROM `db_138318_2`,`News` WHERE `News`,`ID` = $id'; echo 'Beitrag wurde gelöscht'; ?>
aber der funkt auch ned....
Da stimmt die Syntax auch nicht. Ich kenne zwar deine Tabelle nicht, aber db_138318_2 hört sich nach Schema an und nicht nach Tabelle. Wie wär's mit:
delete from News where ID=$id
Oder falls nikic Vermutung richtig ist dann
delete from db_138318_2.News where News.ID=$id
An beiden Stellen Punkt statt Komma.
Beitrag zuletzt geändert: 25.10.2009 21:00:19 von census -
Ihr wiederspricht euch ja ;)
Wie auch immer... Ich hab hier den Content für die zu löschenden News:
content_delete.php
<?php $db = @new mysqli('mysql.lima-city.de', 'username', 'pass', 'db_138318_2'); $sql = 'SELECT Titel, Datum, Inhalt, ID FROM News ORDER BY Datum DESC'; $result = $db->query($sql); if (!$result) { die ('Konnte den Folgenden Query nicht senden: '.$sql."<br />\nFehlermeldung: ".$db->error); } if (!$result->num_rows) { echo '<p class="info">Es sind keine Newsbeiträge vorhanden</p>'; } else { while ($row = $result->fetch_assoc()) { echo '<form action="http://limabone.lima-city.de/penguins/admin/func/deletenews.php" method="post">'; echo '<table width="100%">'; echo '<tr>'; echo '<td width="25%" align="center" valign="middle">'; echo '<font size=+2>'.$row['ID'].'</font>'; echo '</td>'; echo '<td width="75%" align="left" valign="middle" bgcolor="Ef4d0d0">'; echo '<u>'.$row['Titel'].'</u> am <u>'.$row['Datum'].'</u><br>'; echo $row['Inhalt']; echo '</td>'; echo '</tr>'; echo '</table>'; } } echo '<input type="text" maxlength="3" size="3" name="id" value="ID"> eingeben, und <input type="submit" value="löschen">'; echo '</form>'; ?>
Damit legt man den Wert von $id im nächsten Code fest:
func/deletenews.php
<?php $id = $_POST['id']; $db = @new mysqli('mysql.lima-city.de', 'username', 'pass', 'db_138318_2'); $sql = 'DELETE FROM `db_138318_2`.`News` WHERE `News`.`ID` = `.$id.`'; $result = $db->query($sql); if (!$result) { die ('Etwas stimmte mit dem Query nicht: '.$db->error); } echo 'Beitrag wurde gelöscht'; echo '<meta http-equiv="refresh" content="1; URL="noch nicht pass-geschützt, also gibts hier keine URL für euch"; ?>
Problem: Irgendwie nimmt das Skript den Wer von $id nicht an d.h. werden keine News gelöscht... -
Statt:
$sql = 'DELETE FROM `db_138318_2`.`News` WHERE `News`.`ID` = `.$id.`';
$sql = 'DELETE FROM `db_138318_2`.`News` WHERE `News`.`ID` = '.$id;
Sonst wird nämlich die ID mit eiuner Spalte `123` (Bsp) verglichen, was natürlich nicht gut gehen kann.
Zudem ist der Code in der Schleife bei content_delete.php auch falsch. Du musst Formular und Tabelle aus der Schleife auslagern.
Beitrag zuletzt geändert: 26.10.2009 12:28:41 von nikic -
Danke dir, jetzt funktionierts
Ich spiel mich noch mit dem auslesen von einzelnen Beiträgen, damit ich dann auch die bearbeiten-Funktion hab. Wenns Fragen gibt Editiere ich das hier, nur für die, dies interessiert... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage