# Array to String conversion



## wal (30. März 2004)

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
	if (isset($_POST["suchen"])){
	}
	   $s_begriff = explode(",",$_POST['oberbegriff']); // Zeile 17
	}
	echo $s_begriff;
?>
```

HTML:

```
<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


----------



## aquasonic (30. März 2004)

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 
    if (isset($_POST["suchen"])){  
       $s_begriff = @explode(",",$_POST['oberbegriff']); // Zeile 17 
    } 
    echo $s_begriff; 
?>
```


----------



## Chino (30. März 2004)

> _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:


```
<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 
    if (isset($_POST["suchen"])){  
       $s_begriff = implode(",",$_POST['oberbegriff']);
    } 
    echo $s_begriff; 
?>
```
Du hast eine falsche Funktion benutzt


----------



## Tim C. (30. März 2004)

explode ist die falsche Funktion. Ich denke, du hast nach implode gesucht. Der Fehler taucht auf, weil du der explode Funktion ein Array als zweiten Parameter übergibst, die Funktion jedoch einen String erwartet.

http://de2.php.net/explode
http://de.php.net/implode

//edit: verdammt...zu langsam


----------



## aquasonic (30. März 2004)

> _Original geschrieben von Chino _
> **verfolgmodusan*
> Nein  Werf doch bitte mal einen genaueren Blick auf das Select-Element:
> 
> ...




Hast recht *verfolg*


----------



## wal (30. März 2004)

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 ...  

Original:

```
<?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?  

*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...


----------

