Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem mit "multiple option select" [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit "multiple option select"


 
Tragon
07-06-2002, 23:25 
 
Also ich habe ein Formular gemacht mit multiplen option! Wenn ich dann mehrer auswähle und über die Post-Methode übertrage und insert in meine DB mach hab ich das Problem das ich nicht mehrere Werte drin hab sondern nur einen. Die Datenbank Variable ist Tinytext! Also geht es überhaupt multiple Options in Mysql einzufügen und wenn ja wie? Was mach ich falsch?

 
mkJack
08-06-2002, 00:20 
 
Bei einer multiplen Auswahlliste muß aus der Formular-Variablen ein Array gemacht werden, dann kannst du alle ausgewählten Werte auslesen:

Beispiel:<form method="post">
<select name="select[]" size="4" multiple>
<option>eins</option>
<option>zwei</option>
<option>drei</option>
<option>vier</option>
</select>
<input type="submit" value="Und ab">
</form>
<?

$auswahlliste = $HTTP_POST_VARS["select"];
// Achtung, ab PHP 4.1 gilt $_POST statt $HTTP_POST_VARS

echo "Die von Ihnen ausgewählten Werte:<br><b>";

for ($i=0;$i<sizeof($auswahlliste);++$i) echo "$auswahlliste[$i]<br>";
?>

 
Tragon
08-06-2002, 02:08 
 
Sorry das ich so dumm Fragen muß aber [] müssen in select aber dann nachher nicht mehr bei der Übertragung?

Bei mir kommt folgender Fehler wenn ich es so mache:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /is/ on line 35
Woran liegt es? Könnte es daran liegen das ich den Php.code direkt in der Mysql Insert Values( ) Anweisung ausführe?

 
hand
08-06-2002, 09:46 
 
Kontrolliere die Schreibweise der Variable einerseits im Formular und andererseits im Skript, die den Array abarbeitet.
Groß- Kleinschreibung?
Der Variablenname darf nicht mit einer Zahl beginnen wie etwa $4YOU
Wie lautet die Variable?

Im Form ist Vraiable mit [] anzugeben, im Skript, welches diese Vraiable abarbeitet OHNE []


<form method="post">
<select name="myvariable[]" size="4" multiple>
<option>eins</option>
<option>zwei</option>
<option>drei</option>
<option>vier</option>
</select>
<input type="submit" value="Und ab">
</form>
<?

for ($i=0;$i<sizeof($myvariable);++$i) echo "$myvariable[$i]<br>";
?>

 
Tragon
08-06-2002, 11:38 
 
Hoffentklich verstehe ich das richtig es müßte so ja funktionieren,tut es aber leider nicht. Also den "for" hab ich nachdem ich auf submit clicke auf der nächsten Seite. Und dort in INSERT INTO tabelle() Values( '
for ($i=0;$i<sizeof($myvariable);++$i) echo "$myvariable[$i]<br>";')

Jetzt kommt dann ein Parser error? Ich weiß leider net woran des liegen könnte? Kann man es so nicht in einen Insert-Befehl schreiben??

 
hand
08-06-2002, 15:38 
 
for ($i=0;$i<sizeof($myvariable);++$i) {
// Keine Ahnung was Du da noch so alles machst
// Keine Ahnung, ob Du je gesetztem Optionsfeld einen INSERT benötigtst
INSERT INTO tabelle Values( ''.....);
}

 
Tragon
08-06-2002, 21:54 
 
Also ich will einfach den/die kompletten Werte markiert worden sind einfügen z.B. in tabelle1 und das markierte ALLES in die Option Spalte.Direkt geht es ja nicht, sprich so:??
INSERT INTO tabelle Values( ' for ($i=0;$i<sizeof($myvariable);++$i) ;' .); ????

 
hand
08-06-2002, 23:06 
 
Ich hab wirklich keinen blassen Schimmer was Du willst, aber vielleicht hilft Dir das ein wenig weiter:


$option = "Optionen: ";
for ($i=0;$i<sizeof($myvariable);++$i) {
$optionen .= $myvariable[$i];
$optionen .= " ";
}
// Im Feld $optionen steht jetzt beispielsweise
// "Optionen: eins drei " oder
// "Optionen: drei " oder
// "Optionen: eins zwei vier " usf.

 
Tragon
09-06-2002, 15:39 
 
Es sollte so sein wenn es geht, dass man in dem Formular eine oder mehre optinonen auswählt
--------------------------------------------------------------------------------

<form method="post">
<select name="select[]" size="4" multiple>
<option>eins</option>
<option>zwei</option>
<option>drei</option>
<option>vier</option>
</select>
<input type="submit" value="Und ab">
</form>
Dann es auf die Folgeseite übermittelt und man es dann (dachte ich zumindest) so in die DB reinschreibt:
for ($i=0;$i<sizeof($select);++$i) {
$sql_insert=" INSERT INTO Branche (
unternehmensgroesse,
branche_der_gesuchten_taetigkeit,
)
VALUES
('$unternehmensgroesse',
'$select[$i]',
)";}
Allerdings schreibt es bei mir jetzt immer nur den letzten Wert den ich im Multiplen Optionsfeld ausgewählt habe rein!Was mache ich hier jetzt falsch?Weißt du jetzt was ich gemeint habe?

 
hand
09-06-2002, 16:10 
 
So wie Du es gecodet hast, müßte je Optionsfeld ein Record in die DB geschrieben werden.

Du schreibst Die Datenbank Variable ist Tinytext! ich denke Du meist damit branche_der_gesuchten_taetigkeit. Wenn das so ist, würde ich das wir folgt berwerkstelligen:

for ($i=0;$i<sizeof($select);++$i) {
$optionensammler .= $select[$i] . " ";
}

// Im Feld $optionensammler steht jetzt beispielsweise
// "eins drei " oder
// "drei " oder
// "eins zwei vier " usf.

$sql_insert="INSERT INTO Branche (unternehmensgroesse, branche_der_gesuchten_taetigkeit)
VALUES ('$unternehmensgroesse', '$optionensammler')";

 
Tragon
09-06-2002, 16:49 
 
Jo genau so, vielen vielen Dank jetzt funktioniert dies sowie es soll!Echt ein sehr gutes Board mit um einiges besseren Mods!!!!!

 
hand
09-06-2002, 16:52 
 
Diese Erkenntnis erst mit Post 66 ? *fg* :D

 
Tragon
09-06-2002, 17:00 
 
Lieber spät als nie!:)


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:10 Uhr.