[PHP] mehre Sachen In DB einragen.

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.743
123
Hi Leute ich habe diese FELD:


Code:
<select name="zusatz" size="14" multiple>
        <option value="1,">Farbstoff</option>
        <option value="2,">Konservierungsstoff</option>
        <option value="3,">Antioxidationsmittel</option>
        <option value="4,">Geschmacksverstärker</option>
        <option value="5,">geschwefelt</option>
        <option value="6,">geschwärzt</option>
        <option value="7,">gewachst</option>
        <option value="8,">mit Süßungsmittel</option>
        <option value="9,">enthält eine Phenylanalinquelle</option>
        <option value="10,">Phosnat</option>
        <option value="11,">Nitrinpökelsalz</option>
        <option value="12,">Milcheiweiß</option>
        <option value="13,">Eiklar</option>
        <option value="14,">unter Verwendung von Sahne</option>
    </select>

Und möchte das wenn mehre Sachen ausgewählt worden sind diese auch in der Datenbank dann stehen.
Bis jetzt steht immer nur eines davon in der DB..

Habe auch schon einen test gemacht so hier:
Code:
<input type="checkbox" name="zusatz" value="1">Farbstoff<br>
<input type="checkbox" name="zusatz" value="2">Konservierungsstoff<br>
<input type="checkbox" name="zusatz" value="3">Antioxidationsmittel<br>
<input type="checkbox" name="zusatz" value="4">Geschmacksverstärker<br>

Aber genau das gleiche.

Was muss ich machen?
 
Mach mal ein - ich nehm an, das Formular wird mit POST gesendet -
PHP:
print_r($_POST);
, dann siehst du, wie du erkennst, welche Werte gecheckt sind und welche nicht.

Die trägst du einfach in die DB ein. Beachte ggf. Normalisierung.
 
Du musst aus zusatz ein Array machen.
PHP:
name="zusatz[]"
Ansonsten überschreibst du alle Werte immer mit dem letzten.
 
Du musst aus zusatz ein Array machen.
PHP:
name="zusatz[]"
Ansonsten überschreibst du alle Werte immer mit dem letzten.

Danke für den hinweis


Du meinst es so?
<?php
$zusatz = array("hier0", "hier1", "hier2", "hier3");
?>

Und so weiter..
Aber wie mache ich das mit dem formular?
 
Im HTML und nach dem Abschicken haste es auch in PHP als Array. ZeroCCC hat doch schon geschrieben, wie der code sein muss.
 
Das hab ich schon gepostet wie du das mit einem Formular machst ;)

Wenn du
PHP:
name="zusatz"
machst und mehrere Sachen auswählst sendet der Browser das ganze so:

PHP:
zusatz=1&zusatz=3&zusatz=7...

Dabei überschreibt PHP die Variable immer mit dem nächsten Wert. Also wäre zusatz am ende 7.

Machst du aber
PHP:
name="zusatz[]"
sieht das ganze so aus:

PHP:
zusatz[]=1&zusatz[]=3&zusatz[]=7...

In dem fall weiß PHP durch die [] dass das ein Array ist und somit ist zusatz am Ende array(1,3,7).
 
Ja, du musst dann auch das Array durchlaufen und jeden Wert einzeln in die DB einfügen (oder ein Multi-Row-Insert basteln).

PHP:
<?php 
    foreach($_POST['zusatz'] AS $zusatz) {  
        // eintragen
        mysql_query("INSERT INTO tabelle(feld) VALUES('" . mysql_real_ecape_string($zusatz) . "')");
    }
?>

Greetz

paddya
 
Zuletzt bearbeitet: