moveup / movedown von Tabellenwerten (Sortierung)

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

  • moveup / movedown von Tabellenwerten (Sortierung)

    Wie der Betreff schon sagt geht es um das Verschieben von Datenbankwerten um eine Position rauf bzw runter. Die Tabelle is mit einer eindeutigen id (auto increment) und einem Feld pos für die position ausgestattet.

    Habe mich durch die Suche gekämpft und auch ein paar Threads dazu gefunden und auch mit den gefundenen Schnipseln hin und herprobiert aber leider immernoch keine 100% Lösung gefunden.

    PHP-Code:

    elseif($_GET['action'] == "moveup")
            {
                
    // Position des nach oben zu verschiebenden Eintrages

                
    $sql_query $db->query("SELECT pos FROM ".$db_pre."_offer 
    WHERE id = '"
    .$_GET[id]."'");
                
    $pos_alt mysql_fetch_object($sql_query);
                
    $pos_alt $pos_alt->pos;
                

    // ID des Eintrages dessen Position kleiner ist als die des nach oben zu verschiebenden  

                
    $sql_up $db->query("SELECT id FROM ".$db_pre."_offer WHERE pos < '$pos_alt
    ORDER BY pos ASC LIMIT 1"
    );
                
    $row_up mysql_fetch_object($sql_up);
                
    $id_up $row_up->id;
                

    // Position des Eintrages mit der kleineren Position

                
    $sql_query $db->query("SELECT pos FROM ".$db_pre."_offer 
    WHERE id = '"
    .$id_up."'");
                
    $pos_neu mysql_fetch_object($sql_query);
                
    $pos_neu $pos_neu->pos;
                  

    // verschiebe den nach oben zu verschiebenden Eintrag auf seine neue Position

                
    $db->query("UPDATE ".$db_pre."_offer SET pos = '$pos_neu
    WHERE id = '"
    .$_GET[id]."'");


    // verschiebe den anderen Eintrag auf die ehemalige Position des nach oben zu verschiebenden

                
    $db->query("UPDATE ".$db_pre."_offer SET pos = '$pos_alt
    WHERE id = '"
    .$id_up."'");


    // Zeig dem dummen Deppen vorm PC an was ich gemacht habe :-P

                
    echo "ID: ".$id_up." -> ".$pos_alt."<br>";
                echo 
    "ID: ".$_GET[id]." -> ".$pos_neu."<br>";

            }
            elseif(
    $_GET['action'] == "movedown")
            {

    // Position des nach unten zu verschiebenden Eintrages

                
    $sql_query $db->query("SELECT pos FROM ".$db_pre."_offer 
    WHERE id = '"
    .$_GET[id]."'");
                
    $pos_alt mysql_fetch_object($sql_query);
                
    $pos_alt $pos_alt->pos;


    // ID des Eintrages dessen Position größer ist als die des nach unten zu verschiebenden  
                    
                
    $sql_down $db->query("SELECT id FROM ".$db_pre."_offer 
    WHERE pos > '
    $pos_alt' ORDER BY pos ASC LIMIT 1")
                
    $row_down mysql_fetch_object($sql_down);
                
    $id_down $row_down->id;
                

    // Position des Eintrages mit der größeren Position

                
    $sql_query $db->query("SELECT pos FROM ".$db_pre."_offer 
    WHERE id = '"
    .$id_down."'");
                
    $pos_neu mysql_fetch_object($sql_query);
                
    $pos_neu $pos_neu->pos;
                      

    // verschieben den nach unten zu verschiebenden Eintrag auf seine neue Position

                
    $db->query("UPDATE ".$db_pre."_offer SET pos = '$pos_neu
    WHERE id = '"
    .$_GET[id]."'");


    // verschiebe den anderen Eintrag auf die ehemalige Position des nach unten zu verschiebenden

                
    $db->query("UPDATE ".$db_pre."_offer SET pos = '$pos_alt
    WHERE id = '"
    .$id_down."'");

                echo 
    "ID: ".$id_down." -> ".$pos_alt."<br>";
                echo 
    "ID: ".$_GET[id]." -> ".$pos_neu."<br>";

    Verschieben an sich geht meistens. Nur ab und zu kommt es vor dass er einen Eintrag statt um 1 position gleich um 2 verschiebt.

    Habe die ECHOS verfolgt, die waren aber alle 100% korrekt.

    Was hab ich da verbockt???
    Zuletzt geändert von Shock2k; 06.10.2005, 15:00.

  • #2
    Re: moveup / movedown von Tabellenwerten (Sortierung)

    Original geschrieben von Shock2k
    Was hab ich da verbockt???
    Dein Posting.
    Regeln lesen, und Code umbrechen.
    http://www.php-resource.de/forum/sho...threadid=50454
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      keine lust das ganze durchzulesen, vor allem wenn ich sehe, dass du 5 (!) queries dafür brauchst.

      schau dir die erklärung zum austausch zweier werte anhand einer id in mysql an: http://devdesign.de/log/programmieru...stauschen.html

      Kommentar


      • #4
        ... Auflösung von 1024 Pixeln (Breite) ohne Hindernisse zu lesen ist
        Hoffe das is nun gut so. Bin nunmal blind und hab deswegen nen 19" TFT auf ner Auflösung von 1280x1024. Bei mir war kein Scrollbalken zu sehen :-P

        Ok. Ich werd mir das mal genüsslich in mein Schädel einführen und schauen was sich draus ergibt. Danke für den Link.

        Kommentar

        Lädt...
        X