Reihenfolge von Datensätzen ändern

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

  • Reihenfolge von Datensätzen ändern

    Hallo,
    ich möchte per PHP die Reihenfolge von meinen Datensätzen aus der MySQL DB ändern.
    In einem Formular werden mehrere Dropdowns und der jeweilige Titel angezeigt (pro Datensatz eins).

    Jetzt soll in dem Dropdownmenü jeweils die Stelle angegeben werden (die Reihenfolge).

    Ich bin schon soweit, dass das Ganze mit Array und foreach gelöst werden muss.
    Jedoch krieg ichs nicht auf die Reihe das ganze zum Laufen zu bringen....
    Kann mir mal jemand helfen bzw. sagen was ich falsch mache?!?!

    Das Formular:
    PHP-Code:
    <form accept-charset="utf-8" method="post" action="admin.php?site=about&show=overview&go=order" style="line-height:30px;">
        <?php
        $abfrage 
    =  mysql_query("SELECT COUNT(ID) AS anzahl FROM about");
        
    $anzahl mysql_fetch_array($abfrage);
        
        
    $abfrage "SELECT ID, titel, stelle FROM about ORDER BY stelle ASC";
        
    $result mysql_query($abfrage);
        while(
    $about mysql_fetch_assoc($result))
            {
            
    ?>
            <p>
                <select name="stelle[]">
                    <?php
                    
    for($i 1$i <= $anzahl["anzahl"]; $i++)
                        {
                        if(
    $about["stelle"] == $i)    echo "<option selected>$i</option>";
                        else echo 
    "<option>$i</option>";
                        }
                    
    ?>
                </select>
                <input type="text" name="aboutID[]" value="<?php echo $about["ID"]; ?>" disabled="disabled" style="visibility:hidden;width:1px;">
               <?php echo $about["titel"]; ?>
           </p>
            <?php
            
    }
        
        echo 
    "<input type='submit' value='Speichern'>
        </form>"
    ;
    Die DB-Änderung:
    PHP-Code:
    foreach($aboutID as $index=>$id)
            {
            
    $stelle $stelle[$index];
            
    $aboutID $aboutID[$index];
            
    $update "UPDATE about SET stelle = '$stelle' WHERE ID = $aboutID";
            
    $losjez mysql_query($update);
            } 
    Bitte um hilfe!
    Gruß Scorp

  • #2
    Hallo,

    bitte erstmal Code umbrechen..

    Dann die Frage: Was funktioniert denn nicht? , dass es nicht läuft...

    mfg

    Kommentar


    • #3
      Code umbrechen?

      Öööhm also wenn ich beim Formular Änderungen vornehme (oder auch nicht, ist ja egal), also das Formular absende kommt folgende Fehlermeldung:

      Code:
      Warning: Invalid argument supplied for foreach() in E:\Programme\xampp\htdocs\Memorandum\admin\about.php on line 38
      38: foreach($aboutID as $index=>$id)

      Und es werden keinerlei Änderungen in der Datenbank gemacht.

      Kommentar


      • #4
        Hast du denn irgendwo definiert, was $aboutID eigentlich ist?
        Ansonsten: Testausgaben der Variablen..


        Code umbrechen -> Weg mit dem horizontalen Balken

        mfg

        Kommentar


        • #5
          sicher...
          ganz weit oben:
          PHP-Code:
              $aboutID = isset($_POST["aboutID"]) ? $_POST["aboutID"] : "";
              
          $stelle = isset($_POST["stelle"]) ? $_POST["stelle"] : ""
          Code Umbrechen xD....

          22" Monitor erlaubt mir solche "langen" Zeilen ^.^

          Also wenn ich print_r($stelle) und print_r($aboutID) vor das foreach() schreibe gibt er mir nur das Stelle aus...

          Bsp: Es gibt 4 Titel....
          Nach absenden des Formulars (Test mit 4, 3, 2, 1):

          Array ( [0] => 4 [1] => 3 [2] => 2 [3] => 1 )
          Warning: Invalid argument supplied for foreach() in E:\Programme\xampp\htdocs\Memorandum\admin\about.php on line 40

          Also scheint er das aboutID nicht zu benutzen / richtig zu übertragen, hab mal Namen geändert in about (wegen der Großschreibung), ändert jedoch auch nichts.

          Kommentar


          • #6
            Hallo,

            dann mach mal print_r($_POST); vlt siehst du dann, was überhaupt alles übertragen wird

            mfg

            Kommentar


            • #7
              aboutID[] wurde gar nicht übertragen.

              Es wurde nur stelle[] übergeben... Wieso?!

              Kommentar


              • #8
                Ein Textfeld per CSS zu verstecken ist überflüssig. Dafür wurde type="hidden" ersonnen.

                Aber auch das brauchst du gar nicht, wenn du die ID in den Selects mitführst.

                <select name=stelle[<?php echo $aboutID; ?>]>.

                Damit erhältst du in $_POST['stelle'] ein Array, dessen Keys die aboutIDs sind und die Values die vom User gewählten Stellen.

                Kommentar


                • #9
                  Also jetzt gehts!
                  Vielen Dank an alle, und hier nochmal der Code dazu:
                  PHP-Code:
                  elseif($show == "overview" and $go == "order")
                      {
                      foreach(
                  $stelle as $index=>$id)
                          {
                          
                  $update "UPDATE about SET stelle = $id WHERE ID = $index";
                          
                  $losjez mysql_query($update);
                          }
                      echo 
                  "Die Reihenfolge der Eintr&auml;ge wurde erfolgreich ge&auml;ndert.";
                      } 
                  Das Formular:
                  PHP-Code:
                  <select name="stelle[<?php echo $about["ID"]; ?>]">

                  Kommentar

                  Lädt...
                  X