Weiteres Auswahlfeld nach wählen

Skala

Mitglied
Hallo zusammen

Ich programmiere gerade ein kleines Tool mit dem es möglich ist Präsentationen einzutragen und später die Details abzurufen, nichts grosses also. Nun stehe ich vor einem Problem bei welchem ich einfach keine anständige Lösung finde.

Es ist in dem Tool möglich Präsentationen und Dokumentationen auf den Server zu laden und diese später einem Vortrag zuzuordnen.

Dieses Auswahlfeld um die Dokus/Pressis einem Vortrag zuzuordnen generiere ich folgendermassen:
PHP:
function options_upload_3() {
$abfrage = "SELECT upload_id, name FROM upload WHERE type = '3' AND tot ='1' ORDER by name";
$content = mysql_query($abfrage);
echo "<select name=\"upload\" style=\"border: 1px dotted; background-color: #6699CC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #333333;\">";
while ($row = mysql_fetch_array($content)) {
echo"<option value=\"";
echo $row[upload_id];
echo "\"";
echo ">"; 
echo $row[name];
echo "</option>";
}
echo "</select>";
}

Auch nichts spezielles also.
Nun will ich jedoch dass, wenn man zB eine Dokumentation gewählt hat, die Möglichkeit kriegt gleich danach eine weitere auszuwählen. Dies soll beliebig lange laufen, es soll also theoretisch Möglich sein 100 Dokumentationen einem Vortrag zuzuordnen. Dies schliesst die Möglichkeit aus das ich einfach ein zweites Auswahlfeld neben das erste stelle.

Nun wie programmiere und designe ich dies am besten? Ich habe eine Zwischentabelle in welche ich die ID des Vortrags schreibe und die ID(s) der Dokumentation/Präsentation.

Im Anhang ist noch ein gif auf welchem die momentane Darstellung sichtbar ist. Ich hoffe ihr habt verstanden wie ich das genau meine :p sonst, nachfragen.

Gruss sk4la
 

Anhänge

  • vortrag.gif
    vortrag.gif
    2,9 KB · Aufrufe: 54
Ich würde es über ein select Feld machen, in dem man mehrere
Einträge auswählen, wenn gewünscht auch alle.
PHP:
<select size="10" name="presentationen[]" multiple>
<option></option>
[...]
</select>
Gibt nach dem Absenden einen Array zurück (daher wichtig das []).
PHP:
for ($i=0;$i<=count ($_POST['presentationen']);$i++) echo $_POST['presentationen][$i];
Wenn das select Feld steht kann man mit STRG+Mausklick die
einzelnen Einträge selektieren und mit SHIFT+Mausklick mehrere
(praktisch wie im Windows Explorer).

Andere Möglichkeit wäre vllt. mit Checkboxen, wobei ich diese hier
besser finde da man sie als ein Array einfacher verarbeiten kann :-)

Hoffe das hilft dir.
 
Zuletzt bearbeitet:
Danke für die schnelle Hilfe, hat bestens geklappt. Typisch das ich nicht auf die Idee gekommen bin... habs versucht mit Javascript, Popup und so weiter :rolleyes:

Gruss Skala
 
Huhu da bin ich wieder ;)

EDIT:
Kurze Version der Frage:
Wie kann ich alle Werte eines Arrays in einer IF Abfrage überprüfen lassen also Beispielsweise:
PHP:
if ($array == 1])  { bla } else {das}
Hier möchte ich nun jeden inhalt mit der Zahl eins Vergleichen. Eine Lösung wäre:
PHP:
if ($array[0] == 1])  { bla } elseif ($array[1] == 1])  { bla } elseif ($array[2] == 1])  { bla } else {das}

Kurze Frage ende :D

-----------------------------

Hab wieder ein Problem, liegt wohl eher an der Logik oder meinem schlechten Basiswissen in PHP ^^

Also folgendes: Das eintragen mit Hilfe diesem select Feld hat gut geklappt, nun bin ich beim editieren. Ich möchte das die Daten welche beim eintragen angeklickt wurden beim editieren schon markiert sind.

Meine aktuelle Lösung zu diesem Problem:
PHP:
function options_upload_2_edit($saved) {
$anzahl = count ($saved);
$i = '0';
//hier kommen die ids her von allen einträgen im select feld:
$abfrage = "SELECT upload_id, name FROM upload WHERE type = '2' AND tot ='1' ORDER by upload_id";
$content = mysql_query($abfrage);
//select feld wir aufgemacht
echo "<select size=\"5\" name=\"vortrag[]\" multiple style=\"border: 1px dotted; background-color: #6699CC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #333333;\">>";
while ($row = mysql_fetch_array($content)) {
//und jede option reingeschrieben
echo"<option value=\"";
echo $row['vortrag_id'];
echo "\"";
//*heul* *flenn* keine ahnung :((
if ($saved[$i] == $row['upload_id']) {
//selecte denn wert
echo " selected";
} else {}
echo ">"; 
echo $row['name'];
echo "</option>";
$i++;
}
echo "</select>";
}

Ich weiss gar nicht was ich hier erklären könnte, irgendwie ist meine Idee halt zu unlogisch das es klappen könnte! :(

Komisch ist auch das die Variabel $i nicht übernommen wird, also an dieser stelle:
if ($saved[$i] == $row['upload_id']) {
Wenn ich $i durch 0 ersetzte selected es zwar ein Wert, ich will jedoch das es auch möglich ist das zwei Werte selected werden...

und da scheitere ich irgendwie :rolleyes:

Ich könnte natürlich 100 if abfragen einbauen und immer denn Arrayzähler manuell um 1 hochsetzten.. nur glaube(und hoffe :D) ich das irgendwer hier eine edlere Lösung hat.

Fals ich doof erklärt habe, nachfragen :)
 
Zuletzt bearbeitet:
Skala hat gesagt.:
Meine aktuelle Lösung zu diesem Problem:
PHP:
[...]
if ($saved[$i] == $row['upload_id']) {
[...]
} else {}  // unnütz, also raus
[...]
Komisch ist auch das die Variabel $i nicht übernommen wird, also an dieser stelle:
if ($saved[$i] == $row['upload_id'])
Dein Ansatz ist schon ganz gut, scheitert aber vermutlich daran, dass $saved nicht in folgender Form vorliegt:
$saved = array(1=>"1",2=>"2",usw.)
sondern
$saved = array(1,2,usw.)

Schau mal ob Dich das weiter bringt
http://de3.php.net/manual/de/function.next.php

Zu Deiner kurzen Frage:
http://de3.php.net/manual/de/control-structures.foreach.php
brauchst Du hier aber vermutlich gar nicht.
 
[phpf]in_Array[/phpf]

PHP:
$array = array ("Banane", "Pflaume", "Birne");
if (in_array ("Banane", $array)) echo "HMMM lecker Banane!";
 
Zurück