Zum Inhalt springen

[PHP] Unterschiedliche Seiten anzeigen abhängig von Auswahl


Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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();

[...]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...