Formular in Variable gespeichert >> DropDown Problem !

Lamavic

Mitglied
Hi,
da mir jetzt echt die Augen bald aus dem Kopf fallen, weil ich gesucht und gefragt habe, aber nie eine wirklich gute Antwort auf mein Problem gefunden habe, versuche ich es jetzt euch zu erzählen.
Ich habe ein Formular für ein Newssystem in einer Variable namens $formular1 gespeichert. Jetzt hab ich noch ein neues Feature, Kategorien, einbauen wollen. Alle momentanen Kategorien werden in einer txt datenbank gespeichert.
Sie baut sich folgend auf :
Teamnews||teamnews.gif
csnews||csnews.gif

An 1. Stelle steht immer der Name der Kategorie, an 2. der Name eines Bildes, welches es zu jeder Kategorie geben soll.
Soweit alles schön und gut, aber > jetzt hab ich erst mal mittels einer 'For-Schleife' alle Kategorien auszählen lassen und wollte die in ein 'Dropdown-Menü' [dynamisch] einfügen, sodass pro Kategorie jeweils 1 Zeile zum Auswählen im 'Dropdown-Menü' entsteht.
Da mein Formular in einer Variable gespeichert ist, um das Formular auch nur zu passenden Zeiten aufzurufen, gibt es ein Problem mit dem DropDown-Menü : es schreibt einfach nicht pro neue Kategorie eine neue Auswahl in das Dropdownmenü, sondern einfach nur den letzten.
Also wird leider statt z.b. 2 mal, für 2 Kategorien (CS-Scene, Team...), nur 1 mal geschrieben. Ich kann das leider nur schwer erklären :/, hier mal - mein mittlerweile zerfetzter Code, da ich immer rumprobiert habe :/ >.
PHP:
// Kategorie Funktion
			$kat_file = "db/kat.txt";
			$kat_array = file($kat_file);
			$kat_anzahl = count($kat_array);
			for ($z = 0; $z < $kat_anzahl; $z++){
			    $kat = explode("||", $kat_array[$z]);
			    $options[$z] = "<option value=\"$kat[0]\">$kat[0]</option>";
		// end. Kategorie Funktion
  		$formular1 = "<div align=\"center\"><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">&gt; 
  Neue News verfassen</font></strong> </div><br><form name=\"form1\" method=\"post\" action=\"$prefix&action=add&login=on&benutzername=$name1&passwort=$pass\">
		
  <table width=\"450\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
    <tr> 
      <td width=\"195\"><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Name 
        :</font></strong></td>
      <td width=\"505\"><input name=\"name\" id=\"name\"></td>
    </tr>
    <tr> 
      <td><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Titel :</font></strong></td>
      <td><input name=\"titel\"></td>
    </tr>
    <tr> 
      <td><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Kategorie 
        :</font></strong></td>
      <td> <select name=\"kategorie\">
	  $options[$z]
	  </select></tr>
// noch ein stück formular dann beende ich die forschleife mittels }

Wie ihr (hoffentlich) erkennen könnt, ist mein Problem - mal ganz simpel angenommen - einfach nur, dass pro neue Kategorie keine neue Zeile für <option value ... </option> geschrieben wird :/. Bitte helft mir...
 
na aber du hast da einen denkfehler, ich denke dein array wird schon gefüllt

jedoch musst du ihn auch richtig ausgeben

du fügst $array[$var] in $formular1 ein, der erste fehler ist, dass $var nicht belegt ist, der 2. fehler ist, dass du, wenn $var mit einem korrekten index belegt wäre, nur einen wert deines arrays ausgibst, und somit auch nur eine option hättest

das problem umgehst du in dem du eine schleife baust die die options felder in $formular1 einfügt:
 
Hmm, eine Forschleife habe ich doch drin, so wird auch ein Wert für mein $options[$z] gesetzt. Das $z nimmt den Wert 1,2... an. Aber da ja auch das Formular 2 mal durchlaufen wird, kommt immer nur der letzte Kategorieeintrag. Wenn ich in die Forschleife noch das echo ($formular) einbeziehe, kommt das Formular 2 mal, im Dropdownmenü steht 1 mal die 1. Kategorie (1. Eingabeformular, Kategorie wäre z.b. CS-Scene), und einmal die 2. Kategorie (2. Eingabeformular, [das gleiche wie vorher] nur die Kategorie wäre jetzt z.b. Wc3-Scene).
Evtl meinst du ja was anderes, könntest du mir das anhand einens Beispiels veranschaulichen ? (meinst du eine while schleife ? )
 
Zuletzt bearbeitet:
ach mir ist jetzt erst aufgefallen, dass du die for schleife garnicht schließt

ist ja klar dass es immer nur eine option im select gibt

du solltest es in etwa so machen:
PHP:
// Kategorie Funktion
            $kat_file = "db/kat.txt";
            $kat_array = file($kat_file);
            $kat_anzahl = count($kat_array);
            for ($z = 0; $z < $kat_anzahl; $z++){
                $kat = explode("||", $kat_array[$z]);
                $options[] = $kat[0];
}

        // end. Kategorie Funktion
          $formular1 = "<div align=\"center\"><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">&gt; 
  Neue News verfassen</font></strong> </div><br><form name=\"form1\" method=\"post\" action=\"$prefix&action=add&login=on&benutzername=$name1&passwort=$pass\">
        
  <table width=\"450\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">
    <tr> 
      <td width=\"195\"><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Name 
        :</font></strong></td>
      <td width=\"505\"><input name=\"name\" id=\"name\"></td>
    </tr>
    <tr> 
      <td><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Titel :</font></strong></td>
      <td><input name=\"titel\"></td>
    </tr>
    <tr> 
      <td><strong><font size=\"2\" face=\"Arial, Helvetica, sans-serif\">Kategorie 
        :</font></strong></td>
      <td> <select name=\"kategorie\">");
foreach($options as $option){
$formular1.="<option value=$option>$option</option>";
}
$formular1.="</select></tr>";
 
Zurück