Session speichern von dynamischen auswahlboxen???

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Session speichern von dynamischen auswahlboxen???

Beitrag von moe »

Hallo.

Habe eine größeres Formular, diese Anfrage wird mir per Mail zugesandt, wenn ein Kunde eine Bestellung hat.

Das ganze beinhaltet auf ein dynamischen dropdown feld, alles über script gesteuert. wenn ich im ersten menu1 auswähle, wird zunächst eine übersicht mit typen geziegt, diese kann man dann je nachdem was möglich ist im 2. menu gezeigt angezeigt.

wenn ich jedoch nun alles ausgefüllt habe, aber der meckert weil ich ein feld vergessen habe, dann springt der auf eine error-seite, sagt den hinweis und springt zurück.

PROBLEM: die auswahlboxen stehen auf standard, wie kann ich diese speichern?

Danke
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du müsstest diese in der Meldung als versteckte Felder mitführen, damit Du sie beim Anzeigen des Formulars wieder zur Verfügung hast.
Also wenn die Fehlermeldung angezeigt wird, einfach per

Code: Alles auswählen

<input type="hidden" name="name_wert1" value="werk1" />
je Wert in das Formular einfügen.
"wert1" kommt dann klar aus dem PHP-Script.
Diese müssen aber dann auch in der Seite mit der Meldung in einem Formular stehen, damit diese auch wirklich übergeben werden.
Also etwas in dieser Art:

Code: Alles auswählen

<form action="link_zur_seite">
<input type="hidden" name="name_wert1" value="wert1" />
</form>
Da allerdings dieses Formular abgesendet werden muss, damit die Angaben auch wieder da landen, wo sie hin wollen, wäre es besser, die Meldung mittels Button absenden zu lassen, damit der User die Meldung in Ruhe lesen kann und danach wieder zielsicher auf das Formular kommt.
Also in das Formular einfach vor </form> noch den Senden-Button einfügen:

Code: Alles auswählen

<input type="submit" name="submit" value="{L_SUBMIT}" />
und im PHP-Script

Code: Alles auswählen

$template->assign_vars(array('L_SUBMIT' => $lang['Submit']));
an die Stelle zur Fehlermeldung hinzufügen.
Schaut besser aus und funktioniert dann auch.

Um zuletzt noch die Werte wieder einzustellen, musst Du diese nur aus $HTTP_POST_VARS, bzw. $_POST abfragen und als Standard-Werte in die einzelnen Felder/Dropdowns einstellen.

Fertig wäre die "Speicherung" der einmal getroffenen Eingaben.
Mehr kann ich Dir aber hier nicht helfen, da ich ja das Script weder kenne noch weiß, wie Du welche Werte woher holst und wohin schreibst...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

danke, ich wusste es, dass du helfen kannst, in 3 anderen foren kanns keiner auf die schnelle, OXPUS 4EVER :)

ähm einen submitt-button habe ich bereits, hier 2 links damit du ma die schnipsel angucken kannst!


http://www.carhifi-gehaeuse.de/sonstiges/functions.txt
http://www.carhifi-gehaeuse.de/sonstiges/anfrage.txt


an der stelle schonmal wieder ein fettes danke!

habe leider kaum php erfahrung, müsste man später evtl. genauer erläutern.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, wie wird denn das Formular ausgewertet?
Ich habe hier nur das Formular und die JS-Funktion für das abhängige DropDown.
Damit kann ich nicht so wirklich was anfangen, denn die Seite mit der Fehlermeldung ist wichtig und das Script, welches die Angaben auswertet.
Nur dann kann man auch die Angaben für das DropDown finden und dieses wieder einstellen...

Vielleicht hilft es auch schon, die Funktion populate() mit dem body-tag als onload=... einzustellen.
Die Fehlermeldung leitet ja auf das Formular weiter, es wird dann also auch geladen und das 2. Dropdown kann dann neu erstellt werden.
Oder die Funktion wird vor </body> aufgerufen, dann geschieht das nach dem Laden auch einmalig und das 2. DropDown dürfte dann auch wieder den ursprünglichen Wert haben.
Der Rest bleibt ja so schon erhalten...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

