PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

21-06-2008, 18:09
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Listenfed mit Mehrfachauswahl
Hallo,
Wie erhalte ich die Werte einer Mehrfachauswahl in einem Listenfeld in einem Formular.
Ich bekam nur immer den letzten Wert, will aber alle ausgewählten Werte.
Ich habe es auch mit einem Array probiert, geht auch nicht.
Zitat:
$Wert[] = $_POST['Wert'];
|
Gruß, Hoffi
__________________
Gruß Hoffi aus Radeberg
|

21-06-2008, 18:23
|
lennart
PHP Junior
|
|
Registriert seit: May 2007
Ort: Hamburg
Beiträge: 565
|
|
Schau doch mal was dir folgendes zeigt:
PHP-Code:
echo "<pre>";
print_r($_POST);
echo "</pre>";
|

21-06-2008, 19:50
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Zitat:
echo "<pre>";
print_r($_POST['Wert']);
echo "</pre>";
|
Es wird auch hier nur der letzte Wert angezeigt.
Ich habe Eintrag 1,2,3 ausgwählt, eine 3 wird angezeigt.
Danach habe ich 3,5,6 ausgewählt, wieder nur die 6 angezeigt.
Es muss doch aber gehen, sonst wäre doch eine Mehrfachauswahl sinnlos.
__________________
Gruß Hoffi aus Radeberg
|

21-06-2008, 19:53
|
Blackgreetz
PHP Junior
|
|
Registriert seit: Oct 2005
Beiträge: 901
|
|
Zeig mal bitte dein HTML-Code
mfg
|

22-06-2008, 10:52
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Hier der Formularteil:
Zitat:
<select name="Gremium" size="10" multiple>
<option value="1">Ortschaftsrat</option>
<option value="2">Gemeinde o. Stadtrat</option>
<option value="3">Bürgermeister</option>
<option value="4">Kreistag</option>
<option value="5">Kreisrat</option>
<option value="6">Landtag</option>
<option value="7">Bundestag</option>
<option value="8">Europa-Parlament</option>
<option value="9">Volksbefragung/Volksentscheid</option>
</select>
|
und die Auswertung:
Zitat:
$id = $_POST['id'];
$Gremium = $_POST['Gremium'];
/* Diese Abschnitt funktionierte nicht !
for($i = 1; $n < 10; $i++) {
echo "<b>Zähler = </b>".$i."<br>"; //Zum Test
if(!empty($Gremium.$i)) {
$Gremium = $Gremium.",".($Gremium.$i = trim($_POST['Gremium$i']));
echo "<b>Gremium = </b>".$Gremium."<br>"; //Zum Test
}
*/
//--
echo "<pre>";
print_r($_POST['Gremium']);
echo "</pre>";
//--
|
Entscheidend ist aber die Tatsache, dass bei Mehrfachauswahl (multiple) nur ein Wert bei "$_POST" ankommt.
__________________
Gruß Hoffi aus Radeberg
|

