Funktioniert im Firefox, aber nicht im IE
ajtak
- javascript
Hallo,
ich habe einen Code, der wunderbar im Firefox funktioniert, aber nicht im Internet Explorer:
Erst eine JS-Prozedur:
<script type="text/javascript">
function SetValue (name,wert) {
if (document.getElementById(name)) {
if (document.getElementById(name).type == "checkbox") {
if ((wert) && (wert != 0)) document.getElementById(name).checked=true
else document.getElementById(name).checked=false;
} else if (wert) document.getElementById(name).value = wert;
} else if (document.getElementsByName(name)) {
if (wert)
for each (var radio in document.getElementsByName(name))
if (radio.value == wert) radio.checked = true;}
}
</script>
dann folgt das ganz viel Formular und entsprechender Code und dann der Teil, in dem die o.g. JS-Funktion aufgerufen wird.
<?php
if ($_POST["DS_ID"]) { //wenn DS_ID übergeben wurde
if (!$sql = mysql_connect("blabla","blabla","")) die("kein Connect möglich");
if (!$db = mysql_select_db("datenbankname", $sql)) die("Datenbank nicht gefunden");
$DS_ID=$_POST["DS_ID"];
$query = "SELECT * FROM tbl_0 where PatID=$DS_ID";
echo "<p>so sieht mein SQL-String aus: <strong>$query</strong></p>\n";
$werte=mysql_query($query);
if (!werte) { echo("<p><strong>Achtung ! DS_ID wurde übergeben ... Aber die SQL-Abfrage konnte nicht durchgeführt werden !</strong></p>");
} else {
if ($row = mysql_fetch_array($werte, MYSQL_ASSOC)) { echo "<script type="text/javascript">\n<!--\n";
foreach (array_keys ($row) as $varname) {
$JS_string= "SetValue("$varname","$row[$varname]");";
echo "$JS_string\n"; }
echo "-->\n</script>\n";
} else { echo("<p><strong>Achtung ! DS_ID wurde übergeben ... Aber es wurde kein passender Datensatz gefunden !</strong></p>");
}
}
if (!werte)
mysql_free_result($werte);
}
if ($_POST["DS_ID"]) { //wenn DS_ID übergeben wurde
?>
Vielleicht sieht jemand schon das Problem, ohne dass ich großartig erkläre, was das ganze tun soll (kurz: DS ins Formular laden und Werte anzeigen). Wahrscheinlich gibt es irgendwelche Schlüsselwörter o.ä., die man nicht für den IE verwenden sollte!?
Also falls jemand einen Tipp hat, wäre ich dankbar.
Mit freundlichen Grüßen
ajtak
ich habe einen Code, der wunderbar im Firefox funktioniert, aber nicht im Internet Explorer:
[haufenweise chaotischer Code]
Vielleicht sieht jemand schon das Problem, ohne dass ich großartig erkläre, was das ganze tun soll
Genau. Wozu noch weitere Erklärungen?
Du bist dir zu bequem, den Fehler zu beschreiben, die ungefähre Fehlerposition zu benennen, zu erklären, was der Code machen soll und den Code auf den problematischen Teil einzudampfen. Das sollen gefälligst andere machen, die sitzen schließlich den ganzen Tag vorm Rechner und warten nur darauf, dir auf die Sprünge zu helfen.
Ich befürchte, mit der Nummer wirst du nicht viele Freunde finden.
Bitte um Entschuldigung, aber ich habe nicht verlangt, dass sich jemand hinsetzt und das Teil Stück für Stück durchgeht. Ich habe geschrieben, dass das vielleicht ausreicht und wenn nicht, würde ich natürlich weitere Infos geben. Tut mir leid, dass ich euch nicht zutexten wollte.
Es war ein Versuch Hilfe zu bekommen, aber ich hab schon desöfteren bemerkt, dass man schnell aggressive Antworten bekommt. Man kann Dinge nämlich auch in einem netten Ton verpacken-nur so nebenbei!
Ich dachte, dass es bestimmte Schlagworte gibt, die ein Profi sofort erkennt und mir sagt, dass funktioniert im IE nicht. und falls nicht, wie bereits erwähnt, dass einfach so sagen.
Der Code ist im übrigen nicht von mir-aber das tut nichts zur Sache.
Nichtsdestotrotz nochmal Entschuldigung! Und ich werde weiter recherchieren, ob ich irgendwo Hinweise für mein Problem finde!
ajtak
Hi,
Es war ein Versuch Hilfe zu bekommen, aber ich hab schon desöfteren bemerkt, dass man schnell aggressive Antworten bekommt. Man kann Dinge nämlich auch in einem netten Ton verpacken-nur so nebenbei!
ich stimme dir völlig zu, was den Ton betrifft - aber bitte zieh dir auch den Schuh an, der dir zugedacht war:
* Du wirfst uns eine Menge Code ohne Erläuterung hin.
* Du verrätst nicht, was der Code eigentlich tun soll, und was er tatsächlich tut oder nicht tut.
"Funktioniert im Firefox, aber nicht im Internet Explorer" sagt leider gar nichts.
* Du scheinst ein Javascript-Problem zu haben, postest aber in der zweiten Hälfte PHP-Code.
Das hilft natürlich nicht weiter, sondern macht's nur komplizierter.
* Du lässt keinen Ansatz erkennen, dass du selbst schon versucht hättest, den Fehler zu finden.
Ich dachte, dass es bestimmte Schlagworte gibt, die ein Profi sofort erkennt und mir sagt, dass funktioniert im IE nicht. und falls nicht, wie bereits erwähnt, dass einfach so sagen.
Der Code ist im übrigen nicht von mir-aber das tut nichts zur Sache.
Vielleicht doch. Denn dann wäre die Quelle, wo du diesen Code her hast, auch die erste Stelle, an der man Fragen dazu plazieren (bzw. nach Antworten suchen) sollte. Hier im Forum Hilfe zu suchen, ist natürlich auch okay, erfordert aber etwas Vor- und Mitarbeit von deiner Seite, denn wir kennen das Script noch weniger aus du.
So long,
Martin
Guten Morgen,
danke für eure Hinweise und ja-ihr habt Recht, ich hab mich wahrscheinlich mit erklärenden Erläuterungen etwas zu sehr zurück gehalten. Was auch zugegebenermaßen an meiner eigenen Unfähigkeit liegt, das alles zu begreifen. Ich bin kein Programmierer und der Typ, der das ganze erstellt hat, nur laienhaft. Von daher konnte der mir auch nicht helfen.
Also, nochmal der erste Teil:
<script type="text/javascript">
function SetValue (name,wert) {
if (document.getElementById(name)) {
if (document.getElementById(name).type == "checkbox") {
if ((wert) && (wert != 0)) document.getElementById(name).checked=true
else document.getElementById(name).checked=false;
} else if (wert) document.getElementById(name).value = wert;
} else if (document.getElementsByName(name)) {
if (wert)
for each (var radio in document.getElementsByName(name))
if (radio.value == wert) radio.checked = true;}
}
</script>
Diese Funktion wird später aufgerufen (im 2. Teil) und es sollen die Werte aus der mysql-Tabelle in die entsprechenden Formularfelder (vorwiegend Checkboxen und Radiobutton) übertragen werden.
Der 2. von mir gepostete Teil:
<?php
if ($_POST["DS_ID"]) { //wenn DS_ID übergeben wurde
if (!$sql = mysql_connect("blabla","blabla","")) die("kein Connect möglich");
if (!$db = mysql_select_db("datenbankname", $sql)) die("Datenbank nicht gefunden");
$DS_ID=$_POST["DS_ID"];
$query = "SELECT * FROM tbl_0 where PatID=$DS_ID";
echo "<p>so sieht mein SQL-String aus: <strong>$query</strong></p>\n";
$werte=mysql_query($query);
if (!werte) { echo("<p><strong>Achtung ! DS_ID wurde übergeben ... Aber die SQL-Abfrage konnte nicht durchgeführt werden !</strong></p>");
} else {
if ($row = mysql_fetch_array($werte, MYSQL_ASSOC)) { echo "<script type="text/javascript">\n<!--\n";
foreach (array_keys ($row) as $varname) {
$JS_string= "SetValue("$varname","$row[$varname]");";
echo "$JS_string\n"; }
echo "-->\n</script>\n";
} else { echo("<p><strong>Achtung ! DS_ID wurde übergeben ... Aber es wurde kein passender Datensatz gefunden !</strong></p>");
}
}
if (!werte)
mysql_free_result($werte);
}
if ($_POST["DS_ID"]) { //wenn DS_ID übergeben wurde
?>
Dieser Teil soll die Verbindung zur Datenbank herstellen. Die Zeile:
$JS_string= "SetValue("$varname","$row[$varname]");";
ruft meines Erachtens die JS-Funktion (1. Teil) auf.
Mittels des Scriptdebuggers vom IE habe ich herausgefunden, dass wohl diese Zeile das Problem darstellen muss, zumindest gehts da nicht weiter und es kommt die Fehlermeldung: JScript-Debugger: Unterbrechung bei JScript-Laufzeitfehler-Objekt erwartet.
Ich hoffe, das hilft irgendwie weiter!?
Wenn ja, freu ich mich sehr und wenn nein, trotzdem vielen Dank an die Leute, die mein Zeug gelesen habe!
MfG
ajtak
Hi,
Es war ein Versuch Hilfe zu bekommen, aber ich hab schon desöfteren bemerkt, dass man schnell aggressive Antworten bekommt. Man kann Dinge nämlich auch in einem netten Ton verpacken-nur so nebenbei!
ich stimme dir völlig zu, was den Ton betrifft - aber bitte zieh dir auch den Schuh an, der dir zugedacht war:
* Du wirfst uns eine Menge Code ohne Erläuterung hin.
* Du verrätst nicht, was der Code eigentlich tun soll, und was er tatsächlich tut oder nicht tut.
"Funktioniert im Firefox, aber nicht im Internet Explorer" sagt leider gar nichts.
* Du scheinst ein Javascript-Problem zu haben, postest aber in der zweiten Hälfte PHP-Code.
Das hilft natürlich nicht weiter, sondern macht's nur komplizierter.
* Du lässt keinen Ansatz erkennen, dass du selbst schon versucht hättest, den Fehler zu finden.Ich dachte, dass es bestimmte Schlagworte gibt, die ein Profi sofort erkennt und mir sagt, dass funktioniert im IE nicht. und falls nicht, wie bereits erwähnt, dass einfach so sagen.
Der Code ist im übrigen nicht von mir-aber das tut nichts zur Sache.Vielleicht doch. Denn dann wäre die Quelle, wo du diesen Code her hast, auch die erste Stelle, an der man Fragen dazu plazieren (bzw. nach Antworten suchen) sollte. Hier im Forum Hilfe zu suchen, ist natürlich auch okay, erfordert aber etwas Vor- und Mitarbeit von deiner Seite, denn wir kennen das Script noch weniger aus du.
So long,
Martin
Mahlzeit ajtak,
TOFU mögen nicht alle, ich behaupte sogar hier im Forum fast niemand - also verzichte bitte zukünftig darauf. Danke.
Also, nochmal der erste Teil:
Es bringt *absolut gar nichts*, Programmcode, den Du bereits einmal gepostet hast, einfach nur wiederholt zu posten. Die meisten Teilnehmer dieses Forums können lesen. Ein Großteil kann Links anklicken. Es besteht also keine Notwendigkeit, ihnen immer wieder den gleichen Code vorzuwerfen.
Diese Funktion wird später aufgerufen (im 2. Teil) und es sollen die Werte aus der mysql-Tabelle in die entsprechenden Formularfelder (vorwiegend Checkboxen und Radiobutton) übertragen werden.
Nein. Javascript hat von MySQL und darin enthaltenen Tabellen keine Ahnung. Und das ist auch gut so. Lerne den Unterschied zwischen Server-seitiger und Client-seitiger Verarbeitung kennen!
Zudem werden keine Werte übertragen, sondern es wird schlicht und ergreifend überprüft, ob das bzw. die Element(e) mit dem passenden Namen den passenden Wert hat/haben - und dann entsprechend "angekreuzt".
Der 2. von mir gepostete Teil:
... ist *wieder einmal* Server-seitiger Code, der bei einem Client-seitigen Problem *absolut irrelevant* ist. Lerne den Unterschied zwischen Server-seitigem und Client-seitigem Code erneut kennen!!!
So *kann* Dir keiner helfen. Wirklich nicht.
Dieser Teil soll die Verbindung zur Datenbank herstellen. Die Zeile:
$JS_string= "SetValue("$varname","$row[$varname]");";
ruft meines Erachtens die JS-Funktion (1. Teil) auf.
Nein. Diese Zeile weist einer PHP-Variablen einen String zu, der aus den Inhalten weiterer Variablen und statischem Inhalt besteht.
Eine Zeile darunter wird der Inhalt dieser Variablen an den Browser ausgegeben. Im Browser bewirkt das *vermutlich*, dass während des Ladens der Seite diese Funktion vom Javascript-Interpreter aufgerufen wird. *Was genau* passiert, ist allerdings unklar, da Du bisher nicht willens oder in der Lage warst, den HTML- und Javascript-Code zu zeigen, der beim Browser ankommt.
Lerne erneut den Unterscheid zwischen Server-seitig und Client-seitig kennen!!!!!11einsELF (Jetzt aber bitte wirklich ...)
Mittels des Scriptdebuggers vom IE
Nutze einen vernünftigen Browser und dessen Fehlerkonsole!
habe ich herausgefunden, dass wohl diese Zeile das Problem darstellen muss,
Nein. Diese Zeile *kann* überhaupt gar nicht das Problem darstellen. Einfach aus dem Grund, da es sich dabei um Server-seitigen Code handelt, der *NIEMALS* so beim Browser ankommt.
Was Du meinst, ist dass das Ergebnis dieser Zeile das Problem verursachen könnte.
Erwähnte ich eigentlich schon, dass es Unterschiede zwischen Server-seitigem und Client-seitigem Code gibt und dass es wichtig ist, diese zu kennen?
zumindest gehts da nicht weiter und es kommt die Fehlermeldung: JScript-Debugger: Unterbrechung bei JScript-Laufzeitfehler-Objekt erwartet.
Ich hoffe, das hilft irgendwie weiter!?
Nö. Wie bei Fehlermeldungen des IE üblich.
MfG,
EKKi
Okay, ich hab eben (leider) keine Ahnung und deshalb kann ich auch nicht mehr dazu sagen. Ihr habt sicherlich Recht mit eurer Kritik, aber ich bin eben ein absoluter Neuling, dem Sachen übergestülpt wurden. Aber das ist mein und nicht euer Problem.
Eigentlich kann ich nur zu einer Sache was sagen, dass ich einen vernünftigen Browser und dessen Fehlerkonsole nutzen soll:
Das Programm muss auf Firefox und IE laufen. Auf Firefox läuft es ohne Probleme und ohne Fehlermeldung. Deshalb kann ich nur die Fehlermeldung des IE nutzen/posten.
Aber ich möchte eure Zeit nicht länger in Anspruch nehmen, bedanke mich und versuche es irgendwie anders.
MfG
ajtak
Mahlzeit ajtak,
Okay, ich hab eben (leider) keine Ahnung und deshalb kann ich auch nicht mehr dazu sagen.
Doch - Du könntest zumindest den relevanten Teil des im Browser ankommenden HTML-Codes zeigen ... das dürfte doch nicht zu viel verlangt sein, oder?
Und das Problem der mangelnden Ahnung könntest Du beheben, indem Du Dir das notwendige Grundlagenwissen aneignest. Das geht nicht von jetzt auf gleich, aber mittel- und langfristig wäre das IMHO eine gute Idee.
Ihr habt sicherlich Recht mit eurer Kritik, aber ich bin eben ein absoluter Neuling, dem Sachen übergestülpt wurden. Aber das ist mein und nicht euer Problem.
Es passiert oft, dass Menschen, die zu wenig Ahnung von etwas haben, Aufgaben zugeteilt werden, denen sie im Moment nicht gewachsen sind. An sich ist das ja kein Problem - wenn sie dann richtig mit ihrer Situation umgehen (können). In meinen Augen ist das Beste, was man in so einem Fall tun kann: sich Ahnung besorgen. Sinnvoll ist das z.B. mit Hilfe von entsprechenden Dokumentationen bzw. Tutorials.
Dieses Forum versteht sich als Hilfe zur Selbsthilfe für Leute mit entsprechenden Grundkenntnissen. Wenn Du also Fragen stellst und Probleme schilderst und als Antwort dann liest, dass man Dir aufgrund noch fehlender Informationen im Moment nicht helfen *kann*, dann bedeutet das nicht, dass Dir niemand helfen *will*.
Und insbesondere, wenn Dir gesagt wird, welches Wissen Dir noch fehlt und welche Informationen Du nachliefern mögest, solltest Du das als Aufforderung verstehen, Dir die fehlenden Kenntnisse anzueignen und Deinen Thread um die notwendigen Details zu ergänzen - nicht jedoch als "Geh weg, wir wollen Dich hier nicht!".
Also bitte: wie sieht der Quellcode aus, der beim Browser ankommt? *Nur dieser* ist bei einem Problem, dass *ausschließlich* auf Browser-Seite (das ist unter anderem ganz klar daran zu erkennen, dass es in einigen Browsern funktioniert und in anderen nicht) besteht, relevant. PHP-Code spielt bis zu diesem Zeitpunkt absolut keine Rolle.
Das Programm muss auf Firefox und IE laufen. Auf Firefox läuft es ohne Probleme und ohne Fehlermeldung. Deshalb kann ich nur die Fehlermeldung des IE nutzen/posten.
OK, akzeptiert. Genau dieses Detail sollte aber auch Dir klarmachen, dass die Ursache irgendwo im Client-seitigen Code liegen muss und das, was auf dem Server passiert, damit nichts zu tun haben kann.
Aber ich möchte eure Zeit nicht länger in Anspruch nehmen, bedanke mich und versuche es irgendwie anders.
"Irgendwie anders" ist selten erfolgversprechend - insbesondere dann nicht, wenn es am grundsätzlichen Verständnis mangelt. Hilf Dir (mittel- und langfristig) selbst und lerne ... :-)
MfG,
EKKi
Mahlzeit,
ich poste jetzt mal den gesamten Original-Quelltext, den mir der Kollege, der das ganze verfasst hat, geschickt hat. Ich hab es natürlich angepasst, aber das Original funktioniert schon nicht.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP-Demo</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
function SetValue (name,wert) {
if (document.getElementById(name)) { //wenn es das Element mit der ID gibt (dann gibt es nur 1 und es ist kein Radio-Button oder so)
if (document.getElementById(name).type == "checkbox") { // bei einer Checkbox nicht den eigentlichen Wert sondern checked setzen
if ((wert) && (wert != 0)) document.getElementById(name).checked=true //wenn wert<>0 ist --> checked auf TRUE setzen
else document.getElementById(name).checked=false;
} else if (wert) document.getElementById(name).value = wert; // sonst einfach nur den Wert setzen
} else if (document.getElementsByName(name)) { //wenn es das Element nicht als ID aber als Name gibt (z.B. bei Radio-Buttons)
//dann für alle gefundenen Elemente eine Schleife durchlaufen und den Wert setzen ...
if (wert) //aber nur, wenn es wert überhaupt gibt
for each (var radio in document.getElementsByName(name))
if (radio.value == wert) radio.checked = true;
}
}
-->
</script>
</head>
<body>
<h1>Demo-Projekt zum Handling mit Daten in PHP - Vers.6</h1>
<p class="text_braun">Hinweise zum Projekt wieder in der<a href="readme.html"> readme.html </a>sowie im PHP-Quelltext !</p>
<form id="main_form" name="main_form" method="post" action="save.php">
<p>hier ist der Beginn meines Formulares ...</p>
<p>
<input type="submit" id="btn_save" value="Speichern" />
<input type="reset" id="btn_reset" value="alle Formularwerte löschen" />
<input type="button" id="btn_load" value="Laden eines Datensatzes" onclick="window.top.location.href='load.php';"/></p>
<p>hier kommen verschiedene Werte/Eingabe-Felder:</p>
Datensatz-ID: <input type="text" name="id" id="id" value="0"/> (Achtung bitte nicht verändern !) <br>
User-ID: <input type="text" name="user_id" id="user_id" value="0"/> (Achtung bitte nicht verändern !) <br>
<p>
<label for="Pat_ID">Patienten-ID </label><input type="text" name="pat_id" id="pat_id" />
</p>
<p>
<label for="text1">hier kommt Text1 rein</label><input type="text" name="text1" id="text1" />
</p>
<p>
<label for="text2">hier kommt Text2 rein</label><input type="text" name="text2" id="text2" />
</p>
<p>und nun Optionsfelder:</p>
<p>
Geschlecht: <input type="radio" name="sex" id="sex_male" value="1" /><label> männlich</label> |
<input type="radio" name="sex" id="sex_female" value="2" /><label> weiblich</label> |
<input name="sex" type="radio" id="sex_missing" value="-1" checked="checked" /><label> weiß man nicht so genau</label>
</p>
<p>Schönheit (von 1-5):
<input type="radio" name="nice" id="nice_1" value="1" /><label>1</label> | <input type="radio" name="nice" id="nice_2" value="2" /><label>2</label> |
<input type="radio" name="nice" id="nice_3" value="3" /><label>3</label> | <input type="radio" name="nice" id="nice_4" value="4" /><label>4</label> |
<input type="radio" name="nice" id="nice_5" value="5" /><label>5</label> | <input type="radio" name="nice" id="nice_missing" value="-1" /><label>missing</label> |
</p>
<p>Nun dürfen auch noch ein paar Checkboxen kommen ...</p>
<p>
<label for="check1">Checkbox 1</label> <input name="check1" type="checkbox" id="check1" value="1" />
<br>
<label for="check2">Checkbox 2</label> <input name="check2" type="checkbox" id="check2" value="1" />
<br>
</p>
</form>
<?php
//Anm.: nach meiner Meinung kann man PHP-Befehle auch ganz an das Ende schreiben ...
//sofern man JS verwendet; HTML-Ausgaben (z.B. zum Test) sind dann aber ganz am Ende
if ($_POST["DS_ID"]) { //wenn DS_ID übergeben wurde
//Verbinden mit der SQL-Datenbank herstellen
if (!$sql = mysql_connect("localhost","root","")) die("kein Connect zu localhost möglich");
if (!$db = mysql_select_db("doku", $sql)) die("Datenbank doku nicht gefunden");
$DS\_ID=$\_POST["DS\_ID"];
$query = "SELECT \* FROM meine\_werte where id=$DS\_ID";
echo "<p>so sieht mein SQL-String aus: <strong>$query</strong></p>\n";
$werte=mysql\_query($query);
if (!werte) { echo("<p><strong>Achtung ! DS\_ID wurde übergeben ... Aber die SQL-Abfrage konnte nicht durchgeführt werden !</strong></p>");
} else {
if ($row = mysql\_fetch\_array($werte, MYSQL\_ASSOC)) { //wenn es einen Datensatz gibt
// im folgenden werden die Werte per JS übergeben
// wenn die Formularobjekte genauso wie die Felder in der SQL-Tabelle heißen, kann man folg. Schleife benutzen
echo "<script type=\"text/javascript\">\n<!--\n"; //JS im Quellcode einleiten
foreach (array\_keys ($row) as $varname) {
$JS\_string= "SetValue(\"$varname\",\"$row[$varname]\");"; //siehe obige JS-Proz.
echo "$JS\_string\n";
}
echo "-->\n</script>\n"; //JS im Quellcode ist hier zu Ende
} else { echo("<p><strong>Achtung ! DS\_ID wurde übergeben ... Aber es wurde kein passender Datensatz gefunden !</strong></p>");
}
} //ende if (!werte)
mysql\_free\_result($werte); //bitte nach obigem mysql\_query das Ergebnis wieder freigeben !
} // Ende if ($\_POST["DS\_ID"]) { //wenn DS\_ID übergeben wurde
//hier ist der PHP-Quelltext zu Ende ...
?>
<p class="footer">wir sind auf der Seite index.php -- hier ist der footer ... :-)</p>
</body>
</html>
Die Kommentare von dem Kollegen sind auch enthalten.
Danke!
Mahlzeit ajtak,
ich poste jetzt mal den gesamten Original-Quelltext, den mir der Kollege, der das ganze verfasst hat, geschickt hat.
Du verstehst das Problem, dass Deine Leser haben, wenn sie Dir bei Deinem Problem helfen wollen, anscheinend immer noch nicht.
Ich wiederhole es jetzt noch genau einmal, dann verliere ich auch die Lust:
Server-seitiger Code (d.h. also in Deinem Fall PHP-Code) ist bei einem Client-seitigen Problem (d.h. eins, das *nur* im Browser auftritt) *ABSOLUT IRRELEVANT*!
Du solltest den HTML- und Javascript-Code zeigen, der im Browser ankommt (z.B. über den Menüpunkt "Ansicht" - "Quelltext") ... *ALLES ANDERE* ist nicht hilfreich, wenig sinnvoll und absolut nicht zielführend. Insbesondere PHP-Code hat in Deinen Fragen bzw. Ergänzungen eigentlich *ABSOLUT NICHTS* verloren.
MfG,
EKKi
Hallo,
Du verstehst das Problem, dass Deine Leser haben, wenn sie Dir bei Deinem Problem helfen wollen, anscheinend immer noch nicht.
Weil ich eben keine Ahnung habe. Ich weiß, ich soll und werde das ändern, aber im Moment ist das noch so.
Ich wiederhole es jetzt noch genau einmal, dann verliere ich auch die Lust:
Server-seitiger Code (d.h. also in Deinem Fall PHP-Code) ist bei einem Client-seitigen Problem (d.h. eins, das *nur* im Browser auftritt) *ABSOLUT IRRELEVANT*!
Also das?! :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP-Demo</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
function SetValue (name,wert) {
if (document.getElementById(name)) { //wenn es das Element mit der ID gibt (dann gibt es nur 1 und es ist kein Radio-Button oder so)
if (document.getElementById(name).type == "checkbox") { // bei einer Checkbox nicht den eigentlichen Wert sondern checked setzen
if ((wert) && (wert != 0)) document.getElementById(name).checked=true //wenn wert<>0 ist --> checked auf TRUE setzen
else document.getElementById(name).checked=false;
} else if (wert) document.getElementById(name).value = wert; // sonst einfach nur den Wert setzen
//alert("habe " + name + " mit " + wert + " besetzt.");
} else if (document.getElementsByName(name)) { //wenn es das Element nicht als ID aber als Name gibt (z.B. bei Radio-Buttons)
//dann für alle gefundenen Elemente eine Schleife durchlaufen und den Wert setzen ...
if (wert) //aber nur, wenn es wert überhaupt gibt
for each (var radio in document.getElementsByName(name))
if (radio.value == wert) radio.checked = true;
}
}
-->
</script>
</head>
<body>
<h1>Demo-Projekt zum Handling mit Daten in PHP - Vers.6</h1>
<p class="text_braun">Hinweise zum Projekt wieder in der<a href="readme.html"> readme.html </a>sowie im PHP-Quelltext !</p>
<form id="main_form" name="main_form" method="post" action="save.php">
<p>hier ist der Beginn meines Formulares ...</p>
<p>
<input type="submit" id="btn_save" value="Speichern" />
<input type="reset" id="btn_reset" value="alle Formularwerte löschen" />
<input type="button" id="btn_load" value="Laden eines Datensatzes" onclick="window.top.location.href='load.php';"/></p>
<p>hier kommen verschiedene Werte/Eingabe-Felder:</p>
Datensatz-ID: <input type="text" name="id" id="id" value="0"/> (Achtung bitte nicht verändern !) <br>
User-ID: <input type="text" name="user_id" id="user_id" value="0"/> (Achtung bitte nicht verändern !) <br>
<p>
<label for="Pat_ID">Patienten-ID </label><input type="text" name="pat_id" id="pat_id" />
</p>
<p>
<label for="text1">hier kommt Text1 rein</label><input type="text" name="text1" id="text1" />
</p>
<p>
<label for="text2">hier kommt Text2 rein</label><input type="text" name="text2" id="text2" />
</p>
<p>und nun Optionsfelder:</p>
<p>
Geschlecht: <input type="radio" name="sex" id="sex_male" value="1" /><label> männlich</label> |
<input type="radio" name="sex" id="sex_female" value="2" /><label> weiblich</label> |
<input name="sex" type="radio" id="sex_missing" value="-1" checked="checked" /><label> weiß man nicht so genau</label>
</p>
<p>Schönheit (von 1-5):
<input type="radio" name="nice" id="nice_1" value="1" /><label>1</label> | <input type="radio" name="nice" id="nice_2" value="2" /><label>2</label> |
<input type="radio" name="nice" id="nice_3" value="3" /><label>3</label> | <input type="radio" name="nice" id="nice_4" value="4" /><label>4</label> |
<input type="radio" name="nice" id="nice_5" value="5" /><label>5</label> | <input type="radio" name="nice" id="nice_missing" value="-1" /><label>missing</label> |
</p>
<p>Nun dürfen auch noch ein paar Checkboxen kommen ...</p>
<p>
<label for="check1">Checkbox 1</label> <input name="check1" type="checkbox" id="check1" value="1" />
<br>
<label for="check2">Checkbox 2</label> <input name="check2" type="checkbox" id="check2" value="1" />
<br>
</p>
</form>
<p>so sieht mein SQL-String aus: <strong>SELECT * FROM meine_werte where id=1</strong></p>
<script type="text/javascript">
<!--
SetValue("id","1");
SetValue("pat_id","1");
SetValue("text1","1");
SetValue("text2","1");
SetValue("sex","1");
SetValue("nice","1");
SetValue("check1","1");
SetValue("check2","1");
SetValue("user_id","1");
-->
</script>
<p class="footer">wir sind auf der Seite index.php -- hier ist der footer ... :-)</p>
</body>
</html>
Bei SetValue...kommt die Fehlermeldung "Objekt erwartet".
Danke für deine Geduld, die du bis jetzt hattest.
ajtak
Mahlzeit ajtak,
Also das?! :
Genau das.
<script type="text/javascript">
<!--
SetValue("id","1");
SetValue("pat_id","1");
SetValue("text1","1");
SetValue("text2","1");
SetValue("sex","1");
SetValue("nice","1");
SetValue("check1","1");
SetValue("check2","1");
SetValue("user_id","1");
-->
</script>
Bei SetValue...kommt die Fehlermeldung "Objekt erwartet".
Wann? Bei welchem der Aufrufe? Gleich beim ersten? Steht in der Fehlermeldung irgendwo eine Zeilenangabe, in der der Fehler auftritt? Wenn ja: welche der Zeilen ist es?
Du könntest zur gezielten Suche, wann und wo der Fehler auftritt, z.B. in die Funktion SetValue() gleich in die erste Zeile mal folgendes einbauen:
alert('name=' + name + '\nwert=' + wert);
Dann musst Du Dir nur noch merken, bei welchem der Aufrufe die Fehlermeldung ausgeworfen wird.
Danke für deine Geduld, die du bis jetzt hattest.
Kein Problem - jetzt klappt die Mitarbeit ja ... :-)
MfG,
EKKi
Hallo EKKi,
Wann? Bei welchem der Aufrufe? Gleich beim ersten? Steht in der Fehlermeldung irgendwo eine Zeilenangabe, in der der Fehler auftritt? Wenn ja: welche der Zeilen ist es?
Die Meldung kommt direkt bei der ersten Zeile.
Du könntest zur gezielten Suche, wann und wo der Fehler auftritt, z.B. in die Funktion SetValue() gleich in die erste Zeile mal folgendes einbauen:
alert('name=' + name + '\nwert=' + wert);
Dann musst Du Dir nur noch merken, bei welchem der Aufrufe die Fehlermeldung ausgeworfen wird.
Hab ich so getan. Nur kommt da im IE keine "Alert"-Box. Wenn ich das ganze im Firefox laufen lasse, kommt vorbildlich die Alert-Meldung. Im IE ist alles unverändert.
VG
ajtak
Mahlzeit ajtak,
Die Meldung kommt direkt bei der ersten Zeile.
Dann hat der IE offenbar ein Problem mit dem Funktionsaufruf selbst. Vielleicht kennt er diese Funktion zu diesem Zeitpunkt noch nicht? Vielleicht gibt's beim IE auch generell Probleme mit der Funktionsdeklaration? Welche IE-Version verwendest Du?
Vielleicht hat's auch etwas damit zu tun, dass Du Dein Dokument als XHTML deklariert hast. Versuch's doch spaßeshalber mal mit HTML 4.01 ...
MfG,
EKKi
Hallo,
Vielleicht hat's auch etwas damit zu tun, dass Du Dein Dokument als XHTML deklariert hast. Versuch's doch spaßeshalber mal mit HTML 4.01 ...
halte ich nicht für zielführend, aber einen Versuch ist's wert.
Aber etwas anderes kommt mir verdächtig vor. Der IE legt ja bekanntlich für jedes Element, das ein id-Attribut hat, automatisch ein entsprechend benamstes JS-Elementobjekt im window-Kontext an. Kollidiert diese Unart vielleicht damit, dass dann ein JS-Objekt mit dem Namen "id" irgendwo die Objekteigenschaft "id" überschreibt? - Ich würde die id="id" mal probehalber anders nennen.
So long,
Martin
Hallo,
Vielleicht hat's auch etwas damit zu tun, dass Du Dein Dokument als XHTML deklariert hast. Versuch's doch spaßeshalber mal mit HTML 4.01 ...
halte ich nicht für zielführend, aber einen Versuch ist's wert.
Hat auch leider nicht funktioniert.
Aber etwas anderes kommt mir verdächtig vor. Der IE legt ja bekanntlich für jedes Element, das ein id-Attribut hat, automatisch ein entsprechend benamstes JS-Elementobjekt im window-Kontext an. Kollidiert diese Unart vielleicht damit, dass dann ein JS-Objekt mit dem Namen "id" irgendwo die Objekteigenschaft "id" überschreibt? - Ich würde die id="id" mal probehalber anders nennen.
Auch das hab ich schon probiert...leider alles unverändert.
VG
ajtak
Hi Ekki,
Dann hat der IE offenbar ein Problem mit dem Funktionsaufruf selbst. Vielleicht kennt er diese Funktion zu diesem Zeitpunkt noch nicht? Vielleicht gibt's beim IE auch generell Probleme mit der Funktionsdeklaration? Welche IE-Version verwendest Du?
Hab den Internet Explorer 8.
Vielleicht hat's auch etwas damit zu tun, dass Du Dein Dokument als XHTML deklariert hast. Versuch's doch spaßeshalber mal mit HTML 4.01 ...
Hab ich probiert. Leider alles unverändert.
VG
ajtak
Hallo,
Na also, geht doch mit dem Quelltest.
Du hast die erste Fehlermeldung des IE unterschlagen, die da lautet:
Expected "("
Zeile 20
Und was steht in Zeile 20? Das:
for each (var radio in document.getElementsByName(name))
Wo ist der obligatorische Block {...}
der dann jeweils ausgeführt werden soll?
JSLint meckert an der Stelle auch:
Expected '(' and instead saw 'each'.
for each (var radio in document.getElementsByName(name))
Dieses "for each" wird vom IE anscheinend nicht unterstützt, jedenfalls fehlt m.E. der zugehörige Anweisungslock.
Gewöhne dir an, die Zeichen {} immer zu benutzen, auch nach if, selbst wenn nur eine einzige Anweisung folgt. Das hilft, solche Fehlerquellen von Anfang an zu vermeiden. Von "for each" habe ich heute zum ersten mal gelesen. Das gibt's anscheinend wirklich, aber nicht alle Browser kennen es.
Gruß, Don P
Hi,
Dieses "for each" wird vom IE anscheinend nicht unterstützt, jedenfalls fehlt m.E. der zugehörige Anweisungslock.
nein, der Anweisungsblock ist da - er besteht nur aus dem if-Statement. Das ist, wie du schon sagst, nicht gerade schön ohne ordentliche Klammerung - und hier ganz besonders, wenn der Code nicht einmal eingerückt ist. Der ist ein absoluter Killer in puncto Wartungsfreundlichkeit.
Aber technisch okay.
Von "for each" habe ich heute zum ersten mal gelesen. Das gibt's anscheinend wirklich, aber nicht alle Browser kennen es.
Jetzt, wo du es sagst, fällt es mir auch auf: Ich kannte foreach bisher auch nur zusammengeschrieben als *ein* Keyword (allerdings in PHP), oder aber als for (<variable> in <object>).
So long,
Martin
Hallo,
Von "for each" habe ich heute zum ersten mal gelesen. Das gibt's anscheinend wirklich, aber nicht alle Browser kennen es.
Jetzt, wo du es sagst, fällt es mir auch auf: Ich kannte foreach bisher auch nur zusammengeschrieben als *ein* Keyword (allerdings in PHP), oder aber als for (<variable> in <object>).
Als Array-Methode forEach
kenne ich es auch in JS, also Array.forEach()
, aber eine Schleife for each(val in obj)
ist mir neu.
Der Unterschied zu for (key in obj)
ist, dass mit each die Werte angesprochen werden, mit der nomalen for-in-Schleife dagegen die Schlüssel.
IE8 kennt for each aber nicht (die früheren IEs wohl erst recht nicht), sonst würde er es ja nicht anmeckern mit
Expected: "("
Gruß, Don P
Mahlzeit ajtak,
ich habe einen Code, der wunderbar im Firefox funktioniert, aber nicht im Internet Explorer:
"Funktioniert nicht" funktioniert nicht. Was genau passiert? Was hätte stattdessen passieren sollen? Gibt es Fehlermeldungen? Wie lauten diese?
<script type="text/javascript">
function SetValue (name,wert) {
if (document.getElementById(name)) {
if (document.getElementById(name).type == "checkbox") {
if ((wert) && (wert != 0)) document.getElementById(name).checked=true
else document.getElementById(name).checked=false;
} else if (wert) document.getElementById(name).value = wert;
Du greifst hier 5 (in Worten: FÜNF) mal hintereinander mit getElementById() auf ein Element zu - dabei hätte es einmal auch getan. Was veranlasste Dich, derart schlampig mit Ressourcen umzugehen?
Prinzipiell soll die Funktion eine Checkbox oder eine Liste von Radiobuttons (die durch den ersten Funktionsparameter identifiziert werden) dann aktivieren bzw. die richtige auswählen, wenn der als zweiter Parameter übergebene Wert identisch ist - habe ich das richtig erraten?
dann folgt das ganz viel Formular und entsprechender Code und dann der Teil, in dem die o.g. JS-Funktion aufgerufen wird.
Jetzt postest Du PHP-Code, der bei einem Client-seitigen Javascript-Problem extremst irrelevant ist. Wie lautet der HTML-Code, der beim Browser ankommt? Dieser und *NUR* dieser ist hilfreich.
Vielleicht sieht jemand schon das Problem, ohne dass ich großartig erkläre, was das ganze tun soll (kurz: DS ins Formular laden und Werte anzeigen).
Nein. Glaskugeln sind grad aus. Kommen auch nicht wieder rein. Also:
Was erwartest Du, was der (relevante!) Code tun soll? Was passiert stattdessen? Wie lauten eventuelle Fehlermeldungen?
Ohne diese absolut notwendigen Informationen kann Dir hier keiner ernsthaft weiterhelfen.
MfG,
EKKi