tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
31
ZUGRIFFE
4169
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jan 2004
    Beiträge
    164
    Mahlzeit,

    Ich bin gerade dabei ein klitzekleines CMS zu bauen. Ich habe hier eine Auflistung aller bereits erstellten Seiten.

    PHP/mySQL - Reihenfolge für Navigation in Datenbank ändern-tut.jpg

    Jetzt möchte ich gerne über die Pfeile die Sortierung ändern. Z.B. das Home ganz nach oben kommt. Leider habe ich da absolut kein Schimmer wie ich das anstellen köntne. Vielleicht kann mir ja jemand bei meinem Problem helfen.

    Hier noch der Code von der oberigen Darstellung.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    <table width="100%" border="0">
        <tr>
            <td width="40%" style="border-bottom:1px #000000 solid"><strong>Name</strong></td>
            <td width="20%" style="border-bottom:1px #000000 solid"><strong>bearbeiten</strong></td>
            <td width="20%" style="border-bottom:1px #000000 solid"><strong>sorieten</strong></td>
            <td width="20%" style="border-bottom:1px #000000 solid"><strong>löschen</strong></td>
        </tr>
    <?
        while($seite = mysql_fetch_array($res)) {
    ?>
        <tr>
            <td><img src="Bilder/seite.png" width="10" height="12" style="padding-right:5px "><? echo "$seite[titel]"; ?></td>
            <td><a href="?id=Editor2&edit_id=<? echo $seite[id]; ?>"><img src="Bilder/icons/sheet_edit.gif"></a></td>
            <td><img src="Bilder/ab.png" width="11" height="10"><img src="Bilder/auf.png" width="11" height="10"></td>
            <td><a href="?id=delete_seite"><img src="Bilder/icons/sheet_del.gif" width="14" height="14" border="0"></a></td>
        </tr>
    <?
        }
    ?>
     
      <tr>
        <td colspan="3">&nbsp;</td>
      </tr>
      <tr>
        <td colspan="3"><img src="Bilder/icons/sheet_add.gif" width="14" height="14"> <a href="?menu=seitenverwaltung&id=seite_anlegen">hinzuf&uuml;gen</a> </td>
      </tr>
    </table>

    MfG Tobi
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
     
    Markus Wulftange

  3. #3
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    Am einfachsten machste noch eine sortier Spalte dazu dann kanste das in der Reihenfolge ausgeben wie du möchtest.

    Mfg Splasch
     

  4. #4
    Registriert seit
    Jan 2004
    Beiträge
    164
    Ich habe hier mal das "Script" aus dem anderen Thread... das sind irgendwie komische Zeichen drin. Soll das so ein?

    Zitat Zitat von Gumbo Beitrag anzeigen
    Prinzipiell müsste es wie folgt funktionieren: SortID wird verringert (neue Position < alte Position):
    Code :
    1
    2
    
    UPDATE `Tabelle` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN [font=serif]〈[i]neue Position[/i]〉[/font] AND [font=serif]〈[i]alte Position[/i]〉[/font] `ID` != [font=serif]〈[i]ID[/i]〉[/font];
    UPDATE `Tabelle` SET `SortID` = [font=serif]〈[i]neue Position[/i]〉[/font] WHERE `ID` = [font=serif]〈[i]ID[/i]〉[/font]
    Beziehungsweise erhöht (neue Position > alte Position):
    Code :
    1
    2
    
    UPDATE `Tabelle` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN [font=serif]〈[i]alte Position[/i]〉[/font] AND [font=serif]〈[i]neue Position[/i]〉[/font] AND `ID` != [font=serif]〈[i]ID[/i]〉[/font];
    UPDATE `Tabelle` SET `SortID` = [font=serif]〈[i]neue Position[/i]〉[/font] WHERE `ID` = [font=serif]〈[i]ID[/i]〉[/font]
    Wobei ID die ID des zu verschiebenden Datensatzes ist.
     

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Das sind Platzhalter. Die Abfragen sind auch nur schematisch.
    _root bedankt sich. 
    Markus Wulftange

  6. #6
    Registriert seit
    Jan 2004
    Beiträge
    164
    kannst du das mit 〈neue Position〉 und 〈alte Position〉 vielleicht nochmal ein bisschen genauer erklären?

    MfG Tobi
     

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wenn ein Datensatz von Position a nach Position b verschieben möchtest, ist alte Position = a und neue Position = b.
     
    Markus Wulftange

  8. #8
    Registriert seit
    Jan 2004
    Beiträge
    164
    PHP-Code:
    mysql_db_query("$mysqlname""UPDATE `seiten` SET `SortID` = '$sortid' WHERE `SortID` = '$sortid'+1");
    mysql_db_query("$mysqlname""UPDATE `seiten` SET `SortID` = '$sortid'+1 WHERE `SortID` = '$sortid'"); 
    Eigentlich müsste es doch so gehen oder nicht? Leider klappt es aber nicht wie gewüscht.
     

  9. #9
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wenn dir nur „SortId“ als Identifizierungsmerkmal zur Verfügung steht, musst du einen der beiden zu vertauschenden Datensätze erst eine neue temporäre „SortId“ zuweisen, um ihn so quasi auszukoppeln. Denn andernfalls haben die beiden Datensätze dieselbe „SortId“, wie es auch bei dir der Fall ist.
     
    Markus Wulftange

  10. #10
    Registriert seit
    Jan 2004
    Beiträge
    164
    Wie müsste es denn aussehen wenn ich noch eine $id (autoincrement/eindeutig) zur verfügung habe?
     

  11. #11
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
     
    Markus Wulftange

  12. #12
    Registriert seit
    Jan 2004
    Beiträge
    164
    ich habe es jetzt so, aber jetzt macht er nichtsmehr

    Code :
    1
    2
    
            mysql_db_query("$mysqlname",    "UPDATE `seiten` SET `SortID` = `$sortid`+1 WHERE `SortID` BETWEEN `$sortid`+1 AND = `$sortid` `id` != '$abid'");
            mysql_db_query("$mysqlname",    "UPDATE `seiten` SET `SortID` = '$sortid' WHERE `id` = '$abid'");
     

  13. #13
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    die Syntax des ersten SQL-Statements ist ja auch falsch. Schreibe die Abfrage erst mal in eine Variable und lass Dir das ausgeben. Dann siehst Du, wo die Fehler liegen.

    LG
     

  14. #14
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Prinzipiell müsste es wie folgt aufgebaut sein:
    PHP-Code:
    $posNeu 123;
    $posAlt mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
    if (
    $posNeu $posAlt) {
        
    mysql_query('UPDATE `seiten` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN '.$posNeu.' AND '.$posAlt.' `id` != '.$id);
    } else {
        
    mysql_query('UPDATE `seiten` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN '.$posAlt.' AND '.$posNeu.' `id` != '.$id);
    }
    mysql_query('UPDATE `seiten` SET `SortID` = '.$posNeu.' WHERE `ID` = '.$id); 
     
    Markus Wulftange

  15. #15
    kuddeldaddeldu kuddeldaddeldu ist offline Mitglied Diamant
    Registriert seit
    Dec 2007
    Ort
    Bremen
    Beiträge
    3.418
    Hi,

    kleine Korrektur (AND vergessen):

    PHP-Code:
    $posNeu 123;
    $posAlt mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
    if (
    $posNeu $posAlt) {
        
    mysql_query('UPDATE `seiten` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN '.$posNeu.' AND '.$posAlt.' AND `id` != '.$id);
    } else {
        
    mysql_query('UPDATE `seiten` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN '.$posAlt.' AND '.$posNeu.' AND `id` != '.$id);
    }
    mysql_query('UPDATE `seiten` SET `SortID` = '.$posNeu.' WHERE `ID` = '.$id); 
    LG
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 20.10.10, 17:47
  2. Antworten: 5
    Letzter Beitrag: 13.12.06, 14:37
  3. [mysql] Kollation einer Datenbank ändern
    Von StupidBoy im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 19.10.06, 23:40
  4. Antworten: 3
    Letzter Beitrag: 13.08.05, 17:43
  5. PHP/MySql Datenbank modell für navigation
    Von lan im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 03.02.05, 13:21