kostenloser Webspace werbefrei: lima-city


Daten aus MySQL-Tabelle gezielt löschen/bearbeiten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    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&ouml;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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. MySQL-Abfrage für das Löschen einer Spalte mit der ID $id:

    $sql = mysql_query("DELETE FROM `News` WHERE `ID` = $id;");

    Die ID musst du natürlich wissen, also nicht "SELECT Titel, Datum, Inhalt", sondern "SELECT `ID`, Titel, Datum, Inhalt".
  4. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    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....
  5. Hm, Fehlermeldung?

    Zudem: ich glaube du meinst . statt ,. Also News.ID statt News,ID ;)
  6. c****s

    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
  7. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    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&ouml;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...
  8. 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
  9. Autor dieses Themas

    limabone

    Kostenloser Webspace von limabone

    limabone hat kostenlosen Webspace.

    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...
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!