Forum

Moderiert von: stefan, spinne
Forum Index
Support
     Module
     Anypage-Geplänkel...
Hilfe anzeigen
Hilfe anzeigen

Autor Druckerfreundliche DarstellungAnypage-Geplänkel...
Gast
Unregistrierter Benutzer
Geschrieben: 19.01.2007 23:33

Ich fighte gerade mit einer alten PHP-Seite, die ich mittels ANYPAGE übernehmen möchte. Es funktioniert FAST alles (zumindest auf den ersten Blick) - bis auf das:

WARNING [8] Undefined index: PB_OK
FOUND IN [system/anypage/functions_center.php(104) : eval()'d code]
FOUND AT 26

In der Zeile 26 meiner Seite steht folgender Text:
if ($_POST["PB_OK"])

Und jetzt muss ich vermutlich etwas ausholen...
Meine alte PHP-Seite hat von der Struktur her SO ausgesehen:

<HTML>
<HEAD>
</HEAD>
<BODY>
<P>blablabla<P>
<?php .....

?>
<p>blablabla<P>
<form action="gleiche Seite" method="post">
Text & Felder
<p><input type="submit" value=" OK " name="PB_OK">
</FORM>
</BODY>
</HTML>


In der Form gibt es eine Unmenge von Feldern, die inhaltlich wie formell geprüft werden. Wird der Submit-Button in der Form gedrückt, dann hat die Seite sich selbst aufgerufen & mit dem Teil, der jetzt nicht mehr mag, erkannt ob sie von sich selbst (durch den gedrückten Button) angesurft wurde - oder ob man die jungfräuliche Maske besucht. Abhängig vom Zustand werden 1) die Prüfungen durchgeführt und 2) ein Satz in eine Tabelle geschrieben.

Kann es sein, dass dieses Konstrukt unter ANYPAGE nicht mehr funktioniert? Wie könnte ich es eleganter machen? Mir ist klar dass dies vermutlich ziemlich chaotisch wirkt für einen Profi.

Warum hat der PHP-Codeteil der Seite ein Problem mit dem PB_OK-Element, während sämtliche andere Felder ebenfalls mit $POST abgefragt werden - und nicht angemeckert werden?

Wichtig ist in jedem Fall, dass der Anwender über Eingabefehler informiert wird - entweder auf der Seite (habe derzeit ein Feld, welches ich nur herzeige wenn die Anzahl der Fehler > 0 ist) oder mittels eines Popup-Fensters; das wäre mir gleich. Die bereits eingegebenen Werte sollten nicht verloren gehen (oder via mind. Mausklick wieder herstellbar sein).

Danke für Eure Tipps,
Boby
[addsig]

[ Diese Nachricht wurde bearbeitet von: Boby am 19.01.2007 23:36 (Originaldatum 19.01.2007 23:33) ]

Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 20.01.2007 07:17



Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 20.01.2007 12:50

Hallo Stefan,
an das hätte ich auch schon gedacht...aber auch wenn ich den Button zusätzlich zu NAME="PB_OK" auch noch ein ID="PB_OK" spendiere ändert sich nichts.

Zudem ist die Meldung "undefined index" - und nicht (wie damals) "undefined variable".

Ich könnte mir vorstellen, dass es dadurch passiert dass der PHP-Block (der ja nur einen Teil der HTML-Seite darstellt, die in ANYPAGE abgebildet ist) keine Referenz auf die "außerhalb des PHP-Blocks" liegende FORM hat. Andererseits müsste dann aber der Fehler bei ALLEN Formularfeldern kommen (ca. 30 Stück) - aber die besagte Meldung ist das einzige...

Vielleicht baue ich die Seite komplett um - und teile den Formular-Teil vom funktionalen Rest der jetzigen Seite...

Trotzdem würde ich den Fehler gerne verstehen...

Ciao,
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 20.01.2007 15:33

ich kenne nicht den code der seite aber nur mal so bemerkt.

$a = $wert;

führt zu "undefined variable".

$a = $wert['test'];

führt zu "undefined index"

"inhaltlich" ist das die selbe situation du versuchtst einen wert zu holen der nicht da ist ob dieses ein index einer variablen oder die variable selbst ist ädert nur etwas an der meldung aber nicht an der tatsache

[OPN CODE ERZIEHUNG]

OPN Coder nutzen nicht

$_POST["PB_OK"]

sondern

$_POST['PB_OK']

