Formular & frame (frameset sprengung)
Daniel
- php
Ahoi alle,
ja ich weiß frames sind böse, ich will sie ja nicht verwenden aber ich muss.
so jetzt zum problem, ich habe ein frameset. in einem frame ist ein
formular. wird auf senden geklickt werden die eingaben geprüft. sind die
eingaben fehlerhaft wird das formular mit den eingegebenen daten
gefüllt und eine (oder mehrere) Fehlermeldung(en) ausgegeben. sind die
eingaben korekt soll das framset gesprengt werden und ein anderes
geladen werden.
AFAIK kann mit header() das frameset nicht geprengt werden. dies geht
nur mit JS oder evt. einem "normalen" link. JS scheidet aus, und das
mit dem Link wäre nur als notlösung zu gebrauchen, sollte nach
möglichkeit automatisch gehen. ein form target="_top" scheidet wegen
evt. fehlerhafter eingabe aus.
kann mir vll. jmd weiterhelfen?
MfG
Ahoi nochmal,
hab mich jetzt dazu entschlossen JS zu verwenden. allerings sprengt es
mir das ganzte frameset, und nichtnur das frameset im frameset. sprich
ich habe in einem frame eines framesets ein zweites frameset, nur dieses
zweite frameset soll gesprengt werden. sowie bei nicht aktiviertem JS
ein link verhanden sein. das mit dem link funktioniert. also ich habe:
seite1.html:
<frameset>
<frame name="kopf" src="kopf.html">
<frameset>
<frame name="navigation" src="navigation.php">
<frame name="anzeige" src="seite2.html">
</frameset>
</frameset>
seite2.html
<frameset>
<frame name="menue" src="./menue.html">
<frame name="ansicht" src="./ansicht.html">
</frameset>
und das seite2 frameset soll gesprengt werden. da dieses sich selbst
im eigenen frame ansicht wieder aufruft.
hoffe das problem ist klar.
MfG
Hi,
allerings sprengt es
mir das ganzte frameset, und nichtnur das frameset im frameset.
parent.location.href bzw. parent.location.replace()
Gruß, Cybaer
Ahoi Cybaer,
parent.location.href bzw. parent.location.replace()
^^^^
damit hab ichs hinbekommen. es funktioniert soweit auch wie es soll, hab
auch nen noscript teil der nen link setzt zum Frame sprengen.
Allerdings bekomme ich in die konsole 3mal diese JS fehlermeldung:
Fehler: dialog has no properties
Woran könnte dies liegen?
<script type="text/javascript">
if (parent != self)
parent.location.href = "seite2.php?ok=1";
</script>
<noscript>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<a href="ikm_kontakte.php?csv=1" target="_parent">CSV-Datei mit Kontaktdaten</a>
</body>
</html>
</noscript>
bekomme die meldung sowohl bei deaktiviertem als auch aktiviertem JS.
MfG
Hi,
Allerdings bekomme ich in die konsole 3mal diese JS fehlermeldung:
Fehler: dialog has no properties
Woran könnte dies liegen?
K.A. =:-)
BTW:
<noscript>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<a href="ikm_kontakte.php?csv=1" target="_parent">CSV-Datei mit Kontaktdaten</a>
</body>
</html>
</noscript>
Das ist aus mehreren Gründen kein gültiges HTML (selbst wenn man nicht der Meinung ist, das W3C wäre der oberste Tora-Bewahrer ;-)). U.a. weil die Tags HEAD und NOSCRIPT verschachtelt sind.
Und BTW2: Warum überhaupt ein Link, wo doch PHP (und damit Page-Redirection) zur Verfügung steht?
Gruß, Cybaer
Ahoi Cybaer,
Und BTW2: Warum überhaupt ein Link, wo doch PHP (und damit Page-Redirection) zur Verfügung steht?
weil man mit php keine frames sprengen kann!?
wie muss ich den noscript teil denn dann einfügen? allgemein nach dem
<head> oder das ganze <script><noscript> in den body? dachte immer das
muss in den kopf.
MfG
Hi,
Und BTW2: Warum überhaupt ein Link, wo doch PHP (und damit Page-Redirection) zur Verfügung steht?
weil man mit php keine frames sprengen kann!?
Das ist ggf. vorher schon mit TARGET gesprengt. Mittels PHP kannst Du dich dann aber entscheiden, ob die neue Seite solo kommt oder wieder ein Frameset ist.
wie muss ich den noscript teil denn dann einfügen? allgemein nach dem
<head> oder das ganze <script><noscript> in den body? dachte immer das
muss in den kopf.
NOSCRIPT ist im HEAD nicht erlaubt - funktioniert aber bislang trotzdem.
Also SCRIPT in den HEAD, NOSCRIPT in den BODY.
Gruß, Cybaer
Ahoi Cybaer,
Das ist ggf. vorher schon mit TARGET gesprengt. Mittels PHP kannst Du dich dann aber entscheiden, ob die neue Seite solo kommt oder wieder ein Frameset ist.
wenn die eingabe aber nicht korekt ist fällt das mit der fehlermeldung
schwer, die muss dann über 2 seiten weitergegeben werden. oder die
eingabe muss über 2 seiten weitergegeben werden und aufgrund der
vielen daten und überhaupt und sowieso ist das mit dem link die beste
lösung. In meinen augen zumindest. du kannst dies, da ich die ganze
größe des projekts hier nicht ausgebreitet habe, wahrscheinlich aber
nicht so ganz nachvollziehen. So wie es jetzt ists ist es OK, vielen
dank für deine hilfe, werd das mit dem noscript noch korrigieren und
dann ists komplet, dann heißt es für mich Feierabend.
MfG
Ahoi Cybaer,
Allerdings bekomme ich in die konsole 3mal diese JS fehlermeldung:
Fehler: dialog has no properties
Woran könnte dies liegen?K.A. =:-)
hab den fehler gefunden, da ich, nach dem Framesprengen eine CSV datei
automatisch zum DL anbiete per:
<meta http-equiv="refresh" content="0 url=daten.csv">
die fehlermeldung taucht nur auf wenn man dort auf abbrechen klickt,
dann aber 3mal.
gibt es eine andere möglichkeit dies zu automatisieren? evt sogar ohne JS?
MfG
Hi,
gibt es eine andere möglichkeit dies zu automatisieren? evt sogar ohne JS?
Download/Anzeige per PHP.
Davon abgesehen: Vielleicht wäre es sinnvoller, eine Seite zwischenzuschalten, die dem User die Wahl läßt?
Gruß, Cybaer
Ahoi Cybaer,
Download/Anzeige per PHP.
ich soll nach Download/Anzeige im manual suchen? oder wie? find da nix vernüftiges
Davon abgesehen: Vielleicht wäre es sinnvoller, eine Seite zwischenzuschalten, die dem User die Wahl läßt?
sinnvoller in meinen augen auch, vorallem liese es sich einfacher
umsetzten. aber die vorgabe lautet automatisch. deshalb leite ich nach
erfolgreicher eingabe und speicherung des Formulars mit einer get
variable weiter. diese bewirkt bei der entsprechenden seite die
ausgabe des script und noscript teiles. JS bzw der link aus dem
noscript teil sprengen dann das frameset um eins auf damit es so
aussieht wie es soll außerdem übergeben sie eine 2te get variable
diese "verursacht" die ausgabe des meta-tags welcher das DL "startet",
also den DL dialog halt (öffnen/speichern/abbrechen) Da hat der User
ja die Wahl, aber dies soll eben automatisch kommen, das problem die
datei ist eigentlich ein php-script, welches sich als CSV ausgiebt und
auch solchen Code zurück giebt. sprich die datei ist nicht statisch.
MfG
Hi,
Download/Anzeige per PHP.
ich soll nach Download/Anzeige im manual suchen?
Nein, ein PHP-Script schreiben, das die CSV-Daten als Download schickt oder im Browser anzeigt (wo der Surfer es dann sehen und ggf. per "Datei sichern" abspeichern kann) - wie Du möchtest.
Download mittels PHP: s. z.B. Thread weiter unten ("Probleme mit Download-Script")
Anzeige: Content-Header "text/plain"
das problem die
datei ist eigentlich ein php-script, welches sich als CSV ausgiebt und auch solchen Code zurück giebt. sprich die datei ist nicht statisch.
Das ist kein "Problem", das ist die "halbe Miete"! :-)
Gruß, Cybaer
Ahoi Cybaer,
Das ist kein "Problem", das ist die "halbe Miete"! :-)
das problem ist das man auf dieses script auch anderweitig zugreifen
kann um einen CSV-Export zu machen, ich habe kein problem mit dem DL
script das funktioniert alles einwandfrei. das problem ist das wenn beim
per meta gestarteten DL-dialog der user auf abbrechen klickt 3mal diese
Fehlermeldung in der JS-Konsole auftaucht, und ich weis nicht warum :(
Öffnet oder speichert der user die datei kommt die fehlermeldung nicht
MfG
Hi,
das problem ist das man auf dieses script auch anderweitig zugreifen
kann um einen CSV-Export zu machen,
Und? Dieses zu unterbinden bedarf es *prinzipiell* der Verwendung anderer Techniken, wie z.B. Sessions.
Fehlermeldung in der JS-Konsole auftaucht, und ich weis nicht warum :(
Und sollte ein PHP-Downloadscript diesen Fehler nicht bringen, braucht es dich auch nicht mehr zu interessieren. 8-)
Ergo: Mach was Du willst, aber nöl nicht rum! ;)
Gruß, Cybaer
Ahoi Cybaer,
Und? Dieses zu unterbinden bedarf es *prinzipiell* der Verwendung anderer Techniken, wie z.B. Sessions.
glaub du hast das falsch verstanden. Das script kann nur auf 2 arten aufgerufen werden.
1. automatisch nach speicherung der Formular eingaben
2. Selbstständig über einen link
Über Session wird der SQL filter gesetzt.
Und sollte ein PHP-Downloadscript diesen Fehler nicht bringen, braucht es dich auch nicht mehr zu interessieren. 8-)
Ergo: Mach was Du willst, aber nöl nicht rum! ;)
das ist doch in PHP, und da ist auch kein JS. das einzigste stück JS
ist die frameset sprengung. ich versteh nicht warum in der JS-Konole
ein fehler auftaucht obwohl gar kein JS code auf der seite ist.
das hier:
Fehler: dialog has no properties
taucht 3mal in des JS konsole auf. (vom FF) aber nur wenn man auf
abbrechen klickt, aber da ist niergendwo JS-code. das ist ja das was
mich verwirrt. gibts im IE eigentlich auch ein JS-Konsole? und wie
rufe ich diese auf?
MfG
Hi,
das ist doch in PHP,
Das mit META REFRESH,oder warst Du schon weiter?
ein fehler auftaucht obwohl gar kein JS code auf der seite ist.
Mozilla arbeitet intern auch mit JS. Ggf. ist es ein Chrome-Fehler.
mich verwirrt. gibts im IE eigentlich auch ein JS-Konsole?
Nein.
Gruß, Cybaer
Ahoi Cybaer,
das ist doch in PHP,
Das mit META REFRESH,oder warst Du schon weiter?
per meta refresh rufe ich das script auf
dieses script erstellt anhand der per Session übergebenen filtereinstellungen aus den DB daten eine CSV-Datei in sich selbst. also anstatt eines
echo "<html>"
ein einfaches
echo "spalte1;spalte2;spalte3;\n";
per header änder ich dann den content typ:
header("Content-Type: text/comma-separated-values");
header("Content-Disposition: attachment; filename="kontakte.csv"");
da kann ich ja dann schlecht noch ein header("Location: einbauen, oder?
ein fehler auftaucht obwohl gar kein JS code auf der seite ist.
Mozilla arbeitet intern auch mit JS. Ggf. ist es ein Chrome-Fehler.
gibts nicht ne seite wo man nachschauen kann was die fehlermeldungen
in der JS-Konsole des FF bedeuten?
mich verwirrt. gibts im IE eigentlich auch ein JS-Konsole?
Nein.
schade, da hätt ich ja sonst jetzt überprüfen können obs am FF liegt.
MfG
Hi,
echo "spalte1;spalte2;spalte3;\n";
per header änder ich dann den content typ:
"Dann"? Du meinst "vorher"?!
header("Content-Type: text/comma-separated-values");
header("Content-Disposition: attachment; filename="kontakte.csv"");
Wobei es hier vom Browser abhängt, was er damit macht. Ist also kein "echtes" Downloadscript sondern eher ein "mach was du willst"-Script. ;-)
da kann ich ja dann schlecht noch ein header("Location: einbauen, oder?
Das wäre als sichere Alternative zum META REFRESH vorzuziehen.
Aber darum geht es ja schon garnicht mehr ...
gibts nicht ne seite wo man nachschauen kann was die fehlermeldungen
in der JS-Konsole des FF bedeuten?
K.A. - ich habe so selten welche. ;)
schade, da hätt ich ja sonst jetzt überprüfen können obs am FF liegt.
Liegt bestimmt an ihm - nur: was nützt dieses Wissen/diese Vermutung? =;-)
Der IE zeigt seine JS-Fehler ja ggf. auch an. Aber das itja hier nicht das Thema ...
Gruß, Cybaer
Ahoi Cybaer,
"Dann"? Du meinst "vorher"?!
ja türlich.
header("Content-Type: text/comma-separated-values");
header("Content-Disposition: attachment; filename="kontakte.csv"");Wobei es hier vom Browser abhängt, was er damit macht. Ist also kein "echtes" Downloadscript sondern eher ein "mach was du willst"-Script. ;-)
also bei mir kommt sowohl im IE als auch im FF die frage:
öffnen/speichern/abbrechen?
Das wäre als sichere Alternative zum META REFRESH vorzuziehen.
zum starten des DL ok, allerdings funktioniert dann das mit dem
frameset nichtmehr schließlich kann ich von der CSV keine
weiterleitung auf frameset tätigen
Liegt bestimmt an ihm - nur: was nützt dieses Wissen/diese Vermutung? =;-)
ich weis das es nicht an mir liegt und ich bin glücklich und ignorier es einfach.
MfG
Hi,
also bei mir kommt sowohl im IE als auch im FF die frage:
Fein. Nur gut, daß alle User ihre Browser so eingestellt haben wie Du. Da gibt es auch kein abweichendes Verhalten. ;)
Na ja, wir waren ja ohnehin beide der Meinung, daß dem User mehr Wahlfreiheit zugestanden werden sollte, als es dein Chef vorgesehen hat ... :-)
Gruß, Cybaer
Hi,
das hier:
Fehler: dialog has no properties
Gib doch bitte mal die komplette Fehlermeldung an (Rechtsklick auf die Meldung, Copy)
bzw. betrachte die angegebene Script-Url.
Fängt die mit chrome: an? Dann ist das was browser-internes.
Wenn es aber eine von Deinen URLs ist, klick doch mal drauf - dann kommt ein Quelltextfenster, in dem die fehlerhafte Stelle markiert ist.
cu,
Andreas
Ahoi MudGuard,
Gib doch bitte mal die komplette Fehlermeldung an (Rechtsklick auf die Meldung, Copy)
*gnarf* das entsprich wohl einfach anklicken und strg+c, oder? das hab
ich gemacht. da steht nicht mehr. das einzigste was da noch dabei ist
ist ein rotes achteck mit einem weisen i darin
___
/ \
| i | Fehler: dialog has no properties
\___/
und das ganze 3mal. wenn da mehr stehen würde, würd ich vll auch
selber drauf kommen. aber da steht nicht mehr und nicht weniger.
Das sollte also deine fragen beantworten, da steht weder ein verweis
auf eine meiner seiten noch chrome: gibts vll irgendein plugin oder so
welches da bei der fehlerfindung helfen könnte? es ist keines
installiert, nur stnd FF version keine ahnung, habs nicht selber
installiert, weis nur das keine erweiterung mitinstalliert, bzw.
zusätzlich installiert wurde.
MfG
Hi,
AFAIK kann mit header() das frameset nicht geprengt werden. dies geht
nur mit JS oder evt. einem "normalen" link.
"Sprengen" kannst Du mit einer TARGET-Angabe im FORM. Ansonsten halt nur mit JS. Aber wenn JS vorhanden ist, kannst Du ja auch vorab mit JS die Korrektheit der Eingaben überprüfen und erst dann (mittels TARGET) "sprengen", wenn sie falsch waren. 8-)
Wären nur noch die, die JS ohnehin nicht haben *und* das Formular nicht korrekt ausfüllen konnten. >;->
Gruß, Cybaer
Ahoi Cybaer,
Wären nur noch die, die JS ohnehin nicht haben *und* das Formular nicht korrekt ausfüllen konnten. >;->
die sind kein problem da das mit php geprüft wird.
MfG
Hi,
Wären nur noch die, die JS ohnehin nicht haben *und* das Formular nicht korrekt ausfüllen konnten. >;->
die sind kein problem da das mit php geprüft wird.
Schon klar. Aber die bekämen dann ein bereits freigesprengtes Formular zwecks Neueingabe. Aber da könnte man ggf. auch was basteln (z.B. PHP-Überprüfung und dann ggf. weiterleiten auf ein Frameset mir dem Eingabeformular).
Gruß, Cybaer