2 Schleifen Array Problem

Shooter2k

Erfahrenes Mitglied
Hallo Forum,
es geht um eine multiple select listBox.
Anhand eines Arrays wird die listBox mit Inhalten versehen.
Sowie die gewählten werte als selected in einem zusätzlichen Array.
Also zB .

alle Inhalte :
-------------------
Array1
$all_kitchen = array("Mexikanisch", "Deutsch", "Italienisch", "Vegetarisch", "Fast Food");

Gewählte(selected) Inhalte:
----------------
Array2
$s_kitchen = array("Fast Food", "Italienisch");

Das Ergebis soll wie folgt aussehen :
Eine SelectBox mit allen Küchen und die Küchen, die gewählt worden sind, werden als selected angezeigt.

Interpretiert muss es später so aussehen :

Code:
  <select name="kitchen" size="5" multiple class="edit_option_multi">
  <option selected>Fast Food</option>
 <option selected>Italienisch</option>
 <option>Vegetarisch</option>
 <option>Mexikanisch</option>
 <option>Deutsch</option>
</select>

Hier ist mein PHP Code dazu :

PHP:
<?
							  		
							
  if($_GET['edit']==true){
  $benutzer -> set_kitchen($id);
  // array sprachen selected
  $kitchen = $benutzer -> show_kitchen2();
  // array alle sprachen
  $kueche = getKitchen();
							
							
?>
 <select name="kitchen" size="5" multiple class="edit_option_multi">
<?
 	 for($i=0;$i<count($kueche);$i++)
	{
		 if($i<count($kitchen)){
									 		
	        	echo "<option selected>$kitchen[$i]</option>";
						} else {
														
							echo "<option>$kueche[$i]</option>";
							}
																	
	 }
  ?>
</select>
 <?
} else {
 $benutzer -> set_kitchen($id);
$benutzer -> show_kitchen();
								 
 }
								  
?>

Dieser Code funktionert schon fast ;) Also es werden alle Küchen richtig selected, nur gibt es bei den weiteren Küchen in der ausgabe die nicht selected sind, genau EINEN doppelten wert. Der also selected ist aber auch gleichzeitig als nicht selected bei den weiteren küchen erscheint.

Das ist die Ausgabe des aktuellen PHP Codes:

Code:
  <select name="kitchen" size="5" multiple class="edit_option_multi">
  <option selected>Fast Food</option>
 <option selected>Italienisch</option>
 <option>Vegetarisch</option>
 <option>Mexikanisch</option>
 <option>Deutsch</option>
 <option>Italienisch</option>
</select>
Also 2 Mal Italienische Küche


Irgendwo zählt er also einmal zu viel.

Kann mir jemand helfen ?
Danke

gruß Henry
 
Zuletzt bearbeitet:
welche küche soll denn vorselektiert werden?

wenn es die letzte küche sein soll die sich im array befindet musst du in der if anweisung das

PHP:
<
auf ein
PHP:
=
ändern
 
Danke für deine Hilfe nur leider funktioniert es nicht egal ob ich bei den gesamten küchen ein = setze oder bei den gewählten.
PHP:
	 for($i=0;$i=count($kueche);$i++)
	 {
									 
	 if($i<count($kitchen)){
										 		
        echo "<option selected>$kitchen[$i]</option>";
		} else {
														
		echo "<option>$kueche[$i]</option>";
		}
		 }
 
Ich habe nun die lösung gefunden ;) Und zwar gibt es den befehl in_array
Für alle :

PHP:
for($i=0;$i<count($kueche);$i++){
										
   	 if(in_array($kueche[$i], $kitchen))
		 {
    		 echo "<option selected>$kueche[$i]</option>";
  		} else {
    			 echo "<option>$kueche[$i]</option>";
   			 }
}
 
Zurück