PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dropdown Menü bei Arrays?



Stormsam
25-01-2004, 14:17
Hi @ all,

ich wollt ein kleines Admin Menü erstellen, wo man den Status eines beitrages ändern kann.

Ich arbeite hierbei mit arrays, damit er mir alle Beiträge aus der mysql Tabelle ausgibt.
z.b.:
echo $row['Inhalt'];

Nun habe ich folgendes darunter geschrieben:


echo "<form action=\"$PHP_SELF\" method=\"post\" class=\"formular\">\n";

echo "<select size=\"1\" name=\"Status\" id=\"Status\">\n";
echo " <option value=\"".$row['Status']."\" selected=\"selected\">".$row['Status']."</option>\n";
echo " <option value=\"Status1\">Status1</option>\n";
echo " <option value=\"Status2\">Status2</option>\n";
echo " <option value=\"Status3\">Status3</option>\n";
echo " <option value=\"Status4\">Status4</option>\n";
echo "</select>\n";
echo " <input type=\"submit\" name=\"submit\" value=\"Speichern\" />\n";
echo "</form>\n";

Oben im Skript habe ich dann:


$sql = "UPDATE
tabelle
SET
Status = '$Status'";

mysql_query($sql) OR die(mysql_error());

Das Problem ist jetzt nur das er sich nur den Status vom ersten Beitrag anschaut und allen Beiträgen diesen Status gibt und nicht jedem seinen eigenen.

Wie kann ich das machen? Bzw. was habe ich hier falsch gemacht?

MfG
Stormsam

mehlvogel
26-01-2004, 10:01
Mach nen Array of Statusanzeigen:



echo "<select size=\"1\" name=\"Status[".$row["id"]."]\" id=\"Status\">\n";


Dann kannst du mit $_GET["Status"][$row["id"]] draufzugreifen (voraussgesetzt, in $row["id"] steht die id des Beitrages)

Stormsam
26-01-2004, 13:46
hi

danke für deine antwort!

Also die einzelnen Beiträge sind nummeriert (in der Spalte ID)

ich habe jetzt die zeile :


echo "<select size=\"1\" name=\"Status[".$row["ID"]."]\" id=\"Status\">\n";

übernommen.

Doch wie trage ich das jetzt hier ein? :

$sql = "UPDATE
tabelle
SET
Status = '$_GET["Status"][$row["ID"]] '";

mysql_query($sql) OR die(mysql_error());

$row['id'] wird eigentlich erst nach dem updaten bestimmt, aber das könnte man eventuell verschieben.

Die schreibweise mag mysql gar nicht ;) wie schreibt man das richtig?

Die idee ist halt jedem beitrag einen status zu geben. Er listet mir alle beiträge auf und neben jedem beitrag ist dieses dropdown menü. Das Problem ist jetzt jedem beitrag einen anderen Status geben zu können, mit der ID könnte das klappen (Beiträge werden automatisch gezählt)

MfG
Stormsam

mehlvogel
26-01-2004, 18:30
ein kleiner ansatz wäre von mir



foreach ($_GET["Status"] as $id => $status) {
$query = "UPDATE tabelle SET Status='".$status."' WHERE ID='".$id."'";
// QUERY bla bla
}


Das gelbe vom EI ist es sicherlich nicht, gerade nicht wenn man mehrere Sachen gleichzeitig ändern möchte, zusätzlich muss man natürlich die WErte prüfen die da in dem Array stehen. (Der Ansatz ist von mir nicht getestet noch sonst etwas nur gerade mal so hin getippt).

Deinen bisherigen Befehl schreibst du richtig, indem du:



$sql = "...".$_GET["Status"][$id]."...";


Vorausgesetzt in $id steht die entsprechende ID.

Zu deiner Problemstellung könnte evtl auch passen, für jeden beitrag ein eigenes "<form>" Tag zu machen und dann per "hidden" Feld die ID zu übertragen, so könntest du dann einen Query folgender Natur bauen:



$sql = "UPDATE .... SET Status='".$_GET["Status"]."' WHERE ID='".$_GET["ID"]."'":


Ist vielleicht ein bißchen weniger Arbeit.