Spalte sortieren

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

  • Spalte sortieren

    Guten Morgen und ein gesundes Neues Jahr,

    ist es möglich nachträglich Daten zu sortieren?
    Mein Problem is folgendes, ich habe ein manuelles Sortierfeld in der Tabelle.

    Bezeichnung Sortiernummer
    --------------------------------------
    blabla1 10002
    blabla2 10003
    blabla3 10004
    blabla4 10005
    blabla5 10006
    blabla6 10007


    Nun wollte ich mir die Daten ausgeben lassen und mit Hilfe eines Formulars sortieren ( eins hoch, eins tief sollen Schaltflächen sein)

    blabla1 10002 eins tief
    blabla2 10003 eins hoch eins tief
    blabla3 10004 eins hoch eins tief
    blabla4 10005 eins hoch eins tief
    blabla5 10006 eins hoch eins tief
    blabla6 10007 eins hoch

    Klick ich auf blabla2 eins hoch, müsste blabla1 eins nach unten und blabla2 eins nach oben.

    Ich habe aber keinen Plan wie ich das anstellen könnte.
    Gibt es vielleicht schon so was? Oder hat jemand eine Idee?

    Vielen Dank
    Micha

  • #2
    Wenn du auf eins hoch klickst updatest du die Sortiernummer bei dem aktuellen Datensatz -1 und beim darüberstehenden +1 ....

    Das sollte kein Problem sein...
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Hallo,

      leider kann ich das nicht so machen, 2 Probleme habe ich.

      1.
      Plus 1 oder minus eins geht nicht, da (ich hatte das schlecht beschrieben) die Sortnummern nicht fortlaufend sind, so ist es besser:
      blabla1 10002 eins tief
      blabla2 10007 eins hoch eins tief
      blabla3 10034 eins hoch eins tief
      blabla4 10045 eins hoch eins tief
      blabla5 10049 eins hoch eins tief
      blabla6 10050 eins hoch

      wenn ich jetzt blabla1 nach unten setzen möchte, müsste die Sortierungsnummer getauscht werden. Blabla1 bekommt die 10007 und blabla2 10002.

      2. Ich bekomme nicht raus welcher Datensatz ausgewählt wurde.
      Ich habe versucht, dies mit einem Formular zu lösen.

      PHP-Code:
       <form name="form1" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <?php 
        $i 
      0;
        do { 
        
      $i++;
        
      ?>
          <tr>
            <td><?php echo $row_qsortaw['bez']; ?></td>
            <td><?php echo $i?>&nbsp;</td>
            <td><input name="position[]" type="text" value="<?php echo $i?>" /></td>
            <td><?php if ( $i != $min ) {?> <input name="up" type="submit" value="Up" /><?php ?></td>
            <td><?php if ( $i != $max ) {?><input name="down" type="submit" value="Down" /><?php ?></td>
            </tr>
          <?php } while ($row_qsortaw mysql_fetch_assoc($qsortaw)); ?>
        </form>
      Wie bekomme ich raus, welcher Datensatz gemeint ist?

      Besten Dank für die Hilfe.

      Micha

      Kommentar


      • #4
        Haben die einzelnen Datensätze eine eindeutige ID? Wobei du auch mit der Sortiernummer den Datensatz eindeutig zuordnen kannst, oder nicht?
        Also was du machen kannst, ist folgendes: Du gibst den up & down submits jeweils noch die id im namen mit und splittest das nachher.
        Quasi so:
        PHP-Code:
        <input name="up@10002" type="submit" value="Up" />
        // .. und nachher splitten
        // ($var musst du dann halt nur noch mit dem namen des inputs aus dem Post-Array fischen) 
        // stichpunkt foreach ( $_POST as $key => $val ) { .. }
        list($action$id) = split("\@"$var1);
        // Jetzt kannst du dein SQL-Statement starten.. 
        EDIT:
        Verwende lieber explode anstatt split, ist, so wie ich eben gelesen habe, die schnellere funktion. http://de3.php.net/split
        Zuletzt geändert von reallife; 02.01.2006, 09:40.

        Kommentar

        Lädt...
        X