Werte unterhalb einer Werteskala abgleichen

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

  • Werte unterhalb einer Werteskala abgleichen

    Hallo,
    ich habe folgendes Problem: Ich möchte, dass man Einträge neu positionieren kann. Das heißt, wenn Einträge mit den Positionen 1,2,3,4,5,6 vorliegen, dass man einen neuen Eintrag auf Position 2 setzt und die entsprechenden Einträge unterhalb von Position 2 jeweils einen Wert rauf setzt. Ich habe folgendes versucht.

    PHP-Code:
    $temppos $_SESSION['position'] + 1;
    $sql "SELECT
               count(*) as anzahl
              FROM
               weine_verwalten_1;"
    ;
    $result mysql_query($sql) OR die (mysql_error());
    $rowanzahl mysql_fetch_assoc($result);
    $anzahl $rowanzahl['anzahl'] + 1;
    for(
    $i=$temppos$i<=$anzahl$i++)
     {
      
    $value4update $i 1;
      
    $sql "UPDATE
                  weine_verwalten_1
                 SET
                  position = '
    $i'
               WHERE
                  position = '
    $value4update';";
      
    mysql_query($sql) OR die(mysql_error());
     } 
    Leider werden hier alle Einträge auf den letzten Wert gesetzt. Wie kommt und wie kann das Problem lösen?

  • #2
    Du aktualisierst nur die Einträge, die zwischen der alten und der neuen Nummer liegen.

    Beispiel:

    Werte 1,2,3,4,5,6

    Wert 4 -> Wert 2

    Setze: 4 = 2 und 2 = 3 und 3 = 4

    - fertig -

    Mach das einfach mit einem UPDATE (keine Schleife!!) und da sagst du einfach SET spalte = spalte+1 WHERE spalte < altenummer AND spalte >= neuenummer

    du könntest das ganze auch mit einem BETWEEN machen.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      PHP-Code:
      $temppos $_SESSION['position'] + 1;
      $query 'UPDATE weine_verwalten_1 SET position = position + 1 WHERE position >= '.$temppos
      da brauchst du keine schleife.aber ... ungetestet

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        vielen dank für die hilfe ...

        mit einen zusatz habe ich es nun geschafft:

        PHP-Code:
         $sql "SELECT
                     id
                  FROM
                     weine_verwalten_1
              ORDER BY
                     id DESC
                  LIMIT 1;"
        ;
        $result mysql_query($sql) OR die (mysql_error());
        $getid mysql_fetch_assoc($result);
        $id $getid['id'];


        $temppos $_SESSION['position'];
        $sql "SELECT
                   count(*) as anzahl
                  FROM
                   weine_verwalten_1;"
        ;
        $result mysql_query($sql) OR die (mysql_error());
        $rowanzahl mysql_fetch_assoc($result);
        $anzahl $rowanzahl['anzahl'] + 1;
        $sql "UPDATE 
                   weine_verwalten_1 
                   SET 
                   position = position + 1 
                 WHERE position >= '
        $temppos' AND
                       id != '
        $id';";
        mysql_query($sql) OR die (mysql_error()); 

        Kommentar

        Lädt...
        X