Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute,

ich habe hier ein doch mehr oder minder seltsames Problem.

Ich habe eine Folge von Formularen, die assistenen-like per "weiter" nacheinander aufgerufen werden. Nun passiert es aber mal, dass manche Teile nicht abgefragt werden muessen. Das heisst, wenn jemand nur einen Monitor bestellt, muessen wir nicht unbedingt fragen, welche Software da drauf soll. ;)

Also habe ich ein wenig gebastelt und mit Hilfe von PHP es tatsaechlich hingebogen, dass das Formular, was nur bei der Bestellung eines Computers relevant ist, nur wirklich dann anzuzeigen, wenn eben ein Computer ausgewaehlt wurde. Das ganze fusst darauf, dass ich im Submit-Feld einen Eventhandler "onclick" verwendet habe und der Teil, der dann hinter =" kommt wird je nach Situation per Templates reingeparst. Da natuerlich eine Variable dafuer abgefragt werden muss, wird der Computer ueber einen andere Submit-Button ausgewaehlt, welcher die Seite erneut laedt und somit die Variable uebergibt. Der "weiter"-Button hat einen neuen Wert und wird schliesslich auf "weiter" geklickt, geht er, dank des Javascriptes auf die ausgewaehlte Seite.

So, das funktioniert alles. Warum schreibe ich dann, ich haette ein Problem?

Ganz einfach. Ich bin wieder an einem Punkt, an dem ich das machen muss und habe quasi die gesamte Vorgehensweise reproduziert. Im HTML-Quelltext sind auch alle Platzhalter mit den korrekten Werten gefuellt, aber mir sagt das Java-Script dauernd, dass Fehler auf der Seite waeren. Somit umgeht er den Event-Handler und greift auf das <Form action="..."> zurureck, welches auf "$_SERVER[php_SELF]" steht und somit die Seite erneut laedt.

Allerdings habe ich alles uebernommen, das Java-Script 1:1 uebernommen und auch keine syntaktischen Fehler gefunden. Was kann das sein? :confused:

Geschrieben
Original geschrieben von Hawkeye

Im HTML-Quelltext sind auch alle Platzhalter mit den korrekten Werten gefuellt, aber mir sagt das Java-Script dauernd, dass Fehler auf der Seite waeren. Somit umgeht er den Event-Handler und greift auf das <Form action="..."> zurureck, welches auf "$_SERVER[php_SELF]" steht und somit die Seite erneut laedt.

Allerdings habe ich alles uebernommen, das Java-Script 1:1 uebernommen und auch keine syntaktischen Fehler gefunden. Was kann das sein? :confused:

*mal in die Glaskugel schau*

Hmmm... Poste doch mal den Quelltext von der Seite, wo der JavaScript Fehler ist. (weil ein Fehler muss da sein, auch der IExplorer erfindet keine...)

Vielleicht kann man dir dann helfen ;)

Geschrieben

Hm,

ganz übler Stil. ;)

Du willst etwas Clientseitig beeinflussen, was eigentlich auf dem Server ablaufen soll.

Was ist wenn der User kein Javascript aktiviert hat oder absichtlich die falsche Seite aufruft?

Du kannst auch die Ausgabe verschiedener Screens in einem Skript handeln. Was bei massiven Gebrauch in Spaghetticode enden kann.

Oder du arbeitest mit "Redirects"

27.9. Wie erzeuge ich mit PHP einen Redirect auf eine andere Seite?

http://www.dclp-faq.de/q/q-http-redirect.html

Gruß Jaraz

Geschrieben

Okay.

Hier nun erstmal die Seite in gekuerzter Form:


<!doctype html public "-//W3C//DTD HTML 4.0 //DE">
<html>
<head>
<title>Formular</title>
<script type="text/javascript">
<!--
function weiter(ziel)
{
document.main.action = ziel;
document.main.submit();
}
//-->
</script>

</head>

<body bgcolor="#FFCC66" topmargin="0" leftmargin="0">

<form action="{FORM_ACTION}" method="POST">

[...]

<table cellpadding="4" width="100%" bgcolor="#FFFF99" cellspacing="0" border="0">
<tr>
<td width="15%" bgcolor="#006666" valign="top">
<font class="drei">Sonstiges/<br>Besonderheiten:</font>
</td>
<td>
<textarea name="Sonstiges" cols="50" rows="5">{SONST}</Textarea>
</td>
</tr>
<tr>
<td width="15%" bgcolor="#006666" valign="top">
<font class="drei"> </font>
</td>
<td valign= "top">
Antragssteller = Angemeldeter Benutzer?
<input type="submit" name="BUTTON[0]" value ="Ja">
<input type="submit" name="BUTTON[1]" value ="Nein">
</td>
</tr>
</table>

<table cellpadding="5" cellspacing="0" border="0" width="100%">
<tr>
<td width="15%">
 
</td>
<td width="15%">
<input type="Reset" value=" Daten löschen ">
<td>
<input type="submit" name="BUTTON[2]" value=" weiter " onclick="{WEITER}">
</td>
</tr>
</table>

