selected.Id in URL-action einfügen
volksnav
- html
0 Der Martin0 Cheatah0 volksnav
Hallo Helfer in Not,
ich wenigwisser hatte schon ein Grundproblem geposted, nun ist das Problem viel kleiner geworden: wie bekomme ich eine selected id XXXX in die folgende URL-action hinein?
<
form
action="
http://www.volksnav.de/iNYtest/?
lat=<?php echo $posLat; ?>
&lon=<?php echo $posLon; ?>
&qv=XXXX"
Wenn man probeweise eine Zifferblatt-Zahl einsetzt funktioniert alles perfekt. Gewünscht ist aber die Zahl die bei
select onchange="alert(this.form.whereNorth.selectedIndex.id)"
oder
onchange="alert(this.form.whereNorth.options[this.form.whereNorth.selectedIndex].id)"
herauskommt.
Habe folgende Alternativen - und Varianten davon mit '',[] - etc. ausprobiert:
Alternative 1:
XXXX = this.form.whereNorth.selectedIndex.id
Alternative 2:
XXXX=<?php echo this.form.whereNorth.selectedIndex.id; ?>
Alternative 3:
whereNorth value = obige URL mit der richtigen id
Damit habe ich die richtige URL aber weiss nicht wie ich sie in action einbaue.
Who can help?
-----------
Hintergrund:
In
http://www.volksnav.de/iNY/?lat=40.8&lon=-73.9&qv=9
zeigen die Füsse in Fahrtrichtung QuoVides 9, also 9 "Uhr". Probiert gerne andere Zahlen.
Diese Info bekommen smartphones vom eingebauten Kompass. Haben sie keinen Kompass, soll man sie manuell über die f-Uhr-Methode eingeben können.
Beispiel für whereNorth select:
<option id="9">f3=north is right hand</option>
Somit ist index nicht gleich id.
Moin,
wie bekomme ich eine selected id XXXX in die folgende URL-action hinein?
wozu dieser Klimmzug?
<
form
action="
http://www.volksnav.de/iNYtest/?
lat=<?php echo $posLat; ?>
&lon=<?php echo $posLon; ?>
&qv=XXXX"
Dir ist hoffentlich klar, dass die action-URL im wirklichen Leben so über mehrere Zeilen geschrieben nicht "funktionieren" wird. Zur übersichtlichen Darstellung hier im Posting-Text ist das allerdings okay.
Wenn man probeweise eine Zifferblatt-Zahl einsetzt funktioniert alles perfekt. Gewünscht ist aber ...
... dass die Zahl in einem Formularelement steht und ganz normal mit dem Formular verschickt wird. Dazu brauchst du nicht an der action-URL herumzuschrauben, das macht der Browser beim Ansenden des Formulars von ganz allein.
So long,
Martin
Hi,
<option id="9">f3=north is right hand</option>
"9" ist ein ungültiger Wert für eine ID. IDs dürfen nicht mit Ziffern beginnen. Das macht aber nichts, denn Du möchtest einfach das value-Attribut verwenden. Wie um alles in der Welt kommst Du hier auf id?
Cheatah
Tja, Not macht Kreativ:
http://www.volksnav.de/iTokyo/?lat=35.71&lon=139.8&qv=8
den ich in der URL nicht brauchen kann.
"Wenn Norden rechts ist ( d. h. 3 "Stunden später = f3), blickst Du nach 9 Uhr (entspricht QuoVides 9)"
Das ging mit id ganz gut, bis auf die Einflechtung in URL
----
Habe heute probiert id durch value zu ersetzen, aber der alert sagt: undefiniert.
Ich kann o. g. Logik mit einer Funktion gibMirDenQuoVides() relisieren, aber dann weiss ich nicht wie ich QV=9 in die action="" einbaue.
Es muss ganz einfach gehen, aber wie?
Hi,
Das ging mit id ganz gut, bis auf die Einflechtung in URL
das id-Attribut ist inhaltlich *falsch*. Dein Code ist derzeit *defekt*. Repariere ihn zunächst, alles andere ist nutzlos. Da Du offenbar die Werte, die Du derzeit irrtümlich als ID verwendest, als Parameter übertragen möchtest, bietet es sich an, den Namen des Attributs durch "value" auszutauschen. Dann und *erst* dann wäre es interessant zu wissen, was "mit id ganz gut" ging, damit hierfür eine Lösung gefunden werden kann.
Habe heute probiert id durch value zu ersetzen, aber der alert sagt: undefiniert.
Wenn Du dann die ID auszulesen versuchst, ist das logisch - es gibt schließlich keine mehr.
Ich kann o. g. Logik mit einer Funktion gibMirDenQuoVides() relisieren, aber dann weiss ich nicht wie ich QV=9 in die action="" einbaue.
Es muss ganz einfach gehen, aber wie?
Keine Ahnung, Deine Problembeschreibungen sind zumindest nicht ganz einfach. Es ist sehr mühsam, bereits Teile davon zu verstehen.
Cheatah
Korrektur:
bei
alert(this.form.whereNorth.options[this.form.whereNorth.selectedIndex].value)
gibt dieser String die korrekt Zahl wieder, nicht mehr "undefiniert".
Die action-URL sieht diesen String aber nur als Text. Wie kann man daraus eine Zahl machen?
Hallo
Korrektur:
bei
alert(this.form.whereNorth.options[this.form.whereNorth.selectedIndex].value)
gibt dieser String die korrekt Zahl wieder, nicht mehr "undefiniert".
Die action-URL sieht diesen String aber nur als Text.
Es ist ja auch nur Text. Alles, was mit GET oder POST übergeben wird ist Text.
Wie kann man daraus eine Zahl machen?
Mit einer Typumwandlung mit der in der benutzten Programmiersprache dafür vorgesehenen Funktion.
Tschö, Auge
Mit einer Typumwandlung mit der in der benutzten Programmiersprache dafür vorgesehenen Funktion.
Tschö, Auge
Danke, Auge, das könnte zu der Lösung führen.
Nun habe ich probeweise die gewünschte Zahl im select sowohl als id wie als value vefügbar, z. B.:
<option id="9" value="9" > f3=right hand </option>
aber:
onchange="alert((selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value))"
oder
onchange="alert((selectF.whereNorth.options[selectF.whereNorth.selectedIndex].id))"
ergibt die richtige Anzeige, jedoch mit parseint() wie in
onchange="alert(parseint(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value))"
tut sich nichts und in "action" auch nichts.
Ist parseint() nicht das richtige?
Mahlzeit volksnav,
Ist parseint() nicht das richtige?
http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int@title=Nein. Und jetzt schreibst Du 100 mal:
"Ich weiß, dass Javascript-Code case-sensitive ist!"
MfG,
EKKi
100 Mal pardon, Ekki. Meine Kontaktlinsen müssen dringend gereinigt werden.
Tatsächlich hier kommt das Richtige rausi
onchange="alert(parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value))"
aber bei
action="?lat=<?php echo $posLat; ?>&lon=<?php echo $posLon; ?>&qv=parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value)"
wird die Zahl trotzdem nicht erkannt. Was muss ich jetzt 100 Mal schreiben?
Mahlzeit volksnav,
onchange="alert(parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value))"
Das ist offenbar unvollständiger HTML-Code, nämlich die Notation eines Attributs namens "onchange", dem als Wert Javascript-Code zugewiesen wird.
action="?lat=<?php echo $posLat; ?>&lon=<?php echo $posLon; ?>&qv=parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value)"
Das wiederum ist offenbar unvollständiger PHP-Code, nämlich die Notation eines HTML-Attributs namens "action", dessen Inhalt teilweise aus konstanten Strings und teilweise aus dynamischen Variableninhalten besteht ... interessant ist hierbei der GET-Parameter namens "qv": dessen Wert soll nämlich offenbar "parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].value)" sein - und das erscheint mir wenig sinnvoll.
wird die Zahl trotzdem nicht erkannt.
Kein Wunder. Offenbar weißt Du selbst nicht mehr so ganz, wo Server- und wo Client-seitiger Code beginnt bzw. aufhört ... wie soll das Dein PHP-Interpreter bzw. Dein Browser und dessen Javascript-Engine wissen?
Was muss ich jetzt 100 Mal schreiben?
Zitat 1353 ...
MfG,
EKKi
Hallo Ekki,
es stimmt dass ich ich die Übersicht verloren habe. Mein Programmierer hat sich in Thailand verliebt und meldet sich nicht mehr.
Es geht um eine Simulation für einen App der in Echtzeit die eigene Position auf Google map anzeigt, ergänzt mit Leitzahlen und Einblendungen von meinem Server als Bild und Kreise/Striche. Somit weiss ich nicht mehr ob es ein PHP/HTML/JS-Problem geht.
Tatsache ist: es funktioniert alles wenn der smartphone die Blickrichtung als Zahl im URL-String wiedergibt. Nur wenige smartphones haben diese facility, somit wird Norden als Fahrtrichtung angenommen, die Füsse zeigen nach "oben".
Das sollte der Nutzer manuell korrigieren können (dann weiss er schneller was vorne ist), dabei sollte eigentlich nur ein Bildchen gelöscht und ein Neues eingeblendet werden. Die JS-Lösung hierzu funktioniert irgendwie nicht:
var qvMarker = new google.maps.Marker({ position: qvBottom, map: map,icon: qv }); qvMarker.setPosition(qvBottom);
Deswegen versuche ich das Ganze neu zu laden.
Vorschläge?
Mahlzeit volksnav,
Vorschläge?
Das zweite Code-Fragment, das Du in Deinem vorherigen Posting gezeigt hast, *kann* AFAIK so nicht funktionieren ... vielleicht solltest Du mal etwas mehr Code um diese Stelle herum zeigen - und zwar den Code, der im Browser ankommt: PHP-Code interessiert an der Stelle *überhaupt gar nicht*.
MfG,
EKKi
Danke für das Interesse, habe den relevanten code auf
www.volksnav.com/HTMLforum
untergebracht. Man wird sicherlich einige gruselige Konstruktionen finden...
Mahlzeit volksnav,
Danke für das Interesse, habe den relevanten code auf
www.volksnav.com/HTMLforum
untergebracht.
Nein, hast Du nicht.
Man wird sicherlich einige gruselige Konstruktionen finden...
Ja ... z.B. eine "Frame-Weiterleitung" auf http://www.volksnav.de/HTMLforum/ - *dort* befindet sich der relevante Code.
Und dieser HTML-Code ist offenbar ein schlechter Witz ... hast Du Dir mal selbst angeschaut, was dort steht? Offenbar mit htmlspecialchars() behandelter PHP-Code, der einfach so an den Browser ausgespuckt wird - was genau erhoffst Du Dir davon?
Ich jedenfalls habe weder Lust noch Zeit, mich dort durchzuquälen - stelle (halbwegs) funktionierenden und validen HTML- und Javascript-Code zur Verfügung, damit man Dein Client-seitiges Problem nachvollziehen kann!
MfG,
EKKi
Wenn ich wüsste was falsch ist, hätte ich es schon selbst korrigiert.
Sorry for the disturb...
Mahlzeit volksnav,
Wenn ich wüsste was falsch ist, hätte ich es schon selbst korrigiert.
Dann zeige alternativ den *vollständigen* PHP-Code - und nicht nur hier und da einen kleinen Ausschnitt, von dem Deine Leser nicht wissen, wo genau der herkommt.
Prinzipiell solltest Du Dir aber wohl eher Unterstützung in Form eines neuen Programmierers suchen, denn ganz offenbar fehlen Dir in ganz erheblichem Maße Grundkenntnisse im Bereich PHP.
MfG,
EKKi
Mahlzeit, Ekki
auf http://volksnav.de/HTMLforum2/index.txt befindet sich der vollständige code von
http://www.volksnav.de/iTokyo/?lat=35.71&lon=139.8&qv=8
Der JS-Code wird vorwiegend von Google maps diktiert.
Es funktioniert alles einwandfrei bis auf die select-Function. Klickt man beispielsweise auf Disneyland Tokyo, erscheint die intelligente PLZ davon, siehe auch
www.volksnav.com/Tokyo
www.tinyURL.com/TokyoMapplet
Es geht eigentlich um eine simple Antwort auf die simple Frage "wo?"
Heute beantwortet man sie mit Namen, PLZ, Geokoordinaten oder so: www.volksnav.com/YouAreHere
Als Kind wollte ich mir eine Verbesserung der Hausnummerierung in Japan einfallen lassen, nun biete ich das System dort als Orientierungsesperanto für den Ernstfall an.
Die select-Frage scheint dabei nicht dringend zu sein, aber sie kann verhindern dass jemand in die falsche Richtung läuft. Für Geocaching hat man im Moment wenig Verständnis.
Henrique
Mahlzeit volksnav,
auf http://volksnav.de/HTMLforum2/index.txt befindet sich der vollständige code von
http://www.volksnav.de/iTokyo/?lat=35.71&lon=139.8&qv=8
Ich habe mir das jetzt mal zu Gemüte geführt ... der Code strotzt IMHO nur so vor Fehlern. Du solltest Dir bewusst machen, dass es mit "hier und da 'nen kleinen Fehler ausbessern und dann geht's" nicht getan ist.
Einige Beispiele:
[12] $posLat = $_GET[lat]; $posLon = $_GET[lon];
[13] $qv = $_GET[qv];
Ich sehe nirgendwo, dass die Konstanten namens "lat", "lon" und "qv" deklariert werden. Das ist ein prinzipieller Fehler, der sich durch den gesamten Code zieht.
[145]
[146] <hmtl>
Es fehlt die Angabe eines Dokumenttyps.
[152] <style type="text/css">
[153] <!--
Die Auskommentierung von CSS-Angaben mittels HTML-Kommentare ist fehlerhaft.
[566] <td width="75%" bgcolor="#99FF00" class = "fontClass" align="center">
Layout-Angaben sollten *generell* und *ausschließlich* per CSS gemacht werden, es sollten keine mißliebigen HTML-Attribute dafür genutzt werden.
[570] <select name="whereNorth" class="Selectclass"
[571]
[572] onchange="http://www.google.com"
[573]
[574] >
Wenn Du schon Javascript-Eventhandler im HTML-Code angibst, sollte im jeweiligen Attributwert auch nur gültiger Javascript-Code stehen ... was versprichst Du Dir von einer Angabe wie "http://www.google.com"?
[575] <option id="12">f12=in front</option>
Wie Dir bereits gesagt wurde, sind rein numerische IDs nicht gültig. Akzeptiere das und ändere Deinen Code entsprechend. Für die Übergabe eines numerischen Werts ist bei <option>-Elementen das "value"-Attribut zuständig.
[588] <input type="hidden" value="http://www.google.com">
Ein verstecktes Eingabeelement ohne einen Namen ist in den wenigsten Fällen sinnvoll - was genau soll dieses hier bewirken?
Falls Du Dich jetzt fragst, warum ich Dir das alles sage: das ist das, was mir so aufgefallen ist, da ich vergeblich nach den Stellen bzw. Code-Fragmenten gesucht habe, die Du in diesem Thread bisher gezeigt hast.
Ich habe auch wenig Lust und nahezu keine Zeit, mich in diesen wirklich grausamen Spaghetti-Code hineinzudenken. Es ist an Dir, eine hilfreiche Problembeschreibung zu liefern - bisher hast Du lediglich offenbar vergebliche Code-Versuche gezeigt, die Du anschließend immer gleich wieder weggeschmissen hast. Leider hast Du es aber auch noch nicht geschafft, Dein Problem verständlich zu beschreiben, *ohne* Dich vorher in falschen Code zu verrennen, diesen hier zu zeigen und ihn anschließend wieder zu löschen.
Es weiß keiner Deiner Leser, was Du *denkst*. Also *beschreibe* Deine Gedanken bitte *nachvollziehbar*!
Es funktioniert alles einwandfrei bis auf die select-Function.
Das wage ich zu bezweifeln - aber sei's drum. Was verstehst Du unter "die select-Function funktioniert nicht"? *Wie* *soll* sie denn "funktionieren"? Was genau meinst Du eigentlich mit "select-Function"? Das <select>-Element? Das wird solange nicht funktionieren, wie der Code fehlerhaft bzw. unvollständig ist.
Klickt man beispielsweise auf Disneyland Tokyo, erscheint die intelligente PLZ davon,
Ich sehe dort im Code nirgendwo ein "Disneyland Tokyo", auf das man klicken könnte.
Es geht eigentlich um eine simple Antwort auf die simple Frage "wo?"
Heute beantwortet man sie mit Namen, PLZ, Geokoordinaten oder so: www.volksnav.com/YouAreHere
Moment - es geht jetzt gerade um *technische* Probleme, Fragestellungen usw. ... es ist sowas von schnuppe, was Du fachlich willst. Oder habe ich gerade irgendetwas falsch verstanden?
Die select-Frage scheint dabei nicht dringend zu sein, aber sie kann verhindern dass jemand in die falsche Richtung läuft.
Das verstehe ich nicht.
Für Geocaching hat man im Moment wenig Verständnis.
Ja. Zum Beispiel ich im Moment. Ich wollte Dir nur helfen, eventuell vorhandene Fehler im Code zu beheben. Da Du aber bis jetzt nicht in der Lage bist, mal eine vernünftige Problembeschreibung, aussagekräftigen Quellcode und genaue Anforderungen bzw. Spezifikationen zu nennen, zwingst Du Deine Leser bisher nur dazu, blind im Nebel zu fischen. Das ist auf Dauer nicht sehr produktiv und beginnt, mühselig zu werden.
Es sollte in Deinem eigenen Interesse liegen, endlich mal mit brauchbaren Informationen herauszurücken ...
MfG,
EKKi
Uff, Du gibst Dir wirklich viel Mühe, besten Dank dafür.
Ich habe eben zu Beginn nicht alle Bäume gezeigt weil man dann den Wald nicht mehr sieht. Der select-Wald ist ganz unten im body zu finden, allerdings wollte ich dort erst Mal ohne einen submit-Knopf auskommen. Nachfolgend wird der momentane Versuchs-code mit einem submit-Knopf gezeigt.
Tatsache ist: der code in der Nähe der Zeile 225
var quoVides = "<?php echo $qv; ?>";
if(quoVides == 0 || quoVides > 12 || quoVides < 0 ){ quoVides = 12;}
var efe = 12 - quoVides; if(quoVides == 0){ efe = 12;}
selectF.whereNorth.selectedIndex = efe ;
bewirkt - zu meiner Verblüffung - die Änderung des select-Elements, und zwar in Abhängigkeit der Geh-Richtung des smartphone users. Bitte probiere es selbst aus: ändere die letzte Ziffer in der URL
http://www.volksnav.de/iNYtest/?lat=40.8&lon=-73.9&qv=9
Sowohl die Füsse wie die select-Einstellung ändern sich entsprechend. Mit qv=9 zeigen die Füsse nach 9 Uhr.
Es bleibt nur noch die Aufgabe der manuellen selection zu lösen. Ganz einfach ausgedrückt: egal wie, es soll eine URL-action ausgelöst werden die dem selected value (oder id) entspricht.
Es geht also nur um die Übernahme der letzten Ziffer. Das wird wohl noch zu schaffen sein, oder?
---------------------
<form name= "selectF" enctype="text/plain"
method="post"
action="?lat=<?php echo $posLat; ?>&lon=<?php echo $posLon; ?>&qv=parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].id)">
<select
name="whereNorth"
class="Selectclass"
onchange="alert(parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].id))">
<option id="12" value="12" >f12=in front</option>
<option id="11" value="11" >f1</option>
<option id="10" value="10" >f2</option>
<option id="9" value="9" >f3=right hand</option>
<option id="8" value="8" >f4</option>
<option id="7" value="7" >f5</option>
<option id="6" value="6" >f6=behind</option>
<option id="5" value="5" >f7</option>
<option id="4" value="4" >f8</option>
<option id="3" value="3" >f9=left hand</option>
<option id="2" value="2" >f10</option>
<option id="1" value="1" >f11</option>
</select>
<input type="submit" >
Mahlzeit volksnav,
<form name= "selectF" enctype="text/plain"
method="post"
action="?lat=<?php echo $posLat; ?>&lon=<?php echo $posLon; ?>&qv=parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].id)">
Allein zu dieser Zeile hätte ich diverse Fragen bzw. Hinweise:
Das Formular an sich wird per POST verschickt - allerdings stehen im Formularziel diverse GET-Parameter ... was genau erwartet das Formularziel: POST oder GET? Dem bisher gezeigten Code entnehme ich, dass das wohl eher GET ist - warum wird dann das Formular per POST verschickt? Ändere das mal auf GET und lasse den gesamten Inhalt des Attributes "action" weg. Die GET-Parameter sollten dann natürlich so übergeben werden, wie es üblich ist - dafür solltest Du zwei versteckte Felder anlegen:
<input type="hidden" name="lat" value="<?php echo htmlspecialchars($posLat); ?>">
<input type="hidden" name="lon" value="<?php echo htmlspecialchars($posLon); ?>">
Dadurch werden diese beiden Werte dann schonmal per GET übertragen. Als nächstes willst Du den *WERT* des im <select>-Element ausgewählten <option>-Eintrags übergeben - Du solltest also den Namen des <select>-Elements in "qv" ändern (denn so soll ja der GET-Parameter heißen) und dann bitte *ENDLICH* mal die verdammten, syntaxtisch falschen und überflüssigen "id"-Attribute der <option>-Elemente entfernen.
<select name="qv" class="Selectclass">
<option value="12">f12=in front</option>
<option value="11">f1</option>
<option value="10">f2</option>
<option value="9">f3=right hand</option>
<option value="8">f4</option>
<option value="7">f5</option>
<option value="6">f6=behind</option>
<option value="5">f7</option>
<option value="4">f8</option>
<option value="3">f9=left hand</option>
<option value="2">f10</option>
<option value="1">f11</option>
</select>
Dadurch sollten genau die Parameter, die das verarbeitende Skript benötigt mit den richtigen Namen und mittels der richtigen Methode übergeben werden - und Du musst Dich nicht noch weitere Wochen mit überflüssigem Javascript-hin-und-hergebastele herumplagen ... schließlich geht's mit HTML-Bordmitteln viel einfacher und schneller.
Im Übrigen *KANN* das, was Du dort an Code gezeigt hast, auch *NIEMALS* funktionieren: wie kommst Du auf die Idee, dass der String "parseInt(selectF.whereNorth.options[selectF.whereNorth.selectedIndex].id)", der dort als GET-Parameter namens "qv" übergeben wird, in irgendeiner Form als Javascript-Code interpretiert und ausgeführt wird?
MfG,
EKKi
G E N I A L , Ekki !!
jetzt läuft alles perfekt:
http://www.volksnav.de/iNY/?lat=40.8&lon=-73.9&qv=9
So einfach, man muss sich wirklich schämen. Das ist zumindest eine Oktoberfest-Mass wert.
Der submit-Knopf nimmt mir zuviel Platz weg, ursprunglich wollte ich mit select onchange auskommen, deswegen der Fukushima-Zustand. Wie jede Hausfrau weiss, post und get ist dasselbe wie schieben und ziehen :-) . Bei post konnte ich halt lesen was gesendet wurde.
Übrigens: Disneyland Tokyo war nur ein Beispiel für Denjenigen der den smartphone in der Hand hat, dahin will und es auf der Karte findet.
Soll ich nun alleine mit onchange rumprobieren oder fällt Dir sofort die Lösung ein?
Mahlzeit volksnav,
Der submit-Knopf nimmt mir zuviel Platz weg, ursprunglich wollte ich mit select onchange auskommen, deswegen der Fukushima-Zustand.
Du solltest Dir aber angewöhnen, den zweiten Schritt nicht vor dem ersten zu tun. Erst einmal sollte das Formular prinzpiell funktionieren - das tut es jetzt hoffentlich.
Als Goodie kannst Du dann für eine bequemere Benutzbarkeit dafür sorgen, dass <http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=bei der Änderung des <select>-Elements> <http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=das Formular, in dem sich> <http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=das Element befindet,> <http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=abgeschickt wird.>
Soll ich nun alleine mit onchange rumprobieren oder fällt Dir sofort die Lösung ein?
Klar fällt mir eine Lösung ein (s.o.) - aber es geht bei *SELF*HTML darum, dass Du Dein Problem *selbst* so weit analysieren, herunterbrechen und in Teilprobleme zerlegen lernst, dass Du es *selbst* lösen kannst ... deswegen habe ich Dir einfach mal ein paar Hinweise zu IMHO relevanten bzw. hilfreichen Abschnitten von SELFHTML gegeben - ich bin gespannt, was Du daraus bastelst.
Keine Angst: ich gebe anschließend natürlich gerne meinen Senf dazu ... ;-)
MfG,
EKKi
Halli, hallo,
ich liebe solche Denkaufgaben, kann aber noch nicht mit der Lösung glänzen:
das Ganze funktioniert auch ohne die den Zusatz "htmlspecialchars" in den hidden submits, also wird man diesen Zusatz womöglich bei action benötigen.
Wenn ich die 2 hidden submit weg lasse, erscheinen die Füsse im urbanen Pol, also funktioniert die Logik
If ($posLat == 0) {$posLat = $poleLat;};
Somit wollte ich mit folgender Logik bei select onchange nur den qv.value senden können:
$posLat = $_GET[lat];
if ($posLat == 0){$posLat = $posLatBefore;};
$posLatBefore = $posLat;
Dasselbe für die Longitude. Es hat aber nicht funktioniert, offensichtlich konnte ich damit die vorhergehenden Koordinaten nicht speichern. Ist dieser code nicht korrekt?
Es kann sein dass ich wegen einer Reise mich ein paar Tage nicht melden werde.
Henrique
Hallo,
ich liebe solche Denkaufgaben, kann aber noch nicht mit der Lösung glänzen:
- das Ganze funktioniert auch ohne die den Zusatz "htmlspecialchars" in den hidden submits, also wird man diesen Zusatz womöglich bei action benötigen.
meinst du bei der Ausgabe, oder beim Absenden des Formulars?
Beim Absenden brauchst du gar nichts derartiges zu tun. Die korrekte Maskierung/Codierung für den URL-Kontext macht der Browser schon selbst.
Bei der Ausgabe des Formulars solltest du auf htmlspecialchars() nur verzichten, wenn du aufgrund anderer Randbedingungen *absolut sicher* sein kannst, dass die Werte keines der Zeichen '<', '>', '&' oder '"' enthalten.
- Wenn ich die 2 hidden submit weg lasse, erscheinen die Füsse im urbanen Pol, also funktioniert die Logik
Welche Logik? - Die Werte der input-Elemente (auch hidden) werden beim Absenden als URL-Parameter mitgeschickt. So funktionieren HTML-Formulare. Lässt du sie weg, fehlen sie im verarbeitenden Script.
If ($posLat == 0) {$posLat = $poleLat;};
Was soll uns dieses aus dem Kontext gerissene Fragment sagen?
Somit wollte ich mit folgender Logik bei select onchange nur den qv.value senden können:
$posLat = $_GET[lat];
NEIN! Das ist immer noch falsch - und das Umkopieren außerdem unsinnig.
Außerdem ahne ich ... Meinst du mit dem Vergleich auf 0 in Wirklichkeit einen Test auf Vorhandensein? Dafür gibt's isset() in PHP.
Dasselbe für die Longitude. Es hat aber nicht funktioniert, offensichtlich konnte ich damit die vorhergehenden Koordinaten nicht speichern.
Doch, sicher. Aber natürlich nicht über die Script-Lebensdauer hinaus. Willst du sie über Script-Instanzen hinaus speichern, solltest du dich vielleicht mit Sessions befassen.
- Mit onchange bin beim selben Problem gelandet wie ursprünglich geposted: Aussenden bei select. Habe schon mit den neueren Erkenntnissen etwas ausprobiert, noch ohne Erfolg. Werde weiter versuchen.
Ah ja. Da dieser Abschnitt keinerlei Information enthält: Was erwartest du hier von uns?
So long,
Martin
Lieber Ekki, lieber Martin, orry, habe tatsächlich zuwenige Infos geliefert:
es geht um Navigationen mit smartphones und Google maps, d. h. die Position wird je nach Beweggeschwindigkeit ausgesendet, dabei kann sich die Fahrtrichung ändern oder auch nicht. Ich will dem server folgende Logik übermitteln:
"habe Position geändert aber nicht die Richtung. Bleibe beim zuletzt geladenen Piktogram"
und
"Ich stehe an der Kreuzung und habe mich nur gedreht. Ich will nun schnell erkennen können ob Disneyland vorne oder hinten ist. Lade ein neues Piktogramm auf den zuletzt gesendeten Koordinaten. ".
Deswegen wollte ich gelegentlich NUR qv aussenden können. Das habe ich auch PROBEWEISE gemacht indem ich die hidden submit einfach weggelassen habe. Die Füsse haben dann tatsächlich richtig gezeit (qv erkannt) aber standen am Tokyo tower.
D.h. die Logik "wenn latLon=0 then urban pole" hat funktioniert, sonst wären die Füsse unterhalb der Elfenbeinküste Lat=0 / Lon=0 gelandet.
Im nächsten Schritt soll das ganze blindengerecht werden, der smartphone wird reden und die Navigation ohne Karten auskommen müssen. Das geht sehr wohl mit polaren Mitteln und das habe ich schon auf pocketPC mit VB realisiert. Man navigiert so elegant wie in Rio de Janeiro um die Christus Statue herum: rein/raus clockwise/counterclock. Dabei ist nicht mehr Norden sondern der urbane Pol richtungsmassgebend.
Ich habe schon verstanden dass die Lösung schon geschrieben ist, werde heute oder morgen noch intensiver zwischen den Zeilen lesen.
Henrique
EUREKA!
die Lösung ist schnell gefunden worden:
select onchange="submit();"
Es reicht nicht wenn man unfähig ist zu programmieren, man muss auch unfahig sein sich in Foren auszudrücken :-). Dann klappt's.
Ich bedanke mich sehr beim Forum, speziell beim Ekki. Nun befasse ich mich mit PHP sessions - eine spannende Angelegenheit - dann kann ich die Welt vor der totalen Orientierungs-Dekadenz retten. Überall heisst es "du bist dumm und faul, kauf dir ein iphone". Ich sage "du bist lernfähig und lernwillig, mit dem Vorstellungsvermögen kannst sich selbst lotsen".
Falls es jemand interessiert:
Derzeitiges System:
volksnav.com/YouAreHere
volksnav.com/misery
volksnav.com/fundamental
Erfinderfreundliche Grüsse, Henrique
Mahlzeit volksnav,
die Lösung ist schnell gefunden worden:
Nicht ganz:
http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=onchange="http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this.http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=form.http://de.selfhtml.org/javascript/objekte/forms.htm#submit@title=submit()"
MfG,
EKKi
Mahlzeit volksnav,
- das Ganze funktioniert auch ohne die den Zusatz "htmlspecialchars" in den hidden submits,
Jein. Es funktioniert solange, wie in den Variablen $posLat und $posLon keine Sonderzeichen vorkommen, <http://de.selfhtml.org/html/allgemein/zeichen.htm#html_eigene@title=die in HTML eine besondere Bedeutung haben und deshalb maskiert werden sollten> - was htmlspecialchars() freundlicherweise für Dich übernimmt.
also wird man diesen Zusatz womöglich bei action benötigen.
Wie meinen? Wenn Du dem Attribut "action" einen Wert geben willst und dieser (entweder ganz oder in Teilen) aus PHP-Variablen bestehen soll, dann solltest Du diese Variablen mit htmlspecialchars() behandeln, das ist richtig.
- Wenn ich die 2 hidden submit weg lasse,
Wieso solltest Du das tun? Du willst doch die Inhalte der beiden Variablen $posLat und $posLon an das Formularziel übergeben - oder habe ich das irgendwas falsch verstanden?
erscheinen die Füsse im urbanen Pol, also funktioniert die Logik
If ($posLat == 0) {$posLat = $poleLat;};
Diese Schlussfolgerung ist für mich nicht nachvollziehbar.
Somit wollte ich mit folgender Logik bei select onchange nur den qv.value senden können:
$posLat = $_GET[lat];
if ($posLat == 0){$posLat = $posLatBefore;};
$posLatBefore = $posLat;
Auch da verknotet sich mein Hirn irgendwie ... kannst Du Dich nicht einfach mal verständlich ausdrücken? Von Deinen Lesern hier sitzt niemand auf Deinem Schoß oder in Deinem Schädel.
Im Übrigen hatte ich Dich bereits auf Deinen prinzipiellen Fehler bei der Behandlung von assoziativen Arrays hingewiesen ...
Dasselbe für die Longitude. Es hat aber nicht funktioniert, offensichtlich konnte ich damit die vorhergehenden Koordinaten nicht speichern. Ist dieser code nicht korrekt?
Woher soll ich das wissen? Woher sollte das *IRGENDJEMAND* wissen? Du beschreibst ja nicht mal annähernd, was diese (meistens syntaktisch mindestens abenteuerlichen, eher noch falschen) Code-Fragmente *bewirken* sollen ...
- Mit onchange bin beim selben Problem gelandet wie ursprünglich geposted: Aussenden bei select.
Aha. Ich hätte da mal eine revolutionäre und total abgefahrene Idee: klicke doch einfach mal der Reihe nach die Links an, die ich Dir in meinem letzten Beitrag genannt hatte und lies Dir die entsprechenden Kapitel von SELFHTML durch ... ;-)
Habe schon mit den neueren Erkenntnissen etwas ausprobiert, noch ohne Erfolg. Werde weiter versuchen.
Du musst nicht ausprobieren und versuchen - Du musst zu allererst einmal *verstehen*. Dann reicht es anschließend eigentlich, korrekten Code zu schreiben.
MfG,
EKKi