Array in Datenbank übergeben

fabphp

Mitglied
hallo zusammen,
nach langer suche ohne richtig fündig zu werden schreib ich mal an euch.
hoffe ihr könnt mir weiterhelfen:

also ich habe ein paar checkboxen zur auswahl und speichere die ausgwählten boxen in array. nun habe ich das problem mit der übergabe an meine datenbank.
es trägt nix ein und somit steht nur "Array" in meiner Tabellenspalte.

Code:
...
mysql_query("INSERT INTO `tabelle` (`IID`,  `ausstattung`) VALUES ('','$ausstattung');");  
	


html-teil
<input type="checkbox" name="ausstattung[]1" value='bla'>
<input type="checkbox" name="ausstattung[]4" value='blabla'>

php
$ausstattung = $_GET['ausstattung'];

Daher meine frage wie verarbeite ich ein array so das ich es vernünftig in eine datenbank eintragen kann und nachher alle ausgewählten checkboxen wieder ausgebe.

vielen dank im vorraus
 
Einen Array kannst du nicht in einer Datenbank speichern, dazu musst du ihn erst in einen String umwandeln. Sieh dir dazu mal die Funktionen [phpf]serialize[/phpf]/[phpf]unserialize[/phpf] genauer an.
 
ja hab ich gemachzt aber irgedwie raff ichs net. da handelt sich ja auch alles um odbc anwendungen.

habe auch meine array geserialized aber wahrscheinlich nicht richtig.



Code:
$serausstattung = serialize($ausstattung);

es wird ja auch nirgends was erklärt, nur codebeispiele ohne ende zum durchwuseln.

was bedeutet denn das $PHP_AUTH_USER ?
und wofür brauch ich es?
Code:
sqldata = array (serialize($session_data), $PHP_AUTH_USER);

aber danke schon mal für die rste reaktion
 
ja cool danke. sitz wahrscheinlich schon zu lange vor dem bildschirm.
so schreibt er wenigstens schon etwas in die tabelle.
muss jetzt nur noch an der ausgabe feilen da, noch einige komische zeichen wie {}S8,.... mitgeliefert werden.

ich habs direkt in die sql anweisung reingepackt wie von dir (snuu) gepostet.

oder liegt das nicht an der ausgabe sondern an meinen arrays? weil in phpmyadmin steht auch schon mit den zeichen drinne

beispiel
a:1:{i:0;s:5:"arrayspeicherung";}
oder a:2 falls ich 2 checkboxen ausgewählt habe.

ich hab auch leider keine vernünftigen erläuterungen zu dem serialize gefunden
aber danke schon mal
 
[phpf]serialize[/phpf] konvertiert das Array in einen String mit den benötigten Informationen, die [phpf]unserialze[/phpf] braucht, um aus diesem String wieder ein Array zu erzeugen. Also musst Du nach dem Auslesen aus der Datenbank [phpf]unserialze[/phpf] auf das Feld anwenden.

Genauso funktioniert das auch bei Objekten und beliebigen Datentypen.

snuu
 
ich chex einfach nicht habe jetzt direkt nachm auslesen ausser db versucht es zurückzuwandeln und auch bei der ausgabe aber irgendwie liefert er mir dabei nur die ID die ich vergeben lasse oder gar nix mehr.
ich kenn mich mit php-funktionen gar icht aus. daher versteh ich ich die syntax auch nicht.

wie muss ich das in ein array[] schreiben?
 
also ich les ganz normal die daten aus der tabelle und dann die umwandlung in ein vermeitliches array
Code:
$result = mysql_query("SELECT ausstattung FROM tabelle ");
for($i=0;$i<mysql_num_rows($result); $i++)
	 {
		$ergebnis[$i] = mysql_fetch_array($result);
	 }

for ($i=0; $i<count($ergebnis);$i++)
 {
<table width=100% border=5 align=center cellpadding=5 cellspacing=5>
echo"<tr>";
$tmp=unserialize($ausstattung[0]);
		  $ausstattung = array(tmp);
		  for ($z=0;$z<sizeof($ausstattung);$z++) {"ausstattung";}
	  echo"<td width=70%> ".$ergebnis[$i][ausstattung]." </td>";
echo"</tr>";
}
 echo"</table>" ;
?>


und raus komt nur
a:1:{i:0;s:5:"bla";}
 
Da ist zumindest einer deiner Fehler. Hab nach anderen nicht geschaut ;)

PHP:
$tmp=unserialize($ausstattung[0]);
		  $ausstattung = array(tmp);

[phpf]unserialize[/phpf] wandelt deine Daten schon in ein Array um. Also brauchst du das selber garnicht mehr zu machen. Änder die Zeile mal in
PHP:
$tmp=unserialize($ausstattung[0]);

und lass das mit dem "array(tmp);" weg :)
 
Zurück