Array to String conversion

wal

Erfahrenes Mitglied
Hallo,

ich erhalte eine Fehlermeldung wie folgt:

Notice: Array to string conversion in \\server\test2.php on line 17

Ich versuche die Werte eines Arrays in ein String zu schieben. Diese sind dann mit Komma getrennt und werden in die DB abgespeichert.

Leider erhalte ich oben genannte Fehlermeldung und weiss nicht genau, wie ich diese im Script abfangen soll.

Anbei zum Testen die zwei kleinen Scripts:

PHP:
<?php
	if (isset($_POST["suchen"])){
	}
	   $s_begriff = explode(",",$_POST['oberbegriff']); // Zeile 17
	}
	echo $s_begriff;
?>

HTML:
Code:
<form name="test" action="test2.php" method="post">
Begriff<br>
	<select name="oberbegriff[]" size="2" multiple>
		<option value="Optional auswaehlen">Optional auswaehlen</option>
		<option value="Beg1">Beg1</option>
		<option value="Beg2">Beg2</option>
		<option value="Beg3">Beg3</option>
		<option value="Beg4">Beg4</option>
	</select>
<input id="1" type="submit" value="Finden" name="suchen">
</form>

Mit einer FOR-Schleife könnte man dies umgehen, aber die hilft mir leider im Script nicht weiter.

Hat jemand von euch eine Idee?

Vielen Dank im voraus für eure Hilfen und Tipps
 
Zuerst eine Frage: Wieso machst du dort im HTML ein Code ein Array? Wenn du beim SELECT einen Namen gibst dann ist dann in $_POST['variable'] der Wert drin den du ausgewählt hast?! Und du musst ja eigentlich nur den wissen oder?

Mit einem @ kannst du normalerweise die Fehlermeldungen ausschalten, also :

PHP:
<?php 
    if (isset($_POST["suchen"])){  
       $s_begriff = @explode(",",$_POST['oberbegriff']); // Zeile 17 
    } 
    echo $s_begriff; 
?>
 
Original geschrieben von aquasonic
Zuerst eine Frage: Wieso machst du dort im HTML ein Code ein Array? Wenn du beim SELECT einen Namen gibst dann ist dann in $_POST['variable'] der Wert drin den du ausgewählt hast?! Und du musst ja eigentlich nur den wissen oder?
*verfolgmodusan*
Nein :) Werf doch bitte mal einen genaueren Blick auf das Select-Element:

Code:
<select name="oberbegriff[]" size="2" multiple>
Der User kann hier mehrere Einträge auswählen. Damit die alle in einer Variablen drinstehen, wird ein Array verwendet.

*verfolgmodusaus* ;)

@wal:
PHP:
<?php 
    if (isset($_POST["suchen"])){  
       $s_begriff = implode(",",$_POST['oberbegriff']);
    } 
    echo $s_begriff; 
?>
Du hast eine falsche Funktion benutzt ;)
 
Original geschrieben von Chino
*verfolgmodusan*
Nein :) Werf doch bitte mal einen genaueren Blick auf das Select-Element:

Code:
<select name="oberbegriff[]" size="2" multiple>
Der User kann hier mehrere Einträge auswählen. Damit die alle in einer Variablen drinstehen, wird ein Array verwendet.

*verfolgmodusaus* ;)

@wal:
PHP:
<?php 
    if (isset($_POST["suchen"])){  
       $s_begriff = implode(",",$_POST['oberbegriff']);
    } 
    echo $s_begriff; 
?>
Du hast eine falsche Funktion benutzt ;)


Hast recht *verfolg*
 
Mann oh Mann,

ihr wart ja alle ganz schon fix - vielen Dank!:)

Da hilft ja auch kein "Asche auf mein Haupt mehr" oder " Man sieht den Wald vor Bäumen nicht" - im Script gibt es nicht so viele Bäume :-(

Aber mit den Antworten hat es perfekt funktioniert - Superklasse.

Aber es hat leider nur bei meinem Beispiel-Code funktioniert ... :mad:

Original:
PHP:
<?php
	session_start();

	session_register('refresh');
...
	if (isset($_POST["suchen"])){
		$s_begriff = implode(",",$_POST['oberbegriff']);
	}
		$_SESSION['refresh']=implode(";",$_POST);
...
	echo $s_begriff;
?>

Dies bedeutet in der Zeile $SESSION[...]=implode(";",$_POST); funktioniert dies nicht mehr und ich erhalte immer noch die Fehlermeldung! Jetzt wird's doch echt kniffelig oder? :(

Habt ihr eventuell dafür auch eine Idee? :rolleyes:

Hintergrund für diesen Session-Parameter ist, dass das Script kein zweites Mal ausgeführt wird, wenn ein User (warum auch immer) nach abschicken nochmals den Refresh-Button drückt.

Vielen Dank schon mal vorab...
 

Neue Beiträge

Zurück