PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable von Javascript an php übergeben und anschließendes Neuladen der Seite?


ScroogeMcDuck
2005-08-08, 14:24:41
Hallo, folgendes Problem bei dem ich dringend eure Hilfe bräuchte :)

ich habe eine Auswahlliste angelegt die mittels php beim Generieren der Seite mit Datensätzen aus einer MySQL-Datenbank gefüllt wird

Auszug aus dem Code:

$query = "SELECT KundenNr,Firma,Name,Vorname,Straße,PLZ,Ort FROM kunde";

$result = mysql_query($query);
if(!$result) { // prüfen auf false
echo "Konnte die MySQL-Abfrage nicht verarbeiten <br/>\n";
echo "MySQL-Antwort:".mysql_error();
}

echo "<tr>\n";
echo "<form action=\"http://localhost/rechnunganlegen.php\">\n";
echo "<td align=\"left\" colspan=\"2\"><br/>Kunden:&nbsp;&nbsp;\n";
echo "<select name=\"kindex\" size=\"1\" onChange=\"javascript:reload()\">\n";
echo "<option value=\"nix\">Kundenauswahl</option>\n";
while ($zeile = mysql_fetch_object($result)) {

echo "<option value=\"$zeile->KundenNr\">$zeile->Name&nbsp;$zeile->Vorname,&nbsp;$zeile->PLZ&nbsp;$zeile->Ort</option>\n";

}
echo "</select></td>\n";
echo "</form>\n";
echo "</tr>\n";

Auszug Ende


Was ich jetzt machen will ist das wenn ein Eintrag aus der Auswahlliste angeklickt wird, die zugehörigen Daten des ausgewählten Datensatzes in verschiedene Eingabefelder gesetzt werden. Ich habe mir gedacht das ich mittels JavaScript 'onChange' den value des selektierten Eintrags an die Html-Seite beim Neuladen übergebe, den Wert dann mit _Get mittels php auslese und die Daten für die Eingabefelder aus der Datenbank anhand des value wertes hole (value wert ist id in der datenbank). Leider funktioniert es nicht so wie ich es mir denke, bzw. ich finde den Fehler nicht. Ich poste mal den relevanten Code hier, vielleicht kann mir einer von euch Gurus helfen :)

JavaScript-Funktion die Seite neuladen soll

<script language="JavaScript">
function reload() {

[window.]location.href = "http://localhost/rechnunganlegen.php?value=+value";
location.reload();

}
</script>

Code für das Ausfüllen der Eingabefelder

$query = "SELECT Firma,Name,Vorname,Straße,PLZ,Ort FROM kunde WHERE KundenNr = '".$_GET['value']."'";

$result = mysql_query($query);
if(!$result) { // prüfen auf false
echo "Konnte die MySQL-Abfrage nicht verarbeiten <br/>\n";
echo "MySQL-Antwort:".mysql_error();
}

if($_GET['value'] == "" || $_GET['value'] == "nix") {

echo "<td align=\"left\" valign=\"top\">\n";
echo "<input name=\"kfirma\" type=\"text\" size=\"20\" maxlength=\"30\"><br/>\n";
echo "<input name=\"kvorname\" type=\"text\" size=\"20\" maxlength=\"30\"><br/>\n";
echo "<input name=\"kname\" type=\"text\" size=\"20\" maxlength=\"30\"><br/>\n";
echo "<input name=\"kstrasse\" type=\"text\" size=\"20\" maxlength=\"40\"><br/>\n";
echo "<input name=\"kplz\" type=\"text\" size=\"5\" maxlength=\"5\"> / <input name=\"kort\" type=\"text\" size=\"20\" maxlength=\"40\"><br/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "</form>\n";

} else {

$zeile = mysql_fetch_object($result);

echo "<td align=\"left\" valign=\"top\">\n";
echo "<input name=\"kfirma\" type=\"text\" size=\"20\" maxlength=\"30\" value=\"$zeile->Firma\"><br/>\n";
echo "<input name=\"kvorname\" type=\"text\" size=\"20\" maxlength=\"30\" value=\"$zeile->Vorname\"><br/>\n";
echo "<input name=\"kname\" type=\"text\" size=\"20\" maxlength=\"30\" value=\"$zeile->Name\"><br/>\n";
echo "<input name=\"kstrasse\" type=\"text\" size=\"20\" maxlength=\"40\" value=\"$zeile->Straße\"><br/>\n";
echo "<input name=\"kplz\" type=\"text\" size=\"5\" maxlength=\"5\" value=\"$zeile->PLZ\"> / <input name=\"kort\" type=\"text\" size=\"20\" maxlength=\"40\" value=\"$zeile->Ort\"><br/>\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "</form>\n";

}

