Marcus
Avatar Marcus
Themenersteller
Guru (224 Beiträge)

Daten werden nicht übergeben (Seite 2)


Marcus
Avatar Marcus
Guru (224 Beiträge)
am 15.06.2011, 18:58 Uhr schrieb Marcus

Hallo zusammen!

Vielleicht mögt ihr mir noch bei folgendem helfen:

Ich würde aus dem Select-Feld für die Tage gern ein Mehrfach-Auswahl-Feld machen (also multiple).

Soweit ich rausgefunden habe, muss ich dazu erst beim select hiter dem Namen ein [] setzen, um arrays verwenden und es damit verarbeiten zu können.

Ich habe da auch schon ein Beispiel gefunden, aber wie ich das auf meinen Fall umwandle, da haperts:

$tage = $_POST[\'tage\'];
if(is_array($tage)) // falls $leute ein Array ist
{
foreach($tage as $value) // Array mit tage nacheinander durchgehen
{
// hier der Code zum Speichern
// in $value befindet sich bei jedem Schleifendurchlauf eine der ausgewählten Nrn der $leute
}
}
else if(!empty($tage)) // wenn $leute kein Array ist, aber auch nicht leer ist
{
// hier der Code zum speichern
}


Und zwar am Code den ich da einsetzen muss.



Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 15.06.2011, 22:31 Uhr schrieb matthes

$_POST[\'tage\'] wird, sofern es nicht leer ist, immer ein Array sein, wenn dein select mit "name[]" gekennzeichnet wurde.
Allerdings reicht bei einem multiplen Auswahlfeld der normale Name, da müssen keine Klammern hin.
[html]<select multiple="multiple" name="auswahl">
<option>1</option>
<option>2</option>
</select>[/html]

Wenn ich mich nicht irre, sollte $_POST[\'auswahl\'] (bzw $_POST[\'tage\'] in deinem Code) bei einer einzigen Auswahl diese enthalten und bei mehrfacher Auswahl ein Array sein.

Wie der Code aussehen muss, den du da einsetzen möchtest, können wir erst sagen, wenn wir wissen, was er tun soll.
Willst du die Werte dann einfach aneinander hängen, mehrfache Einträge in die Datenbank vornehmen (für jede Auswahl einen), ...?

PS: Ultimas Hinweis sollte an der Stelle im MySQL-Handbuch aufgeführt werden...


Make Seitenreport great again!

Marcus
Avatar Marcus
Guru (224 Beiträge)
am 16.06.2011, 10:22 Uhr schrieb Marcus

Hallo Matthes!

Die Auswahl im multiplen Feld soll hier bei Tage angegeben werden und in der Datenbank im selben Féld gespeichert werden.

Am Besten untereinander. So das eine Ausgabe erfolgen kann wie im angehängten bild


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 16.06.2011, 11:03 Uhr schrieb matthes

Erste Korrektur: Du brauchst die eckigen Klammern im Namen, sonst wird nur der letzte Wert übergeben. Mein Fehler, ich dachte, es würde automatisch ein Array werden...

Das macht den nächsten Schritt aber ziemlich einfach.

<?php
$tage=implode(\', \',$_POST[\'tage\']);
/*
* ergibt:
* mehrere Tage: "Dienstag, Freitag, Samstag";
* ein Tag: "Montag"
*/
?>


Damit hast du in $tage die ausgewählten Tage kommagetrennt und kannst die Variable ganz normal in deinem Code nutzen.

Es schadet nie, sich sowas beispielhaft zusammenzusetzen und alle Variablen mal ausgeben zu lassen. Mit folgendem Code kann man sich auch schön Arrays ausgeben lassen und kommt vielleicht selbst darauf, wie man sie handhaben muss.
<?php
echo \'

\';

var_export($_POST);
echo \'

\';
?>


Make Seitenreport great again!


gelöschter Benutzer
am 16.06.2011, 11:28 Uhr schrieb

Hallo Ihr,

ich glaube eine einfache Checkbox Liste wäre vielleicht besser. Es sieht besser aus und ist leichter zu handhaben, nicht jeder weiß, dass man die STRG Taste gedrückt halten muss, für die Auswahl in der Selectbox.

Das ganze lässt sich dann Wunderbar mit einem SET in der Datenbank speichern ohne gegen die Normalformen zu verstoßen.

Schöne Grüße Thomas

<?php $days = array(\'Mo\'=>\'Montag\',\'Di\'=>\'Diensttag\',\'Mi\'=>\'Mittwoch\',\'Do\'=>\'Donnerstag\',\'Fr\'=>\'Freitag\',\'Sa\'=>\'Samstag\'); ?>


    <?php foreach($days as $k=>$v):?>

  • <input type="checkbox" name="tage[]" id="tage<?php echo $k; ?>" value="<?php echo $k; ?>" />
    <label for="tage<?php echo $k; ?>"><?php echo $v; ?>

  • <?php endforeach; ?>


Marcus
Avatar Marcus
Guru (224 Beiträge)
am 16.06.2011, 12:37 Uhr schrieb Marcus

Hallo zusammen!

Ich möchte mich jetzt mal sehr herzlich für Eure Hilfe bedanken!

Das Problem für mich bei der ganzen Programmierei ist, das ich durchaus verstehe, was die einzelnen Befehle tun, und wie sie funktionieren.

Leider habe ich aber dann die meiste Zeit ein Brett vorm Kopf, wenn es daran geht, das umzusetzen.

Aber mit Eurer Hilfe und ein wenig friemelei hab ich das jetzt passend bekommen.

Am Aussehen muss ich noch feilen, aber ich denke, das sollte ich ohne fremde Hilfe hinkriegen

Gruß

Marcus


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de



« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5275 Themen und 36109 Beiträge.
Insgesamt sind 48343 Mitglieder registriert.