Update in ner while Schleife

Begonnen von _Gerry_, 01 April 2004, 08:47:37

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

_Gerry_

Hallo Leute!

Also ich steh wiedermal vor einem Problem!
Bin gerade dabei ein Modul zu proggen, will da eine Sortierfunktion einbauen, doch irgendwie klappt es eben nicht!

Also ich lese die betreffenden Spalten mittels ner "while" aus, habe ebenfalls eine Spalte für die Sortierung angelegt.
Über die "while" habe ich ein Formular gelegt wie unten zu sehen:
 
$result = sql_query("SELECT * FROM ${user_prefix}_pro_bereiche WHERE wer='1' ORDER by anor");
$a = 0;
$dcolor_A = $bgcolor1;
$dcolor_B = $bgcolor2;
OpenTable();
echo"<h3>Bereiche</h3>";
echo "<form action=\"admin.php\" method=\"post\">";
$numrows = sql_num_rows($result);
if ($numrows<1) {
echo"Es sind noch keine Bereiche für den User angelegt!!!";
}
else{

echo"<table border='0' cellpadding='2' cellspacing='0'><tr><td align='center' bgcolor=$bgcolor2><b>Reihenfolge</b></td><td align='center' bgcolor=$bgcolor2>";
echo"<b>Bezeichnung</b></td><td bgcolor=$bgcolor2> </td><td bgcolor=$bgcolor2> </td><td bgcolor=$bgcolor2> </td></tr>";
while($ergeb = sql_fetch_array($result)) {
  $dcolor = ($a == 0 ? $dcolor_A : $dcolor_B);

echo"<tr bgcolor=$dcolor><td bgcolor=$dcolor><input type=\"hidden\" name=\"id\" value=\"".$ergeb["id"]."\"><input type=\"text\" name=\"anor\" value=\"".$ergeb["anor"]."\" size=\"2\" maxlength=\"3\"></td><td bgcolor=$dcolor> <b>".$ergeb["bereich"]."</b></td><td bgcolor=$dcolor> </td>";
echo"<td  bgcolor=$dcolor><a href='admin.php?op=DelBereich&id=".$ergeb["id"]."'><img src='images/up_del.gif' border='0' alt='Bereich ".$ergeb["bereich"]." löschen'></a>";
echo"</td><td bgcolor=$dcolor>  <a href='admin.php?op=Frage&id=".$ergeb["id"]."'>Frage hinzufügen</a>  |  ";
echo"<a href='admin.php?op=ViewFrage&id=".$ergeb["id"]."'>Fragen anzeigen</a></td>";
echo"</tr>";
$a = ($dcolor == $dcolor_A ? 1 : 0);
}
echo"</table>";
}

echo"<input type=\"hidden\" name=\"op\" value=\"UPBereich\"><input type=\"submit\" value=\"Absenden\">";


Wenn ich nun jedoch die Anordnung ändern will, wird mir nur die letzte übernommen! hmmmm...

Ist es in einer Schleife den nicht so einfach möglich??
Vielleicht hat ja jemand nen Tipp für mich!  ;)


[Editiert am 1/4/2004 von _Gerry_]
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

NeMeSiSX2LC

Hm ist die Mitgliederliste nicht auch so aufgebaut vielleicht findest du da die lösung
CMS-Version: pragmaMx 0.1.8, 1.20.4.5/2006-03-10     
PHP-Version: 5.1.2
MySQL-Version: 5.0.15-max-log
Server-Version: Apache/2.0.55
phpMyAdmin-Version: 2.7.0-pl1

_Gerry_

Ne die ist eben nicht so aufgebaut!
Dort kann man sich die Ausgabe nach namen,... sortieren lassen!

Ich will aber im Adminmenü das ganze anordnen mit einer Nummerneingabe.  ;)
So ähnlich wie bei den Blöcken, doch leider kam ich zu spät darauf und müsste nun alles umcoden!  :redhead:
Deshalb meine Frage ob es auch so möglich wäre irgendwie! *fg*
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

Andi

moin :)

das input-feld "anor" müsste als Array benannt werden. Dieses kannst Du dann bei der Änderung über den Index ansprechen.

..... "><input type=\"text\" name=\"anor[".$ergeb["id"]."]\" value=\"".$ergeb["anor"]."\" size=\"2\" maxlength=\"3\"></.....

[Editiert am 1.4.2004 von Tora]
schön´s Grüssle, Andi

_Gerry_

hmmm........
Klappt leider auch nicht!
Weis ja nicht ob es schreibfehler ist, oder soll es wirklich
anor[".$ergeb["id"]."] lauten und nicht
anor[".$ergeb["anor"]."] ??


Übrigens so ist die Zeile für`s Update angelegt!
 
sql_query("UPDATE ".$user_prefix."_user_pro_bereiche set anor='$anor' WHERE id='$id'");
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

_Gerry_

Okay, hab eben begriffen warum es anor[".$ergeb["id"]."]  lautet,
somit hat jedes seinen eigenen Namen! :wall:

hmm......
Aber das mit der übergabe klappt einfach nich......
 :crash:  :knockout:  :bindoof:  :noe:
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

_Gerry_

Stand der Dinge:
Laut Debug-Modus werden die daten übergeben:
 
ZitatPOST: Array
(
    [id] => Array
        (
            [20] => 20
            [21] => 21
            [22] => 22
            [23] => 23
            [24] => 24
            [25] => 25
            [17] => 17
            [19] => 19
            [18] => 18
            [26] => 26
            [27] => 27
            [28] => 28
            [29] => 29
            [30] => 30
            [31] => 31
            [32] => 32
        )

    [anor] => Array
        (
            [20] => 4
            [21] => 5
            [22] => 6
            [23] => 7
            [24] => 8
            [25] => 9
            [17] => 1
            [19] => 3
            [18] => 2
            [26] => 1
            [27] => 2
            [28] => 3
            [29] => 4
            [30] => 5
            [31] => 6
            [32] => 7
        )

    [op] => UPBereich

Jedoch ist nun in der Übergabe an die Datenbank noch ein Fehler drinnen!
 
function UPBereich($id,$anor) {
global $admin, $bgcolor2, $prefix, $user_prefix;
include ("header.php");
OpenTable();
sql_query("UPDATE ".$user_prefix."_user_pro_ set anor='$anor' WHERE id='$id'");
CloseTable();
include("footer.php");
}

*grübelweiter*
 :D
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

Andi

sopsala :)

Die ID brauchst/solltest Du nicht als Array übergeben, die ist ja bereits als key im Array drin. Deswegen das so: anor[".$ergeb["id"]."]

Das Update, dann in einer Schleife über das Array $_POST[anor]

 
foreach ($_POST['anor'] as $id=> $newanor) {
// hier steht dann in $id die entsprechende id und in $newanor die neue Reihenfolge zu dieser id
$qry = "UPDATE ${user_prefix}_user_pro_ SET anor=".$newanor." WHERE id=".$id." AND anor<>".$newanor."";
$result = sql_query($qry);
}
 

Im Prinzip das Gleiche wie in der blocks.php, Funktion BlocksListWeigth()
schön´s Grüssle, Andi

_Gerry_

 :BD:  
Man ich sagte ja das ich den Wald vor lauter Bäumen nicht mehr sah!
 :wall:  :wall:

Es funzt nun.........

Dankeschön!!!! :D
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

Andi

schön´s Grüssle, Andi