22-06-2008, 11:22
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.745
|
|
Du musst den Namen von select-Element array-fähig deklarieren:
<select name="Gremium []" multiple>
Dann kannst du folgendes probieren:
PHP-Code:
if (is_array($_POST['Gremium']))
foreach($_POST['Gremium'] as $sel)
echo 'selected: '.$sel.'<br />';
else
echo 'kein array';
print_r($_POST['Gremium'] bringt - wie immer - die Erleuchtung.
|

22-06-2008, 15:00
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Aha, dort ist der Knackpunkt.
Werde es ändern.
Danke für den Tipp.
__________________
Gruß Hoffi aus Radeberg
|

23-06-2008, 12:45
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Nun taucht in dem Zusammenhang ein neues Problem auf:
Der ermittelte Wert wird nicht in die Datenbank übernommen.
Trage ich den Wert in der DatenbankTabelle in die vorgesehene Zelle ein, wird er bei Aufruf kurz angezeigt, dann gelöscht.
(Vor dem Einsatz dieser Array-Sache hat alles funktioniert.)
????
Hier der Code:
Zitat:
if (is_array($_POST['Gremium'])) {
foreach($_POST['Gremium'] as $sel)
if(empty($GremiumWert)) $GremiumWert = $sel;
else $GremiumWert = $GremiumWert.",".$sel;
echo 'selected: '.$sel.'<br />';
echo 'Anzeige: '.$GremiumWert.'<br />';
} else {
$GremiumWert = 'Keine Auswahl!'; echo 'kein array'; } print_r($_POST['Gremium']);
|
Der Code für ein Update sieht so aus:
Zitat:
$query = "UPDATE test_daten SET BeginDatumTag = '$BeginDatumTag', BeginDatumMonat = '$BeginDatumMonat', BeginDatumJahr = '$BeginDatumJahr', WahlDatumTag = '$WahlDatumTag', WahlDatumMonat = '$WahlDatumMonat', WahlDatumJahr = '$WahlDatumJahr', WahlArt = '$WahlArt', GremiumWert = '$GremiumWert' WHERE id = $id";
|
INSERT u.a. noch nicht gesetzt, muss erstmal so fnktionieren.
Die Echo-Anzeigen zeigen alles richtig an, das MySQL-Feld ist "VARCHAR" und richtig dimensioniert.
Normalerweise müsste nun der Wert "$GremiumWert" in die Datenbank eingetragen werden.
Großes ?
__________________
Gruß Hoffi aus Radeberg
Geändert von kjhofmann (23-06-2008 um 12:53 Uhr)
|

23-06-2008, 12:53
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Wofür gibts eigentlich die PHP-Tags?
Zitat:
Der Code für ein Update sieht so aus:
|
Und wie sieht die vollständig geparste und ausgegebene Query aus? (Regeln)
Zitat:
Normalerweise müsste nun der Wert "$GremiumWert" in die Datenbank eingetragen werden.
|
Wenn es dir nur um den wert geht, warum sprichst du insgesamt so viele Spalten an?
Geändert von TobiaZ (23-06-2008 um 12:56 Uhr)
|

23-06-2008, 13:10
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
|
|
Warum eigentlich eine Mehrfachauswahl, wenn du dann doch nur den letzten Wert aus $_POST['Gremium'] in $GremiumWert übernimmst? Genau das passiert nämlich in deiner foreach Schleife.
Wie passt die Mehrfachauswahl eigentlich zu deinem DB-Schema? Du hast eine $id in der Hand und mehrere Werte in $_POST['Gremium']. Wenn $id dein Primary Key ist, wird am Ende immer nur der letzte Wert aus $_POST['Gremium'] in der DB stehen, auch wenn du das mit der Schleife geregelt bekommst.
Sieht so aus als bräuchtest du eine weitere Tabelle. Ich habe den Thread allerdings nicht ganz gelesen ...
Geändert von onemorenerd (23-06-2008 um 13:14 Uhr)
|

23-06-2008, 15:20
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Also mal langsam:
Im $GremiumWert steht nicht der letzte Wert, sondern alle ausgewählten Werte. Echo-Ausgabe zeigt es.
Zitat:
Und wie sieht die vollständig geparste und ausgegebene Query aus? (Regeln)
|
Damit weiß ich nichts an zu fangen. Bisher hat der UPDATE so funktioniert. Wo finde ich die erwähnte Regel (in Deutsch, mein Englisch ist leider rudimentär)
Zitat:
Wie passt die Mehrfachauswahl eigentlich zu deinem DB-Schema? Du hast eine $id in der Hand und mehrere Werte in $_POST['Gremium']. Wenn $id dein Primary Key ist, wird am Ende immer nur der letzte Wert aus $_POST['Gremium'] in der DB stehen, auch wenn du das mit der Schleife geregelt bekommst.
|
Ich habe die Werte der Schleife in den Wert $GremiumWert jemeils mit Komma getrennt ermittelt, so dass ich dann nur einen Wert für die Datenbanktabelle habe.
Dort, wo die Werte dann in einer (oder mehrere) Webseiten ausgewertet werden, werden diese Daten wieder in ein Array aufgelöst und kommen zur Anzeige.
Zitat:
Sieht so aus als bräuchtest du eine weitere Tabelle. Ich habe den Thread allerdings nicht ganz gelesen ...
|
Kann man denn innerhalb eines Formular Werte auf zwei Tabellen speichern? Habe ich noch nicht gemacht. Wei geht das?
Der Hintergrund der Aktion:
Ich habe den Auftrag, für einen SPD-Verein die Webseiten neu zu gestalten.
Für Wahlen wird nun das Datum des beginnenden Wahlkampfes, das Wahldatum, die zu wählenden Gremien und noch die Wahlart (Landesweit, Einzelwahl etc.) in eine Datenbank gegeben und auf den einzelnen Webseiten mit den zu wählenden Personen verknüpft.
Da aber bekannterweise sehr unterschiedlich die Gremien gewählt werden, z.B. Stadt- & Gemeinderat, Kreistag, Bürgermeister usw. muss immer unterschiedlich ausgewählt werden. Das wollte ich mit einer Mehrfachauswahl lösen.
Die gesamte Tabelle funktioniert einwandfrei, nur wenn ich den ermittelten Wert der Mehrfachauswahl hinzu füge, geht es nicht mehr.
Um mich der Sache zu nähern, habe ich eine Testseite angelegt, in der ich nur die nötigsten Werte verwende. Einen Wert1, die Mehrfachauswahl und einen Wert2, ein Textfeld.
Ich hoffe hier der Sache auf den Grund zu kommen.
__________________
Gruß Hoffi aus Radeberg
|

23-06-2008, 15:34
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
Zitat:
Im $GremiumWert steht nicht der letzte Wert, sondern alle ausgewählten Werte. Echo-Ausgabe zeigt es.
|
Poste die Ausgabe hier!
Zitat:
Wo finde ich die erwähnte Regel (in Deutsch, mein Englisch ist leider rudimentär)
|
http://php-resource.de/forum/showthr...threadid=50454
Zitat:
Kann man denn innerhalb eines Formular Werte auf zwei Tabellen speichern? Habe ich noch nicht gemacht. Wei geht das?
|
Das Formular hat nichts mit der Tabelle zu tun. Die Frage ergibt so keinen Sinn.
|

23-06-2008, 15:35
|
kjhofmann
Registrierter Benutzer
|
|
Registriert seit: Mar 2006
Beiträge: 61
|
|
Ich glaube, jetzt habe ich es.
Ich darf nicht den Sammelwert $GremiumWert in die Datenbank eintragen wollen, sondern eine neue Variable nehmen, z.B. $GremiumEintr und diese übergebe ich den Sammelwert.
Zitat:
$GremiumEintr = $GremiumWert;
|
So hat es funktioniert.
Danke für die Mithilfe.
__________________
Gruß Hoffi aus Radeberg
|

23-06-2008, 15:37
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
ganz sicher...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|