Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP & MySQL - Reihenfolge ändern (https://www.delphipraxis.net/122095-php-mysql-reihenfolge-aendern.html)

T.E. 9. Okt 2008 11:34


PHP & MySQL - Reihenfolge ändern
 
Moin Moin!

Ich habe wieder mal ein kleines Problem:
Ich habe ein Online Fragebogen Skript gecodet und möchte nun noch das umsortieren der Fragen ermöglichen;
Dazu habe ich mir überlegt lasse ich im Backend hinter jeder Frage eine SelectBox mit den Nummern 1-n (jeder Zahl steht für eine Position)
Die Fragen werde aus einer MySQL Datenbank ausgelesen.
Hier mal das Beispiel an den Kategorien:
Code:
<?php
//Datenbank Verbindung
         $mysqlconnect = mysql_connect($host, $user, $pw)
                     or die ("Verbindung zur MySQL Datenbank fehlgeschlagen
"
                     . mysql_error()) .
                     "
Wenden Sie sich bitte an den <a href=\"mailto:admin@domain.de\">Admin</a>";
         //VARIABLEN:
         $sql = "SELECT * FROM `umweltaklms@1-umfrage`.`allgemeines` ORDER BY id DESC LIMIT 1";
         $sql = mysql_query($sql);
         echo mysql_error();
         $row = mysql_fetch_object($sql);
         $tbl_category = $row->kategorien;
               
         $result = mysql_query("SELECT id FROM `umweltaklms@1-umfrage`.`".$tbl_category."`");
         $menge = mysql_num_rows($result);
         $anzahl = $menge;                                    
         
         $abfrage = "SELECT * FROM `umweltaklms@1-umfrage`.`".$tbl_category."` ORDER BY id";
         $ergebnis = mysql_query($abfrage);
         while($row = mysql_fetch_object($ergebnis))
            {
            $kategorie = $row->kategorie;
            $kategorie = htmlentities($kategorie);
            $id = $row->id;
             //Formular mit Tabelle und Fragen erstellen
                 echo " <tr>
                      <td>$kategorie</td>
                            <td align=center>".$row->nummer."</td>
                     <td align=center><select name=\"".$row->nummer."\" onchange=\"\">
                                    ";
                                    for($i=1;$i<$anzahl+1;$i++)
                                    {
                                    echo "<option value=\"$row->nummer\">$i</option>";
                                    }
                                    echo "
                                    
                                  </select>
                         </tr>";
               }
         ?>
Aufbau der Tabelle:
SQL-Code:
CREATE TABLE `umweltaklms@1-umfrage`.`fragen_' . $datum1 . '_' . $datum2 . '_' . $versionneu . '` (
                     `id` INT(3) NOT NULL auto_increment,
                     `frage` TEXT NOT NULL,
                     `nummer` INT(4) NOT NULL,
                      PRIMARY KEY (`id`)) TYPE = myisam
So nun möchte ich, dass wenn der Wert in der Select Box geändert wird die Frage (Tabellen Spalte Nummer) auf den ausgewählten Wert gesetzt wird und alle Fragen hinter dem neuen Wert um einen nach oben (also von 2 auf 3 oder 7 auf 8) verschoben werden.
Allerdings habe ich nun leider keinen Plan wie ich das hinbekomme.
Kann mir da vllt jemand helfen?

J3rk 9. Okt 2008 12:32

Re: PHP & MySQL - Reihenfolge ändern
 
Hmm, spontan fällt mir jetzt ein, ne Javascript funktion zu erstellen die alle Daten einliest die du über SQL erhällst und damit dann die SelectBox generiert.

Das sollte weiterhelfen.
http://www.drweb.de/magazin/javascri...ropdown-menus/

jokerfacehro 10. Okt 2008 11:37

Re: PHP & MySQL - Reihenfolge ändern
 
hmm mche doch einfach ein extra eintrag in dem du die positionen speicherst z.B.

so: 1. frage position: 5
2. pos: 3
3. pos: 1
4. pos: 4
5. pos: 6
6. pos: 2

das feld hat dann den inhalt: 5 3 1 4 6 2

jetzt setzt du den select anhand dieser reihenfolge zusammen (die table muss zuvor nach id sortiert werden)

lies zuerst dein mysql_fetch_array erst mit while in ein array und dann machste per for-schleife die abarbeitung der einzelnen datensätze und anhand des index aus dem positionsfeld bekommste den richtigen index

edit: oder verstehe ich da was falsch ?!

wenn du die pos bei jeder frage einzeln speicherst, musste dein array nach der nummer sortieren (wenn du ne sort funktion hast die zahlen ordentlich sortiert also: 1,2,3,..,9,10,11) kein problem, ansonsten nimm nen extra eintrag der am besten an erster stelle mit id 0 steht und wo die positionsliste im text gespeichert, damit ist auch getan


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz