Seite 1 von 1
<select> Auswahl in PHP
Verfasst: 19.02.2007, 22:37
von mark007q
Hi zusammen,
ich habe ein kleines Problem und zwar:
Mit diesem Code wird bei mir in PHP eine Liste von Usern ausgegeben, bei Klick auf den User wird dann die entsprechende onclick Funktion ausgeführt:
Code: Alles auswählen
global $geodatas;
if (is_array($geodatas)){
foreach($geodatas as $geodata){
if ($geodata['x'] != NULL AND $geodata['y'] != NULL){
echo '<a href="javascript:void(0)" onclick="locateuser(\''.$geodata['x'].'\',\''.$geodata['y'].'\')">'.$geodata['name'].'</a> <wbr>';
}
}
}
Nun würde ich einfach anstelle der ausgegeben User-Liste, das ganze als drop down menü ausgeben lassen (spart einfach Platz und ist übersichtlicher).
Könnte mir jemand den Code dahingehend kurz verändern? Sollten ja nur 2 Minuten für einen Profi sein
Vielen Dank schon mal im Voraus !!!!!!!!!!
Viele Grüße
Mark
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 20.02.2007, 00:14
von shapeshifter
5€

Verfasst: 20.02.2007, 06:41
von Nullpointer
nen php-frickler hat nen stundensatz von 150€ ?

Verfasst: 20.02.2007, 07:22
von auftragslinker
Code: Alles auswählen
global $geodatas;
echo <<<EOF
<script type="text/javascript">
function locateuser() {
for (i = 0; i < document.FORMNAME.User.length; ++i)
if (document.FORMNAME.User.options[i].selected == true)
alert(document.FORMNAME.User.options[i].value);
}
</script>
EOF;
if (is_array($geodatas)){
echo '<select name="User" onchange="locateuser()">';
foreach($geodatas as $geodata){
if ($geodata['x'] != NULL AND $geodata['y'] != NULL){
echo "<option value=\"('$geodata[x]','$geodata[y]')\">$geodata[name]</a> <wbr>";
}
}
echo '</select>';
}
den Rest kriegst du vielleicht selber hin.
Teilquelle: selfhtml
Verfasst: 20.02.2007, 15:10
von mark007q
Erst einmal vielen Dank
Aber irgendwie klappt es noch nicht so richtig.
Das war ja der Ausgangscode:
Code: Alles auswählen
global $geodatas;
if (is_array($geodatas)){
foreach($geodatas as $geodata){
if ($geodata['x'] != NULL AND $geodata['y'] != NULL){
echo '<a href="javascript:void(0)" onclick="locateuser(\''.$geodata['x'].'\',\''.$geodata['y'].'\')">'.$geodata['name'].'</a> <wbr>';
}
}
}
Da die function locateuser ja bereits existiert ist mir nicht klar, warum sie nochmals erzeugt werden soll?
Nehme ich den Code so wie er ist, dann erfolgt bei Auswahl eines User überhaupt keine Reaktion - d.h. es passiert nichts.
Ich habe mal folgendes probiert:
Code: Alles auswählen
global $geodatas;
if (is_array($geodatas)){
echo '<select name="User" href="javascript:void(0)" onchange="javascript:void(0);locateuser(\''.$geodata['x'].'\',\''.$geodata['y'].'\')">';
foreach($geodatas as $geodata){
if ($geodata['x'] != NULL AND $geodata['y'] != NULL){
echo "<option value=\"('$geodata[x]','$geodata[y]')\">$geodata[name]</a> <wbr>";
}
}
echo '</select>';
}
Hier passiert bei Auswahl eines Users zunächst etwas - ein Sprung hin auf die Karte, gezoomt wird ebenfalls, allerdings wird irgendein Punkt im Wasser und zwar bei jedem User angezeigt, der wohl auch immer angezeigt wird, wenn die Adresseingabe bei Usern nicht verwertet werden kann.
Hast du noch eine Idee? Es muss ja nur eine Winzigkeit sein, die falsch ist ... die Frage ist nur was?
Verfasst: 20.02.2007, 15:48
von godzilla
mark007q hat geschrieben:Erst einmal vielen Dank
Code: Alles auswählen
global $geodatas;
if (is_array($geodatas)){
echo '<select name="User" href="javascript:void(0)" onchange="javascript:void(0);locateuser(\''.$geodata['x'].'\',\''.$geodata['y'].'\')">';
foreach($geodatas as $geodata){
if ($geodata['x'] != NULL AND $geodata['y'] != NULL){
echo "<option value="('$geodata[x]','$geodata[y]')">$geodata[name]</a> <wbr>";
}
}
echo '</select>';
}
Hast du noch eine Idee? Es muss ja nur eine Winzigkeit sein, die falsch ist ... die Frage ist nur was?
Naja, sobald das select feld geändert wird springt das skript in die Funktion locateuser(\''.$geodata['x'].'\',\''.$geodata['y'].'\').
Dummerweise ist aber x und y leer, somit auch keine verwertbare daten.
der inhalt des Optionfelds wird ja nicht ausgewertet.
Verfasst: 20.02.2007, 15:54
von mark007q
Hmmm ... mir ist nicht ganz klar, warum das so ist. Bei dem Ausgangsskript passiert doch eigentlich genau das gleiche und da sind x und y nicht leer.
Ich frage mich, warum x und y beim letzten Code dann leer sind?
Verfasst: 23.02.2007, 02:01
von cren
mark007q hat geschrieben:Hmmm ... mir ist nicht ganz klar, warum das so ist. Bei dem Ausgangsskript passiert doch eigentlich genau das gleiche und da sind x und y nicht leer.
Ich frage mich, warum x und y beim letzten Code dann leer sind?
Vermutlich weil das Array $geodatas heißt und nicht $geodata (zumindest vor der foreach-Schleife).
Verfasst: 23.02.2007, 07:53
von auftragslinker
@cren: nein, geodata ohne s wird erst in der schleife befüllt. du musst meine lösung von oben nehmen. nur die übergabe hat sich geändert.
du musst
Code: Alles auswählen
alert(document.FORMNAME.User.options[i].value);
mit deiner verarbeitung innerhalb deiner funktion locateuser ersetzen.
enthält dabei die Koordinaten.
Poste doch mal deine locateuser-js-funktion