Zum Inhalt springen

Selectbox mit Mehrfachauswahl: Textausgabe im Frontend

Erstellt am 16. Oktober 2008 · 1 Antwort · letzte Antwort am 16. Oktober 2008

Tags: TCA, PHP, Frage

mila ·

Hallo,

was das Extension-Schreiben und PHP betrifft, bin ich absoluter Neuling. Ich habe folgende Frage: Ich habe ein Backend-Formular mit Kickstarter erstellt, dass u.a. eine Selectbox mit Mehrfachauswahlmöglichkeit enthält. Die Auswahlen werden in der Datenbank auch richtig abgelegt, nur eben als Zahl, was mir bzw. dem Website-Besucher nicht viel nützt, denn der will ja Klartext haben. Also habe ich es geschafft, dass mittels "case" anstelle der Zahlen entsprechender Klartext ausgegeben wird. Das funktioniert auch wunderbar, solange in der Selectbox nur eine Option ausgewählt ist. Sobald aber mehrere Optionen gewählt sind, werden mir im Frontend wieder nur die Zahlen ausgegeben. Außerdem erscheint am oberen Bildschirmrand folgende Fehlermeldung:

FamilienrechtArbeitsrecht
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\anwaltsverein_t3\typo3conf\ext\ksmitglieder\pi1\class.tx_ksmitglieder_pi1.php:80) in C:\xampp\htdocs\anwaltsverein_t3\typo3\sysext\cms\tslib\class.tslib_fe.php on line 3221

Für Hinweise wäre ich sehr dankbar - habe gerade erst mit dem Selbststudium von PHP angefangen.

Danke schon mal im Voraus!
mila

$res=$GLOBALS["TYPO3_DB"]->exec_SELECTquery("*","tx_ksmitglieder_anwaelte","deleted = 0 AND hidden = 0");
		while ($row=$GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res)) {
		//Array mit Platzhaltern als Schlüssel mit den Werten füllen
		$marker["###NAME###"]=$row["name"].", ".$row["first_name"];
		$marker["###KANZLEI###"]=$row["kanzlei"];
			$schwerpunkt = array($row["schwerpunkt"]);
			foreach ($schwerpunkt as $marker["###SCHWERPUNKT###"]){
			
				
				switch ($row["schwerpunkt"]) {
				case "0": echo $schwerpunkt="";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "1": echo $schwerpunkt="Familienrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "2": echo $schwerpunkt="Verkehrsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "3": echo $schwerpunkt="Strafrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "4": echo $schwerpunkt="Arbeitsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "5": echo $schwerpunkt="Verwaltungsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "6": echo $schwerpunkt="Bau- und Architektenrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "7": echo $schwerpunkt="Handels- und Gesellschaftsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "8": echo $schwerpunkt="Miet- und Wohnungseigentumsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "9": echo $schwerpunkt="Steuerrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				case "10": echo $schwerpunkt="Versicherungsrecht";
				$marker["###SCHWERPUNKT###"]=$schwerpunkt;
				break;
				default:
					$hack=true;$row="schwerpunkt";
					
		
		$marker["###SCHWERPUNKT###"]=$schwerpunkt; 		
				}
				}
		
		$content.=$this->cObj->substituteMarkerArrayCached($tmpl, $marker);	
		}
//Ergebnis ausgeben
return $content;
	
		}
	
}
Stoneage ·

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\anwaltsverein_t3\typo3conf\ext\ksmitglieder\pi1\class.tx_ksmitglieder_pi1.php:80) in C:\xampp\htdocs\anwaltsverein_t3\typo3\sysext\cms\tslib\class.tslib_fe.php on line 3221

Kommt wahrscheinlich daher, dass Du irgendwelche Zeichen vor dem PHP-Skript verschickst. Beliebt ist auch dieser Fehler: verkürzte Schreibweise "<?" anstatt "<?php". Da ist individuell vom Interpreter abhänging.

default:
$hack=true;$row="schwerpunkt";
$marker["###SCHWERPUNKT###"]=$schwerpunkt;

Ist wahrscheinlich für Deinen Zahlendreher verantwortlich. Das ergibt irgendwie keinen Sinn mehr.

Im übrigen werde Mehrfach-Optionen zumeist als Array zurückgeben:
Hier mal ein Beispiel:

<form name="eins" method="post">
<select name="foo[]" id="test1" multiple="">
<option value="1">1
<option value="2">2
</select>
</html>

$arr=$HTTP_POST_VARS["foo"];
print_r($arr);  <- in dem Array steht (1,2).

Dann kannst Du mit einer einfachen

foreach ($arr as $k => $v {

res=$GLOBALS["TYPO3_DB"]->exec_SELECTquery("*","tx_ksmitglieder_anwaelte","deleted = 0 AND hidden = 0");

                while ($row=$GLOBALS["TYPO3_DB"]->sql_fetch_assoc($res)) {

                //Array mit Platzhaltern als Schlüssel mit den Werten füllen

                $marker["###NAME###"]=$row["name"].", ".$row["first_name"];

                $marker["###KANZLEI###"]=$row["kanzlei"];

                        $schwerpunkt = array($row["schwerpunkt"]);

                        foreach ($schwerpunkt as $marker["###SCHWERPUNKT###"]){


                                switch ($row["schwerpunkt"]) {

                                case "0": echo $schwerpunkt="";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "1": echo $schwerpunkt="Familienrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "2": echo $schwerpunkt="Verkehrsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "3": echo $schwerpunkt="Strafrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "4": echo $schwerpunkt="Arbeitsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "5": echo $schwerpunkt="Verwaltungsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "6": echo $schwerpunkt="Bau- und Architektenrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "7": echo $schwerpunkt="Handels- und Gesellschaftsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "8": echo $schwerpunkt="Miet- und Wohnungseigentumsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "9": echo $schwerpunkt="Steuerrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                case "10": echo $schwerpunkt="Versicherungsrecht";

                                $marker["###SCHWERPUNKT###"]=$schwerpunkt;

                                break;

                                default:

                                        $hack=true;$row="schwerpunkt";

                $marker["###SCHWERPUNKT###"]=$schwerpunkt;           
                               }

                                }

                $content.=$this->cObj->substituteMarkerArrayCached($tmpl, $marker);     

                }
//Ergebnis ausgeben
return $content;
}
} 
]