Zeile verschieben??

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

  • Zeile verschieben??

    Hallo!

    Ich hab ein Problem.
    Ich brauche einen Codeschnipsel, aber habe ihn nicht gefunden. Folgendes:
    ich habe eine mySQL-Tabelle:
    id,pos,buxname,boxinhalt
    0,left,text 1,inhalt1
    1,left,text 2,inhalt 2
    2,left,text 3,inhalt2

    nun möchte ich, dass wenn man eine function namens moveUp() auswählt, mit der id 3, also moveUp("3");, dass die ID von 3 zu der id der zeile die davor kommt geändert wird, un dass die id der zeile, wo die ID geholt wurde, mit der id aus der zeile erseetzen, die mit einer id ersetzt wurde. Also, wenn id1 nicht existiert, soll dort 0 reingeschrieben werden.

    Der sinn der Sache:
    Die sachen werden horizontal vershcoben und sollen für ein Portal sein.
    Mit freundlichem Gruß,
    Deathrow

  • #2
    eigentlich müsste ich es zu den gesuchen schieben, weil es ein gesuch ist.... aber das mache ich nicht, du nicht richtig gesucht hast.

    http://www.php-resource.de/forum/sho...ht=verschieben

    stattdessen *VERSCHIEBE* ich dich nach sql.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ...

      naja... hab anscheinen wohl falsche suchwörter benutzt...

      Trotzdem VIELEN DANK!
      Mit freundlichem Gruß,
      Deathrow

      Kommentar


      • #4
        Aber der Code funktioniert leider nicht....

        Er ersetzt alle Zeieln, mit der 3, wenn ich tet.php?move=up&sort_nr=3 aufrufe. Ich mcöhte ja, dass das dann zur 2 wird und die 2 zur 3.

        PHP-Code:
        if($move=="up")
        {
         
        $sql_up "SELECT sort_nr from tabelle WHERE sort_nr<'$sort_nr' ORDER by sort_nr DESC LIMIT 10";
         
        $res_up mysql_query($sql_up);
         while (
        $row_up mysql_fetch_row ($res_up))
         {
          
        $sort_nr2 $row_up[0];
          
        mysql_query("UPDATE tabelle SET sort_nr='$sort_nr2' WHERE sort_nr='$sort_nr'");
          
        mysql_query("UPDATE tabelle SET sort_nr='$sort_nr' WHERE sort_nr='$sort_nr2'");
         }
        }

        if(
        $move=="down")
        {
         
        $sql_down "SELECT sort_nr from tabelle WHERE sort_nr>'$sort_nr' ORDER by sort_nr LIMIT 10";
         
        $res_down mysql_query($sql_down);
         while (
        $row_down mysql_fetch_row ($res_down))
         {
          
        $nr2 $row_down[0];
          
        mysql_query("UPDATE tabelle SET sort_nr='$sort_nr' WHERE sort_nr='$sort_nr2'");
          
        mysql_query("UPDATE tabelle SET sort_nr='$sort_nr2' WHERE sort_nr='$sort_nr'");
         }

        Mit freundlichem Gruß,
        Deathrow

        Kommentar


        • #5
          aha.
          1. was funktioniert nicht, bzw was passiert. einfach eine aussage zu treffen "es funktioniert nicht" ist nicht gerade die feine englische art.
          2. warum verwendest du kein "or die(mysql_error())" bei deinen db-abfragen?
          3. warum überlegst du nicht noch einmal in ruhe, was genau du machen willst, und prüft deinen code, was er macht.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            E FEhler: Er schreibt bei allem Feldern (sort_nr) die id rein, die ich angegeben habe.

            DAs soll nciht so sein. Er soll jeweils nur 2 vertauschen.
            Mit freundlichem Gruß,
            Deathrow

            Kommentar


            • #7
              du kennst die WHERE klausel in sql?

              diese solltest du nutzen.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Ne, ich bin erst PHP newbie.

                Kann jemand den Code richtig geben?
                Mit freundlichem Gruß,
                Deathrow

                Kommentar


                • #9
                  schaue dir doch mal das manual von mysql.com an.

                  da steht alles, was du brauchst.

                  SELECT deutsch | englisch

                  INSERT deutsch | englisch
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Original geschrieben von Abraxax
                    [*]warum überlegst du nicht noch einmal in ruhe, was genau du machen willst, und prüft deinen code, was er macht.[/list]
                    @deathrow
                    kann mich dem ^^ nur anschliessen, also
                    1. schnapp dir die updates
                    2. setz da mal reale werte ein
                    3. lies dir das ganze mal selber laut vor
                    4. verstehe, was passiert
                    5. ... >
                    Kissolino.com

                    Kommentar


                    • #11
                      Ich habe es so gelöst:

                      PHP-Code:
                      <?
                       $direction = $HTTP_GET_VARS['direction'];
                       $sql1 = "SELECT id, sort_nr FROM tabelle WHERE id='$id'";
                       $result1 = mysql_query($sql1);
                       while ($row1 = mysql_fetch_row($result1))
                       {
                        $id_now = $row1[0];
                        $sort_nr_now = $row1[1];
                       }
                       $sql2 = "SELECT id, sort_nr FROM tabelle WHERE sort_nr = $sort_nr_now + $direction";
                       $result2 = mysql_query($sql2);
                       while ($row2 = mysql_fetch_row($result2))
                       {
                        $id_then = $row2[0];
                        $sort_nr_then = $row2[1];
                        mysql_query("UPDATE tabelle SET sort_nr = '$sort_nr_then' WHERE id = '$id_now'");
                        mysql_query("UPDATE tabelle SET sort_nr = '$sort_nr_now' WHERE id = '$id_then'");
                       }    
                      ?>
                      In diesem Fall gibt es eine Spalte "sort_nr", die eine Sortierungsnummer enthält und fortlaufend ist (z.B. 0, 10, 20, 30, 40 ...). Über die URL übergebe ich dem Skript, in welche Richtung verschoben soll (10 = nach unten, -10 = nach oben). $direction lautet hier die Variable. Möchte man den Eintrag nach oben verschieben, lautet der Link z.B. "test.php?id=12345&direction=-10".

                      Danach kann man mit "SELECT * FROM tabelle ORDER BY sort_nr ASC" bequem die Einträge ordnen lassen.

                      Ich weiß, dass das Skript nicht perfekt ist (falls die PHP-Götter hier wieder was zu bemängeln haben, dass mein Skript nicht das macht, was gewünscht ist), aber es funktioniert bei mir tadellos.

                      Kommentar

                      Lädt...
                      X