reihenfolge der Zeilen austauschen ... eins nach oben eins nach unten

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

  • reihenfolge der Zeilen austauschen ... eins nach oben eins nach unten

    Hallo
    folgendes Script habe ich geschrieben um die Reihenfolge zweier nebeneinander stehenden zeilen (nach einer Tabellenspalte orders) umzukehren.

    Mein Fragen ist. Wie kann man das eleganter machen?
    PHP-Code:
    function setup_to_orders($item_id$order)
    {
      
    $sql "UPDATE
                 forms_concept
               SET
                 orders = orders - 1 
             WHERE
                 id = '
    $item_id';";
     
    mysql_query($sql) OR die (mysql_error());             
                 
     
    $sql "SELECT
                  id,
                  orders
               FROM
                  forms_concept
              WHERE
                  id != '
    $item_id' AND
                  orders = '
    $order' - 1 AND
                  filename = '"
    .$_SESSION['filename']."';";
    $result mysql_query($sql) OR die (mysql_error());
    $rowsetup mysql_fetch_assoc($result);
                  
     
    $sql "UPDATE
                  forms_concept
                SET 
                  orders = '"
    .$rowsetup['orders']."' + 1
              WHERE
                  id = '"
    .$rowsetup['id']."';";
     
    mysql_query($sql) OR die (mysql_error()); 



  • #2
    Hallo,

    zuerst musst du dir Gedanken darüber machen, wie du die beiden zu vertauschenden Datensätze ausfindig machst. Wenn ich es richtig sehe, geht das bei dir über die filename-Spalte.

    Dann nimmst du von beiden den Wert, der die Reihenfolge festlegt, also hier offenbar orders. Addiere diese beiden Werte, damit sich der neue Wert ergibt, indem man den alten von der Summe abzieht. Dann kannst du das mit einem statt zwei UPDATE-Statements erledigen. Beispiel:

    Code:
    id | nr
    ---+---
     a | 3
     b | 5
    
    A und B sollen vertauscht werden. Summe aus 3 + 5 = [COLOR="Red"]8[/COLOR]
    
    update tabelle set nr = [COLOR="Red"]8[/COLOR] - nr where id in ('a', 'b');
    
    id | nr
    ---+---
     a | 5
     b | 3
    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar

    Lädt...
    X