Löschen eines Datensatzes ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Löschen eines Datensatzes ...

    Hallo an alle.

    Ist mir schon fast peinlich, aber ich habe ein SQL-Problem.
    Ich habe eine Tabelle, in der Artikel gesichert sind. Jeder Artikel hat eine Sortierungsnummer (von 0 bis Anzahlx10, also z.B. 0 bis 90). Wenn jetzt ein Artikel (z.B. der mit der Sortierungsnummer 40) gelöscht wird, sollen alle nachfolgenden Sortierungsnummern um 10 vermindert werden (weil sonst eine Sortierung in 10er-Schritten nicht mehr gewährleistet ist, dies ist wichtig für das spätere Ändern der Reihenfolge der Artikel durch den Nutzer). Aber irgendwie klappt das nicht.

    Nachfolgend mein Code:

    PHP-Code:
    <?

        require 'conf.inc.php';

        $db = mysql_connect($cfg['mysql_host'],$cfg['mysql_user'],$cfg['mysql_pass']);
        if (!$db) die ("Kann Server nicht erreichen");
        mysql_select_db($cfg['mysql_db'],$db);
        
        switch($status)
        {
            default:
                ?>
                <table border="0" width="400" cellspacing="0" cellpadding="0">
                    <?
                    $sql = "SELECT * FROM bilder ORDER BY sort_nr ASC";
                    $result = mysql_query($sql);
                    while ($row = mysql_fetch_array($result))
                    {
                        ?>
                        <tr>
                        <td align="left" width="50">
                        <? echo $row['id']; ?><br>
                        </td>
                        <td align="left" width="50">
                        <? echo $row['sort_nr']; ?><br>
                        </td>
                        <td align="right" width="50">
                        <a href="del.php?status=del&id=<? echo $row['id']; ?>&sort_nr=<? echo $row['sort_nr']; ?>">Löschen</a><br>
                        </td>
                        </tr>
                    <?
                    }
                    ?>
                </table>
                <?
                break;
            
            case('del'):
                if($id)
                {
                    $sort_nr = $HTTP_GET_VARS['sort_nr'];
                    $sql = "SELECT * FROM bilder WHERE id='$id'";
                    $result = mysql_query($sql);
                    while ($row = mysql_fetch_array($result))
                    {
                        $id_now = $row['id'];
                        $sort_nr_now = $row['sort_nr'];
                    }
                    $sql1 = "SELECT * FROM bilder WHERE sort_nr > '$sort_nr_now' ORDER BY sort_nr";
                    $result1 = mysql_query($sql);
                    while ($row1 = mysql_fetch_array($result1))
                    {
                        $id_then1 = $row1['id'];
                        $sort_nr_then1 = $row1['sort_nr'] - 10;
                        $sql2 = "UPDATE bilder SET sort_nr = '$sort_nr_then1' WHERE id = '$id_then1'";
                        $result2 = mysql_query($sql2);
                    }
                    $sql = "DELETE FROM bilder WHERE id='$id'";
                    $result = mysql_query($sql);
                    ?>
                    <table border="0" width="400" cellspacing="0" cellpadding="0">
                        <?
                        $sql = "SELECT * FROM bilder ORDER BY sort_nr ASC";
                        $result = mysql_query($sql);
                        while ($row = mysql_fetch_array($result))
                        {
                            ?>
                            <tr>
                            <td align="left" width="50">
                            <? echo $row['id']; ?><br>
                            </td>
                            <td align="left" width="50">
                            <? echo $row['sort_nr']; ?><br>
                            </td>
                            <td align="right" width="50">
                            <a href="del.php?status=del&id=<? echo $row['id']; ?>&sort_nr=<? echo $row['sort_nr']; ?>">Löschen</a><br>
                            </td>
                            </tr>
                        <?
                        }
                        ?>
                    </table>
                    <?
                    break;
                }                    
        }
    ?>
    Danke im Voraus.

    Innuendo

  • #2
    DELETE FROM tabelle WHERE sort_nr=40

    UPDATE tabelle SET sort_nr=sort_nr-10 WHERE sort_nr>40

    probier das mal
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Geil, es geht. Danke Dir tausendmal. Und das mit zwei Zeilen Code.

      Kommentar

      Lädt...
      X