PHP Fehler bei dynamischer Selectbox

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hi,

folgendes Problem.
Habe eine selectbox-Funktion erstellt, die bei bestimmten Werten eine selektierte Option ausgibt:
($label ist ein Array mit den angezeigten Optionen
$value ist ein Array mit den dazugehörigen ID's
$selected_value ist der Wert der ausgewählt ist.)
PHP:
function createSelectField($name, $value, $label, $selected_value = '')
	{
	if(count($value) != count($label))
		{
		return 'ERROR: DIFFERENT NUMBER OF VALUES AND LABELS';	
		}
	$return_string = '<select name="' . $name . '">';
	$i = 0;
	while(isset($value[$i]))
		{
		if($selected_value == $value[$i])
			{$selected = 'selected="selected"';}
		else
			{$selected = '';}
		$return_string .= '<option value="' . $value[$i] . '" ' . $selected . ' >' . $label[$i] . '</option>';
		$i++;
		}
	$return_string.= '</select>';
	// echo $return_string;
	return $return_string;
	}

Jetzt das porblem:

wenn ich das Skript folgendermaßen aufrufe

PHP:
name = 'category_0'; $value = array(0,1,3,4); $label = array('---', 'Apple', 'Nokia', 'Sony Erricson')
$sbox = createSelectField($name, $value, $label, 3);
echo $sbox;

, dann kommt folgender Quelltext heraus:
HTML:
<select name="category_0">
<option value="0"  >---</option>
<option value="1"  >Apple</option>
<option value="3" selected="selected" >Nokia</option>
<option value="4"  >Sony Erricson</option></select>

das ist ja auch de rrichtige Quelltext nur leider gibt mir das Skript immer das erste feld als selected aus.
Kopiere ich den erzeugten Code in eine html-Datei, wird es richtig angezeigt und das 3. element ist selektiert.

Woran kann das liegen? Spinnt der Server?
Ich bin für jede Antwort dankbar, auch wenn es nur eine Vemrutung ist

Danke im Vorraus
 
Zuletzt bearbeitet:
Also ich VERMUTE dein Fehler ist

folgender

$selected = 'selected="selected"'
müsste richtig lauten
$selected = 'selected'


, denn in der Ausgabe steht ja auch bei deiner Variante
<option value="3" selected="selected" >Nokia</option>
müsste aber nur lauten
<option value="3" selected>Nokia</option>

----edited-----

hab gerade gefunden:
Wenn Sie XHTML-Standard-konform arbeiten wollen, müssen Sie das Attribut in der Form selected="selected" notieren.
Aber, programmierst du überhaupt XHTML komform, ist vieleicht die Dokoumentationstyp bezeichnung ganz oben falsch, im header?
 
Zuletzt bearbeitet:
Mach doch einfach mal nur selected anstatt selected="selected"...

HTML:
<select name="category_0">
<option value="0">---</option>
<option value="1">Apple</option>
<option value="3" selected>Nokia</option>
<option value="4">Sony Erricson</option></select>
 
Hmm die Antworten klangen Plausiebel aber es hat leider nichts gebracht.

Der DOC-Type ist XHTML 1.0 Trasitional
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Hab ihn geändert auf HTML 4.01 Transitional
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
umgestellt und beide Versionen einmal mit = und einemal ohne probiert. Brachte leider keine Änderung.
 
JETZT BIN ICH VÖLLIG VERWIRRT

ABER ICH HABE DAS PROBLEM GLÖST

Documenten typ =
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

verwendete Variante nur selected

warum es vorhin nicht geklappt hat keina ahnung

DANKE FÜR DIE LÖSUNG
 
Zurück
Oben