pragmaMx Support Forum

alles für Webmaster => PhP & mySQL => Thema gestartet von: _Gerry_ am 01 April 2004, 08:47:37

Titel: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 08:47:37
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_]
Titel: Re: Update in ner while Schleife
Beitrag von: NeMeSiSX2LC am 01 April 2004, 09:18:27
Hm ist die Mitgliederliste nicht auch so aufgebaut vielleicht findest du da die lösung
Titel: Re: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 09:29:58
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*
Titel: Re: Update in ner while Schleife
Beitrag von: Andi am 01 April 2004, 10:05:12
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]
Titel: Re: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 12:40:10
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'");
Titel: Re: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 12:56:38
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:
Titel: Re: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 13:42:46
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
Titel: Re: Update in ner while Schleife
Beitrag von: Andi am 01 April 2004, 15:48:14
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()
Titel: Re: Update in ner while Schleife
Beitrag von: _Gerry_ am 01 April 2004, 15:54:51
 :BD:  
Man ich sagte ja das ich den Wald vor lauter Bäumen nicht mehr sah!
 :wall:  :wall:

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

Dankeschön!!!! :D
Titel: Re: Update in ner while Schleife
Beitrag von: Andi am 01 April 2004, 16:07:35
 :geil:   :please: