korea1 Geschrieben 31. März 2003 Teilen Geschrieben 31. März 2003 hi, habe folgenden vereinfachten code: $flag = 0; while(pg_fetch_row($QueryResult)) { if($_POST[pg_result($QueryResult, "fragenr")] == '') { $flag = 1; } else { $SQLQuery2 = "UPDATE table SET field=".$_POST[pg_result($QueryResult,"fragenr")]; pg_exec($ConID, $SQLQuery2); } } [/PHP] ich hab ne while schleife, die mir die daten per sql aus meiner db(postgres) ausliest. ich habe einen webbasierten fragebogen. wenn dieser ausgefüllt wird, dann wird in der if abfrage kontrolliert, ob fragen leer sind. also nicht ausgefüllt. ist dies der fall, setzt er das flag auf 1. sonst füllt er die werte in meine db. wenn der user seinen fragebogen das nächste mal anschaut, dann bekommt er nur noch die fragen zu sehen, die er zuvor nicht ausgefüllt hat. soweit funktioniert das auch. warum hat er aber beim zweiten durchlauf(wenn der kunden seinen bogen erneut aufruft) in der if-abfrage keine werte. also $_POST[pg_result($QueryResult, "fragenr")] == ''. anschliessend füllt er aber beim update die richtigen werte in die db? kann mir jmd helfen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DataStreamWarrior Geschrieben 1. April 2003 Teilen Geschrieben 1. April 2003 HiHo! 1.) Sieht verdächtig nach den berühmt-berüchtigten Kundenzufriedenheitsbögen aus...kann das sein? 2.) Ähm......irgendwie ist noch nicht 100%ig klar, wo genau das Problem liegt. Du willst also den Fragebogen, wenn der Kunde den ein zweites Mal aufruft nur noch mit den Fragen anzeigen, die der Kunde noch nicht beantwortet hat - sehe ich das richtig? Und wenn der Kunde dann den Bogen zum zweiten mal abschickt, ist nix mehr in der Post-Global drin? Oder ist einach nur an der Stelle, die du gerade abfragst (der aktuelle PG-Datensatz) leer? Gruß, DSW Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 2. April 2003 Autor Teilen Geschrieben 2. April 2003 hi DSW, 1.) richtig, es sind die berühmt berüchtigten kundenzufriedenheitsbögen.:marine 2.) Du willst also den Fragebogen, wenn der Kunde den ein zweites Mal aufruft nur noch mit den Fragen anzeigen, die der Kunde noch nicht beantwortet hat - sehe ich das richtig? das siehst du richtig, das funktioniert aber auch bereits. so an dieser stelle, behauptet er, dass folgendes ergebnis leer sei: if($_POST[pg_result($QueryResult,"fragenr") =='') aber an dieser stelle füllt er es in die db ein. mit den richtigen werten. also ist das teil doch nicht leer, oder? $SQLQuery2="UPDATE table SET field=".$_POST[pg_result($QueryResult,"fragenr")]; ist es jetzt besser verständlich? mfg korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DataStreamWarrior Geschrieben 2. April 2003 Teilen Geschrieben 2. April 2003 Hi! Ähm...kann es vielleicht sein, daß die Daten erst im nächsten Durchlauf der While-Schleife eingetragen werden? Weil er kann definitiv nicht sagen, das der Inhalt == '' ist und gleichzeitig die Daten in die DB schreiben - dafür ist der Aufruf ja im Else-Zweig. Oder wo genau liegt das Problem sonst? Gruß, DSW Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 2. April 2003 Autor Teilen Geschrieben 2. April 2003 hi, wie meinst du dass? aber irgendwie kann das doch nicht sein, nehmen wir an, er bekommt 12 fragen und füllt davon nur 10 aus. dann wird er beim absenden auf einen bildschirm geleitet, der ihm die möglichkeit gibt die restlichen fragen noch auszufüllen. somit bekommt er jetzt noch 2 fragen präsentiert. wenn er bei beiden fragen einen wert einträgt, dann hat er keine leeren felder mehr,od? das konstrukt wird doch so durchlaufen, dass er für jede einzelne frage schaut, ob sie einen wert hat oder nicht. wert nein => flag = 1 wert ja => eintrag in db oder hab ich da nen groben denkfehler drin? danke korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DataStreamWarrior Geschrieben 2. April 2003 Teilen Geschrieben 2. April 2003 Originally posted by korea1 hi, wie meinst du dass? aber irgendwie kann das doch nicht sein, nehmen wir an, er bekommt 12 fragen und füllt davon nur 10 aus. dann wird er beim absenden auf einen bildschirm geleitet, der ihm die möglichkeit gibt die restlichen fragen noch auszufüllen. somit bekommt er jetzt noch 2 fragen präsentiert. wenn er bei beiden fragen einen wert einträgt, dann hat er keine leeren felder mehr,od? das konstrukt wird doch so durchlaufen, dass er für jede einzelne frage schaut, ob sie einen wert hat oder nicht. wert nein => flag = 1 wert ja => eintrag in db oder hab ich da nen groben denkfehler drin? danke korea1 Im zweiten Durchlauf hast du vermutlich immernoch den gesamten Fragensatz im ResultSet, oder? Aber als Antworten in $_POST hast du nur noch meinetwegen die zwei Unbeantworteten - somit hast du "alle Felder leer" (die Felder existieren praktisch überhaupt nicht), bis auf die zwei, die der Kunde im zweiten Step ausfüllen musste. Könnte das so hinkommen? greetings, DSW Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 hi, ja das könnte so hinkommen. und was kann ich dagegen tun? mfg korea1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DataStreamWarrior Geschrieben 3. April 2003 Teilen Geschrieben 3. April 2003 Hmmm...warum habe ich nur mit dieser Antwort gerechnet? *g* Also, als mögliche Abhilfen für das Problem fallen mir spontan zwei Möglichkeiten ein: Erstens: Entweder alle schon ausgefüllten Felder als Hidden-Fields übergeben - somit hast du die $_POST-Variable dann auch wieder komplett voll - ist allerdings nicht wirklich effizient (und elegant erst recht nicht). Zweitens: Das ResultSet mit den möglichen Fragen verkleinern. Das halte ich für die elegantere Lösung. Und zwar würde ich hierfür JEDESMAL die möglichen Fragen mit den bereits gegebenen Antworten joinen und dann nur die Fragen ausgeben, bei denen noch keine Antwort drin steht. greetings, DSW Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
korea1 Geschrieben 3. April 2003 Autor Teilen Geschrieben 3. April 2003 damit habe ich angefangen und das funktioniert soweit auch ganz gut. jetzt schieb ich es noch auf den server drauf. wenn sich da nochmal fragen ergeben, werd ich mich hier nochmal melden. soweit schon mal danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.