Dropdown Box abfragen

Antispy

Mitglied
Hi Zusammen!

Ich versuche gerade folgendes, kann darauf aber leider nirgends eine Antwort finden :(
Vielleicht könnt ihr mir ja weiterhelfen :)

Ich habe eine Dropdown Box, in der mehrere Benutzergruppen angezeigt werden.
Nun ist es möglich mehrere Benutzergruppen durch drücken der [STRG]-Taste zu markieren.
Ich möchte nun gerne die Anzahl aller markierten Benutzer in einem Label ausgeben.

Ich habe bereits einen Array angelegt, wo alle Gruppen + Anzahl der User gespeichert sind - jetzt muss ich nu noch wissen, wie ich mit Javascript über einen onChange herausbekomme, welche Gruppen markiert sind, aber hier weiß ich leider nicht, wie das funktioniert.
Könnte mir hier evtl. jemand helfen?

Vielen Dank im Voraus!!


Der Array ist so aufgebaut:

Gruppe['Gruppenname'] = Anzahl_User;
 
Hi

ich weiß das du bei einem einfachen dropdown sodraufzugreifen kannst:
HTML:
<select onChange="document.getElementById('label').innerHTML = this.value;">
<option value="Hans">Hans</option><option value="Gerd">Gerd</option>
</select>
<div id="label">

Ob das bei multiselects auch so klappt musst du mal probieren :)
 
Hi, danke für die schnelle Antwort!

Das was du schreibst, das funktioniert, aber leider bekomme ich dann so nur den Wert, den ich als letztes markiert habe..
Mir fallen dann alle anderen Werte weg..
Ich habe auch schon versucht eine Art "history" zu führen, welche Werte angeklickt wurden, aber das geht leider auch nicht ganz, denn wenn ich mehrere Felder mit Drücken der STRG-Taste selektiert habe und dann ein Feld "einfach" anklicke, dann wird das leider nicht erkannt :(
 
Hi,

dann musst Du die Liste durchlaufen und prüfen, ob der jeweilige Eintrag ausgewählt ist:

HTML:
<script type="text/javascript">
function getSelected(liste) {
   for(i=0; i<liste.length; i++) {
      if(liste.options[i].selected == true) {
         // Eintrag ist markiert
         // Anzeigetext: liste.options[i].text
         // Feldwert: liste.options[i].value
      }
   }
}
</script>

<select onchange="getSelected(this);">
...

LG
 
Hi kuddeldaddeldu,
Deine Möglichkeit klappt soweit sehr gut :)
Nur nun stellt sich mir hierbei noch ein einzige Frage:
Ich kontrolliere so nun, ob eine Gruppe selektiert ist, aber wie kann ich hier nun das PHP-Array abfragen? Bzw. geht das überhaupt, weil PHP ja Serverseitig ist..

Wie könnte ich ansonsten die Daten austauschen? Ich kann die Daten nicht als "value" in das options-Feld packen, weil da bereits ein Wert drin steht! Also wollte ich das ganze übe ein extra Array machen.
Die Daten werden aus einer Datenbank ausgelesen.

Liebe Grüße,
Antispy
 
Hi,

Bzw. geht das überhaupt, weil PHP ja Serverseitig ist..

richtig, wenn Du in der Auswahlliste rumklickst, ist der PHP-Prozess längst Geschichte...
Lass Dein PHP-Script doch im Javascript-Teil ein entsprechendes Javascript-Array ausgeben. Du musst nur wissen, dass es in Javascript keine assoziativen Arrays gibt. Die Elemente in dem Array sollten also in der gleichen Reihenfolge sein, wie Deine Auswahlliste, dann kannst Du ganz einfach mit dem Options-Index des ausgewählten Eintrags darauf zugreifen.

LG
 
Hi!

Ich habe das nun so versucht:

HTML:
<script language="JavaScript" type="text/JavaScript">

var javascriptmember=new Array("<?=implode(",", $groupmember); ?>")

</script>

javascriptmember ist dabei das "neue array" in Javascript und $groupmember ist das php-array.

Laut einer Anleitung im Web soll dieser Befehl ganz am Anfang der Datei im Header stehen. Ich glaube aber nicht, dass das geht, weil dort die Veriable $groupmember noch gar nicht definiert und gefüllt ist..

Oder verstehe ich das falsch?

Wie kann ich denn später auf die Javascript-Variable zugreifen?
einfach per javascriptmember[1] oder gibt es dort eine bestimmte Syntax?

Liebe Grüße,
Antispy
 
Hi,

Ich glaube aber nicht, dass das geht, weil dort die Veriable $groupmember noch gar nicht definiert und gefüllt ist..

Oder verstehe ich das falsch?

nein, das verstehst Du richtig. Du musst in Deinem PHP-Script natürlich dafür sorgen, dass die Daten in dem Moment schon zur Verfügung stehen.

Wie kann ich denn später auf die Javascript-Variable zugreifen?
einfach per javascriptmember[1]?

Genau so. Wenn das Array die Benutzerzahlen in der Reihenfolge enthält, wie die Gruppen in der Auswahlliste stehen, kannst Du mit dem index i in der for-Schleife darauf zugreifen.

LG
 
Ich habe das nun alles mal so eingegeben..

Mein Quellcode an dieser Stelle sieht nun folgendermaßen aus:

PHP:
<?php
// Read out all Groups with their active Users
	$result = mysql_query ("select * from newsletter_user ORDER BY `membership`");
	$counter_1 = 0;
	while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
		$membershipvar = $row['membership'];
		$groupmember = mysql_fetch_array(mysql_query ("select count(ID) from `newsletter_user` WHERE `membership`='".$membershipvar."'"));
	$groupmem[$counter_1]=$groupmember;
	$counter_1++;
}	

?>	
<script language="JavaScript" type="text/JavaScript">

var javascriptmember=new Array("<?=implode(",", $groupmem); ?>")

</script>


<?php

Das ist jetzt nur ein teilausschnitt...

Wenn ich nun die Javascriptfunktion auf meiner Seite aufrufe, dann bekomme ich eine Ausgabe, aber die sieht so aus:

Code:
, $groupmem); ?>

Kann es sein, dass dort irgendwo ein Fehler in der Übernahme des Arrays ist?

Liebe Grüße


// edit

Ich habe den implode-Befehl nun mal alleine ausgeführt und bekam dort folgende Fehlermeldung:

Code:
Undefined variable: uebergabewert in /srv/www/htdocs/typo3/newsletter/content/send.php on line 48 Array","Array","Array","Array

Dies ist der Quellcode, der diesen Fehler verursacht:

PHP:
<?php
	$result = mysql_query ("select * from newsletter_user ORDER BY `membership`");
	$counter_1 = 0;
	while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
		$membershipvar = $row['membership'];
		$groupmember = mysql_fetch_array(mysql_query ("select count(ID) from `newsletter_user` WHERE `membership`='".$membershipvar."'"));
	$groupmem[$counter_1]=$groupmember;
	$counter_1++;
}	
$uebergabewert .= implode("\",\"", $groupmem);

echo $uebergabewert;
?>
 
Hi,

wahrscheinlich ist short_open_tag bei Dir nicht aktiviert. Schau mal in den Browserquelltext, die Anweisung wird genauso da drinstehen.
Benutze also die normalen Tags und gib das per echo aus. Und nimm die Anführungszeichen aus der JS-Anweisung raus, sonst hast Du etwas in der Art:

Code:
var javascriptmember=new Array("3,56,34");

Was heißen würde, das Array hat genau ein Element mit dem Inhalt 3,56,34

LG
 

Neue Beiträge

Zurück