</form>
</body>
</html>
[/PHP]

So, und zum Verstaendnis noch die Dinge, die ich per PHP in {weiter} und {FORM_ACTION} parse und wie:

[php]
[...]

$tpl = new IntegratedTemplate("../templates");
$tpl->loadTemplatefile("daten.html" ,true, true);

[...]

$tpl->setVariable("FORM_ACTION", $_SERVER[PHP_SELF]);

if($_POST[BUTTON][0]=="Ja")
{
$tpl->setVariable("WEITER","weiter('../scripts/overview.php');");
}

if ($_POST[BUTTON][1]=="Nein")
{
$tpl->setVariable("WEITER","weiter('../scripts/auswahl_antr.php');");
}

$tpl->show();

[...]

Geschrieben

Also wenn du schon mit Templates arbeitest, was natürlich die beste Lösung ist, ;) verstehe ich nich wofür der onClick Handler ist.

Gruß Jaraz

Geschrieben
Original geschrieben von Hawkeye


document.main.action = ziel;
document.main.submit();
...
<form action="{FORM_ACTION}" method="POST">
[/php]

[/b]

hmmm... Wenn ich das richtig verstehe, sprichst du mit "document.main" dein Formular an, oder? Aber dein Formular heisst nicht so.

Probier mal folgendes:

[php]
<form name="main" action="{FORM_ACTION}" method="POST">

Sicher bin ich mir allerdings auch nicht. :confused: Falls ich mich irre, korrigiert micht bitte!

Geschrieben
Original geschrieben von Jaraz

Also wenn du schon mit Templates arbeitest, was natürlich die beste Lösung ist, ;) verstehe ich nich wofür der onClick Handler ist.

Gruß Jaraz

Nunja. Wie bereits gesagt, ist das, was in die Templates geschrieben wird, abhaengig von der Auswahl. Da die natuerlich in Variablen gefuellt wird, muss gezwungenermassen die Seite nach der Auswahl neu geladen werden, da die Variablen sonst noch nicht vorhanden sind.

Wenn ich jetzt in {FORM_ACTION} die Seite reinschreiben will, die ausgewaehlt wird, wird trotzdem zu beginn immer die Seite erneut geladen und beim naechsten Druecken einen der Buttons eben die Seite geladen, die bei der Auswahl davor haette geladen werden sollen - egal, ob ich "Ja" oder "Nein" anklicke. Klar, schliesslich ist die Variable ja nach dem Reload auf "Ja" oder "Nein" gesetzt.

Geschrieben

@beebof

Lass Dich knuddeln! :D

Klar, dass es nicht klappen kann. Ich hab zwar das Script aus dem anderen Formular rueberkopiert, aber natuerlich nicht an den form-Tag angepasst!

Danke. :)

Geschrieben

Auch wenn es jetzt funktioniert. Wenn du keinen Bock hast, brauchste nicht zu antworten. :D

Würde es dann nicht reichen die Auswahl nicht über Buttons, sondern Radio Buttons oder Checkboxen zu realisieren und dann je nachdem welcher Radio Button gewählt wurde auf die entsprechende Seite weiterzuleiten?

Gruß Jaraz

Geschrieben
Original geschrieben von Jaraz

Auch wenn es jetzt funktioniert. Wenn du keinen Bock hast, brauchste nicht zu antworten. :D

:D :D :D

Würde es dann nicht reichen die Auswahl nicht über Buttons, sondern Radio Buttons oder Checkboxen zu realisieren und dann je nachdem welcher Radio Button gewählt wurde auf die entsprechende Seite weiterzuleiten?

Natuerlich wuerde das reichen, aber die Werte werden dann doch erst in die Variablen geschrieben, wenn das Dokument abgeschickt wird. Dass heisst, vorher kann ich keine Fallunterscheidung machen, denn er kann ja keine Werte " Auswahl='Ja' " ueberpruefen, bis ich den Submit-Button gedrueckt habe. ...und dann ist es schon zu spaet...

...oder wuesstest Du da etwas, was mir das ermoeglicht? Der Punkt ist ja, dass die Seite nach der Auswahl mind. einmal neu geladen werden muss, damit klar ist, was ausgewaehlt wurde.

Geschrieben
Original geschrieben von Hawkeye

Der Punkt ist ja, dass die Seite nach der Auswahl mind. einmal neu geladen werden muss, damit klar ist, was ausgewaehlt wurde.

Aber wenn die Seite sowieso neu geladen wird, könntest du doch auch das Ziel des Formulars ändern, oder?

Vielleicht sollten wir da Sonntag in ner ruhigen Minute drüber sprechen. Ich glaube wir reden aneinander vorbei. :D

Geschrieben
Original geschrieben von Jaraz

Vielleicht sollten wir da Sonntag in ner ruhigen Minute drüber sprechen. Ich glaube wir reden aneinander vorbei. :D

Ich vermute auch. :D

Jo, lass Sonntag da mal drueber quatschen. ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...