ist schneller und PB_OK werd nicht versucht als variable genutzt zu werden

[/OPN CODE ERZIEHUNG]

Aber wie gesagt evt. ist es einfacher mal da den code zusehen...

ob in oder ausserhalb anypage kann sofern du globale arrays nutzt nicht die rolle spielen.


Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 20.01.2007 23:42

Danke für die Nachhilfe
Ich habe die Seite jetzt komplett überarbeitet; alle Anführungszeichen auf Hochkommas umgebaut und die angemeckerten Variablen mit einem ISSET gecheckt bevor ich darauf zugreife und nicht belegte Variablen vorab mit einem Initialwert versehen. Weiters steckt jetzt alles in einem PHP-Code und die Seite wird dynamisch aufgebaut (mittels ECHOs). Offenbar prüft das OPN-Framework eine Menge...

ABER: Jetzt sind die Fehler weg!!!

Schaut gut aus - ich habe jetzt nur mehr ein Problem:
1) Der Anwender füllt Felder aus & klickt auf "OK"
2) Die Seite ruft sich selbst auf & gibt Fehlmeldungen aus (das Formular wird nicht mehr angezeigt - steckt in einem ELSE-Zweig, wenn keine Fehler gefunden wurden)
3) Ich biete in diesem Fall einen Link "Zurück" an, hinter dem folgendes liegt: javascript:history.back()

Das hat bisher (PHPNUKE) immer geklappt - der User landete wieder auf der Maske & hat die Felder mit seinen Werten noch immer befüllt und brauch nur mehr den Fehler ausbessern.

Mit OPN sitzt er wieder vor der leeren Maske - und das ist bei dieser Anzahl von Feldern wirklich lästig, wenn man sich da wo vertippt.

Gibt es eine andere Möglichkeit, die eingegebenen Werte nicht wieder verschwinden zu lassen?

Ciao,
Boby

P.S.: Das ist nämlich ein Verhalten von Websites, das mich zur Weißglut treibt...
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 21.01.2007 08:11

das kannst du nur so sauber umgehen in dem du die werte dann in einer form setzt (hidden felder) und ne submit statt dem einfachen link machst und eben beim formular diese als default setzt


Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 28.01.2007 01:08

YUCK! Ich habe auf meiner Form 43 Felder - geht's wirklich nicht einfacher?

Vor allem - es ist vom Typ her so ziemlich alles vertreten:
Input-Fields, Drop-Down-Listen, Checkboxen und Radio-Button.

Bei Input-Feldern ist mir die Übernahme der Werte noch klar - da streue ich fix bei VALUE= den mittels $_POST übergebenen Wert ein. Bei Drop-Downlisten entscheidet aber ein "SELECTED"-Tag beim Eintrag, welcher Eintrag als "ausgewählt" ist - und bei den Checkboxen ist es (glaube ich) der Hinweis "CHECKED". Den Zustand habe ich nach dem Submit ja nicht mehr, oder? Weiß ich ob die Checkbox Nr. 7 "checked" war? Oder kann ich nur anhand des übergebenen Wertes die Maske wieder rekonstruieren?

Danke,
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 28.01.2007 21:57

naja alternativ müsstest du mit sessions arbeiten, auch nicht einfacher. natürlich kannst du das dirch die übergebenen werte rekonstruieren. kann natürlichsein wenn du multi select felder hast auch array auswerten must. geht aber.

andere wege die immer gehen würden gibt es da nicht wirklich. bei so viel werten wird aber dann häufuger mit sessions gearbeitet. ist dann aber nicht ganz so einfach.


Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 29.01.2007 00:03

Naja, so gut kenne ich mich nun auch wieder nicht aus...
Gäb's irgendwie die Möglichkeit die Fehler in einem Popup-Fenster anzuzeigen & die submittende Form unberührt zu lassen?
Oder muss ich da schon zu Javascript greifen?

Falls es nicht anders geht, muss ich die Felder halt einzeln abgreifen. Leider ist die Seite schon jetzt sehr unübersichtlich (1.450 Zeilen lang) - und wird damit nicht wirklich kürzer...

Ciao,
Boby
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
sortieren nach

Hilfe anzeigen
Hilfe anzeigen
Vorheriges Thema:  Mitgliederliste
Nächstes Thema:  Pdf-Artikel hängt an einem Bild

Gehe zu:

Benutzername:
 
Sicherheits-Code
Sicherheits-Code
Neu laden