27.09.2009
Channel php.de ausgewählt, Log vom 27.09.2009
Seite: 1 2 3 > Letzte Seite
Chatlog
Ducki: tritin nervt -_-
der_ulle: schönen guten abend
der_ulle: ist zufällig jmd da der mir ne frage zu php und MSSQL erklären kann?
der_ulle: bzw einer der sich mit MSSQL und PHP auskennst ^^
@gix-: gypsies, tramps and thieves!
obike: Moin zusammen! Ich habe das #php-tutorial durchgearbeitet, war begeistert und wollte es nun ein wenig umschreiben. Nun komme ich nicht weiter und suche hier Hilfe. Ich hab mein Problem einmal hier: http://nopaste.php-quake.net/254001 geschildert. Wäre Klasse wenn mir jemand um diese Uhrzeit helfen könnte :-)
halfdan: obike: ahoi
halfdan: obike: was soll das return am ende?
halfdan: wozu machst du ein return showInfo(..) und danach sleep(2)?
halfdan: wofür machst du überhaupt sleep?
obike: ahoi halfdan
Maffe: !hochlicht myname
+daystalker: *hochlicht* myname myname myname myname myname myname myname myname myname myname myname myname myname myname myname *hochlicht*
obike: das return am ende gibt die fehlermeldung bzw. soll daten ausgeben
obike: das sleep war ein kläglicher versuch den header zu setzen und mit sleet zu verzögern
Nils: obike: Bei der Ausgabe liest du die Werte dann aus $_SESSION?
obike: im template hab ich echo data[Username] z.b. stehen
obike: das template dazu sieht dann so aus: http://nopaste.php-quake.net/254002
Nils: Ich habe mir das Tutorial schon länger nicht mehr angesehen. Welche Variablen deines Scrips landen denn im Template? $ret?
obike: stimmt genau
obike: und $ret ist das array data
Nils: $data['Username'] & Co. existieren aber nicht?
obike: also sie werden nicht angezeigt wenn ich das Formular sende. Wenn ich dann allerdings im Browser auf zurück gehe und das Post nochmal bestätige werden die Daten angezeigt
Nils: Wenn du im Browser auf "zurück" klickst, füllt der das selbständig wieder aus.
obike: ja genau
Nils: Mit den drei "$ret['data'][foo] = $_SESSION['reg'][foo];"-Zeilen unten hast du versucht, die Felder zu setzen?
obike: ja genau das war der plan, aber das funktioniert so leider nicht
Nils: Ok, das musst du früher machen. Im Fehlerfall wird dein Script ja schon frühzeitig abgebrochen (return), dann werden die drei Zeilen gar nicht erreicht.
obike: Die Frage ist nur wo. Ich hab das schon versucht vor return zu schreiben und vor die If-Abfragen. Aber es will trotzdem nicht
Nils: obike: Ich glaube, das musst du etwas tiefgreifender umschreiben.
obike: Oh doch so schlimm? Was muss denn geändert werden?
Nils: Wird momentan das Formular wieder angezeigt, wenn man einen Fehler macht, oder kommt nur eine Fehlermeldung?
obike: Ich hab es so umgeschrieben, dass das Formular angezeigt wird. Vorher kam nur eine Fehlermeldung.
Nils: Wie hast du das gemacht?
obike: Ich hab die Index geändert http://nopaste.php-quake.net/254003 in Zeile 22 z.b. hab ich das aktuelle Template via include geladen.
obike: Also nachdem die error Meldung kommt, wird die aktuelle Seite nochmal geladen.
Nils: Ok, $data ist leer, denn du setzt ja im Fehlerfall $data = array().
Nils: Stattdessen musst du die Daten aus deinem Script wie im Erfolgsfall in $data schieben: $data = $ret['data']
Nils: Wobei ... Moment ... wird $ret in der Index-Datei irgendwo gesetzt oder wird das aus der Include-Datei genommen?
obike: ja $ret wird weiter oben gesetzt: $ret = 1; // speichert den rückgabewert von include, standardwert 1
Nils: Und später dann $ret = include "dein script", nicht wahr?
obike: ja genau
obike: und in der include wird aus $ret ein Array mit den Daten
Nils: Das Problem ist jetzt, dass das $ret aus deinem Script im Fehlerfall nicht überlebt. Im Erfolgsfall wird es per return zurückgegeben und durch "$ret = include ..." auch in der Index-Datei in $ret gespeichert. Im Fehlerfall gibt dein Script aber eine Fehlermeldung zurück, Index-$ret enthält dann nur die Fehlemeldung, die anderen Daten sind futsch.
Nils: *Fehlermeldung
obike: Hmm das macht Sinn
obike: Also muss ich das Template in der Include laden, was dazu aber umgeschrieben werden muss, oder?
Nils: Nein, du musst das Template nicht in der Include laden.
obike: Ne aber warte mal...
obike: warum werden die Daten dann aber angegeben wenn ich auf "zurück" gehe?
obike: Dann wird die Fehlermeldung angezeigt UND die Daten im Template
Nils: Da hat PHP nichts mit zu tun. Das macht der Browser ganz allein.
Nils: *Das
obike: Ok das macht dann auch Sinn :) Hast du eine Idee wie ich das lösen kann?
Nils: Du könntest das ganze so umschreiben, dass im Fehlerfall nur ein bestimmtes Feld von $ret zusätzlich gesetzt wird, $ret["error"] etwa . Und wenn $ret["error"] gesetzt ist, dann lädst du error.tpl entsprechend.
Nils: Damit würdest du auch das unsichere Laden anhand von $_GET-Werten los.
Nils: Und andere Includes, bei denen die bisherige Fehlerbehandlung reicht, funktionieren weiter wie gewohnt. Allerdings musst du eben alle return-Anweisungen anpassen.
obike: Ich hab gerade keine Idee wo ich das Unterbringen soll. Muss ich dann nach der return anstatt der Fehlermeldung 'fooBar', $ret[error] = 'fooBar' schreiben?
Nils: Du musst statt einer Fehlermeldung (String) ein angepasstes $ret-Array zurückgeben.
Nils: Und du musst die Sonderbehandlung eines $ret-Arrays mit Fehlermeldung im Templatesystem einbauen
obike: Das mein ich ja, glaub ich. Also jetzt hab ich ja z.B. "return 'Hier ist mein Fehler'; Daraus mach ich dann "return $ret[error] = 'fooBar';" und dann die Sonderbehandlung
Nils: So ähnlich, ja: $ret["error"] = "fooBar"; return $ret;
Nils: Und die Sonderbehandlung könnte so aussehen: http://nopaste.php-quake.net/254006
obike: hehe ich wollte gerade http://nopaste.php-quake.net/254007 pasten :)
Nils: Die $_GET['section']-Includes musst du loswerden, die sind unsicher.
obike: bei mir fehlt aber noch if
obike: Ich kenne aber keine andere Möglichkeit, die Seiten zu include ausser mit der GET-Methode. Also dass das Template je nach Adresseingabe im Browser geladen wird.
obike: Das meintest du doch, oder?
Nils: Die Not, die dich zu den $_GET-Includes getrieben hat, sollten wir mit der "Ein Fehler ist aufgetreten, der das System aber nicht am Laden des Templates hindern soll
Nils: "-Sache gelindert haben. (Zeilenumbruch mitkopiert ...)
Seite: 1 2 3 > Letzte Seite
Zurück zur ÜbersichtWebseiten Tipps
Hier gehts zum jquery Tutorial.
Meine schwarze Webseite: iPhone4Spiel