so ist jetzt verdammt umfangreich geworden, sorry aber ich hoffe es ist noch leserlich genug

ravage
2005-08-08, 14:40:39
Hrm sowas ähnliches hab ich auch schon mal gemacht. Ich find auf die Schnelle auch keinen Fehler. Vielleicht solltest du deine eigene Funktion nicht reload() nennen, da es diese in javascript schon gibt.

ScroogeMcDuck
2005-08-08, 14:47:59
ok, nach Änderung des Namens der Javascript Funktion macht er endlich einen reload der Seite, der value-Wert wird aber anscheinend nicht übergeben :(

ravage
2005-08-08, 14:57:48
Hrm du musst der Funktion auch die Variable mitgeben. Ich bin zwar kein javascript Guru, aber ich würd es so machen:

<script language="JavaScript">
function neuLaden(Value) {

[window.]location.href = "http://localhost/rechnunganlegen.php?value=Value";
location.reload();

}
</script>

Und das ganze dann aufrufen mit:

onChange=\"javascript:neuLaden($Zeile->value)\"

ScroogeMcDuck
2005-08-08, 15:21:11
ok, habe den text wie angegeben geändert.

Nur der Aufruf mit onChange geht so nicht, das Auswahlfeld wird in einer Schleife aus der datenbank gefüllt, wenn ich jetzt irgendeinen Eintrag aus der Mitte wähle kann ich ja nicht mit $zeile->... abrufen da dort inzwischen ja das letzte eingetragene Element drinsteht.

echo "<option value=\"$zeile->KundenNr\">$zeile->Name&nbsp;$zeile->Vorname,&nbsp;$zeile->PLZ&nbsp;$zeile->Ort</option>\n";

deswegen gebe ich ja beim anlegen der options bereits dem value= index des eintrags so das ich später nur noch diesen wert übergeben muss. das ganze ist natürlich in einem formular

habe mal bei selfhtml geschaut wies dort gemacht wird, und habe folgende zeile draus generiert, funktioniert aber leider immer noch nicht :(

onChange=\"javascript:loader((this.form.kindex.options[this.form.kindex.selectedIndex].value))\"

habe halt null Ahnung von JavaScript......ps. vielen Dank für deine Mühe

ravage
2005-08-08, 15:26:54
Hrm stimmt, das mit $zeile->Value geht an der stelle nicht.... hrm, hrm, hrm

So langsam bin ich mit meinem Latein auch am ende. Vielleicht fällt mir gleich spontan noch was ein. :)

ScroogeMcDuck
2005-08-08, 17:05:56
habs hinbekommen phhheww

echo "<select name=\"kindex\" size=\"1\" onChange=\"this.form.submit()\">\n";


$query = "SELECT Firma,Name,Vorname,Straße,PLZ,Ort FROM kunde WHERE KundenNr = '".$_GET['kindex']."'";

$result = mysql_query($query);
if(!$result) { // prüfen auf false
echo "Konnte die MySQL-Abfrage nicht verarbeiten <br/>\n";
echo "MySQL-Antwort:".mysql_error();
}

if($_GET['kindex'] == "" || $_GET['kindex'] == "nix") {
.
.
.
.



und an dem Scheiss arbeite ich bereits den ganzen Nachmittag rum obwohls ziemlich einfach ist :(

z3ck3
2005-08-10, 12:40:05
ich möchte dir mal nen kleinen Tipp geben: Arbeite mit Templates, das ganze machts wesentlich übersichtlicher. Trenne PHP Code strikt von HTML/JS etc.