ähm das formular php-script möchte ich eigentlich nicht uppen, weil ich das gekauft hab, da verstoß ich wohl gegen CR!

also die errorseite wird aufgerufen, da steht der hinweis und wird redirected zur anfrage!

naja, das is ma ein kleiner auszug, der wird dir helfen, da wird alles bearbeitet, lösche das aber später wieder!

Code: Alles auswählen

if(ip_sperre()==false)
{
 $to = $_POST["to"];
 $typ_normal = $_POST["typ"];
 $subject = $_POST["subject"];
 $pflicht = $_POST["pflicht"];
 $pflicht = explode(",", $pflicht);
 $EMail =$_POST["EMail"];
 for ($i=0; $i<count($pflicht); $i++)
 { 
  if(empty($_POST[$pflicht[$i]]))
  {
   if (empty($_POST["error"]))
    header("location: error.html");
   else
    header("location:". $_POST["error"]);
   exit;
  }
 }
 $typ = Array();
 $typ = explode(",", $typ_normal);
 $msg = "";
 $xtra = "From: $EMail\r";
 $xtra2 = "From: Info@CarHiFi-Gehaeuse.de\r";
 $msg .= "IP: " . getenv('REMOTE_ADDR')."\r\n\r\n";
 for ($i=0; $i<count($typ); $i++)
 {
  $msg .= $typ[$i]." = ".$_POST[$typ[$i]]."\r\n";
 } 
 $filename = "antwort.txt";
 $fd = fopen( $filename, "r" );
 $contents = fread( $fd, filesize( $filename ) );
 fclose( $fd );
 mail("$to","$subject$nummer","$msg","$xtra");
mail("$EMail","Car&HiFi-Gehäuse-Service: $subject$nummer","$contents\r\n\r\n".$msg,$xtra2);
 if ($thx == "")
 {
  $thx = "http://www.CarHifi-Gehaeuse.de/danke.html";
 }
 header("location:$thx");
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

habe eben das ma versucht, hab aber bei beiden varianten, deine mit onload="...; populate()"> und meiner, festgestellt, dass die dynamische auswahlbox1 bleibt, nur die box2, die sich nach box1 ändert ist komplett leer nach redirect

mmhh... dat versteh ich nich
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hm, wenn Du theoretisch

Code: Alles auswählen

<script language="Javascript" type="text/javascript">
<!--
	populate('Gehäusebauart');
//-->
</script>
das in die overall_footer.tpl vor </body> einfügst, müsste nach der Fehlermeldung das 2. DropDown berechnet werden.
Theoretisch wie gesagt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

aahhhhh danke für den tipp, leider leider klappts nich ganz!

nun is zwar nimmer das feld leer, ABER es steht der standard-wert drin, welcher erscheint, wenn man box 1 angewählt hatte!

mannooooo


aso außerdem, is die box 1 dann tot, wenn man dropped und das gleiche geloggte auswählen will, wenn sich normal das popup öffnet, geschieht auch nichts mehr
Zuletzt geändert von moe am Mi 07.Mär, 2007 20:17, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann muss ich hier auch passen.
Javascript lerne ich zwar immer wieder dazu, aber hier ist für mich zunächst Übungsende.
Sorry...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

soll ich jetzt jubeln dass du kein rat weist ^a

joa, dann bleibt wohl nur noch session speichern, aba da bin ich ratlos, wälze google vor zurück, finde aber keine brauchbare anleitung, WENN dann klappts nich ¢¦
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

ich bekomms nich gebacken

habe es ma so versucht

Code: Alles auswählen

session_start();
 $_SESSION['NAME']=$_POST['NAME'];
 $NAME = $_POST['NAME'];
au einiges anderes, aber bekomms nich hin
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das ist auch keine Sache von PHP, sondern Javascript.
Mit Änderung der 1. DropDown Box wird eine JS-Funktion aufgerufen und die sollte man auch irgendwie mit dem erneuten Laden der Seite nach der Fehlermeldung hinbekommen.
Über das wie habe ich nun nicht wirklich eine Idee, daher muss in an dieser Stelle passen.

Aber ich habe eine komplett andere Idee:
Warum nicht die Felder nach Absenden des Formulars mittels Javascript prüfen und eine "Alert"-Meldung ausgeben?
Ist zwar nicht sooooo schick, aber das Formular wird damit nicht neu geladen und alle Werte bleiben, wie sie sind.
Das macht phpBB mit dem Posting-Formular für einen leeren Titel (neues Topic) ähnlich...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

die idee klingt interessant, darauf wär ich nicht gekommen!

da könnte man sogar alles auflisten WAS fehlt!

ABER, habe ich jetzt nen denkfehler oder? weil wenn ich ja submit klicke, wird ja das formmail php aktiviert was ja die felder prüft und redirected! somit muss das script VOR der php-aktivierung zum zuge kommen

mmhh... javascript checking kenne ich leider nicht, wüsste nicht wie umsetzen
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Es gibt die Eigenschaft onsubmit. Und damit kann man steuern, was geschehen soll.
Wird dieses weggelassen, wird das Formular sofort gesendet.
Somit kann man aber auch erst eine Javascript Funktion aufrufen, die den Inhalt des Formulars prüft.
Wie gesagt: In der posting_body.tpl geschieht das auch schon ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

GENIE

hat geklappt, bin grade am testen, funktioniert alles super! die auswertung wäre jetzt per alert möglich ABER ich möchte das in ein popup schreiben, also die auswertung was fehlerhaft ist!

so wäre es mit alert möglich:

Code: Alles auswählen

<SCRIPT LANGUAGE="JavaScript">
<!--
function pruef(){
 var falsch = ""; // Variable in der die Fehler gespeichert werden
 if(document.form.nachname.value == "") falsch += "Nachname\n"
 if(document.form.vorname.value == "") falsch += "Vorname\n"
 if(falsch == "") return true
 else{
  alert("Folgende Felder wurden nicht korrekt ausgefüllt:\n\n" + falsch)
  return false
 }
}
// -->
</script>

so habe ich mir das gedacht, leider scheitere ich beim schreiben der auswertungsvariable FALSCH!
wie muss ich die includen?

Code: Alles auswählen

<SCRIPT LANGUAGE="JavaScript">
<!--
function pruef(){
 var falsch = "";
 if(document.form.Gehäusebauart.value == "") falsch += "Gehäusebauart\n"
 if(document.form.Modell.value == "") falsch += "Modell\n"
 if(falsch == "") return true
 else{
neu=window.open("","fenster1","width=250,height=250,scrollbars=no");
neu.document.open("text/html");
neu.document.write("<p>TEXT</p>");
neu.document.write(+falsch);
neu.document.write("<p><a href=\"javascript:window.close()\">Fenster schliessen</a></p>");
  return false
 }
}
// -->
</script>
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Einfache Hochkommas, also keine "", sondern ''...
Und nimm auch nicht "falsch", sondern eher "fehler_text" oder so...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

genau die frisst er nich :) er nimmt keine "" wenn dann muss man \"\" schreiben

ich habe es NUR in einer textarea geschafft jetzt, is so vielleicht besser, habe nun 2 areas, dort wird ok und falsch sortiert, wenns fertig is, geb ich dir ma nen link :)
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

so hab ich es nun gelöst, denke kann man lassen, zumindest schöner als ein alert!

... beispiel ...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, so kann man das lassen.
Prima Arbeit!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
moe
Beiträge: 77
Registriert: Sa 06.Jan, 2007 23:24

Beitrag von moe »

danke, joa bin jetzt ganz zufrieden damit
Antworten