Funktionsfrage zu Per PHP-Script ausgewertete bzw. bearbeitete Daten in aufrufender HTML Seite anzeigen lassen.
Mahlzeit Gemeinde und danke vorab für die Hilfe.
Situation/Frage 1
Ich scripte gerade an einer Seite welche Daten als Diagramm auswertet.
Programmablauf ist: Ich übergebe diverse Nutzereingaben, per $_Post in einer Session an ein PHP-Script.
In dem PHP-Script werden diese Daten dann mittels Datenbankzugriff ausgewertet und es wird ein
Diagramm erstellt. Dazu nutze ich phplot! Funktioniert auch soweit.
Allerdings hätte ich gern, dass das Diagramm in der aufrufenden HTML Seite angezeigt wird.
funktioniert leider nicht. Im Prinzip soll die PHP-Seite nicht angezeigt werden, was sie aber
unverständlicherweise macht.
Wenn ich das PHP-Script "getdata.php" testweise im html-code includiere, wird auch wieder
ein neues Fenster geöffnet.
Situation/Frage 2
In dem PHP-Script habe ich Fehlerbehandlungen, welche fehlerhafte Eingaben abfängt.
z.B. sowas:
Wenn ich mit fehlerhaften Eingaben die Ausgabe provoziere, öffnet sich kein Popup sondern
der Quellcode wird in einem neuen Fenster angezeigt.
Habt Ihr nen Rat/Tip zu den beiden Problematiken??
Situation/Frage 1
Ich scripte gerade an einer Seite welche Daten als Diagramm auswertet.
Programmablauf ist: Ich übergebe diverse Nutzereingaben, per $_Post in einer Session an ein PHP-Script.
In dem PHP-Script werden diese Daten dann mittels Datenbankzugriff ausgewertet und es wird ein
Diagramm erstellt. Dazu nutze ich phplot! Funktioniert auch soweit.
Allerdings hätte ich gern, dass das Diagramm in der aufrufenden HTML Seite angezeigt wird.
<form target="_self" method="post" action="getdata.php" >
.
.
.
<input type="submit" value="Diagramm erstellen!" name="submit" />
funktioniert leider nicht. Im Prinzip soll die PHP-Seite nicht angezeigt werden, was sie aber
unverständlicherweise macht.
Wenn ich das PHP-Script "getdata.php" testweise im html-code includiere, wird auch wieder
ein neues Fenster geöffnet.
Situation/Frage 2
In dem PHP-Script habe ich Fehlerbehandlungen, welche fehlerhafte Eingaben abfängt.
z.B. sowas:
<?
if(!checkdate($EZMon1,$EZTag1,$EZJahr1))
{
echo "<script language=\"JavaScript\">
<!--
alert(\"Bitte noch einmal ueber das Enddatum nachdenken\");
window.location.href=\"dia.html\";
//-->
</script>";
}
?>
Wenn ich mit fehlerhaften Eingaben die Ausgabe provoziere, öffnet sich kein Popup sondern
der Quellcode wird in einem neuen Fenster angezeigt.
Habt Ihr nen Rat/Tip zu den beiden Problematiken??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 219248
Url: https://administrator.de/contentid/219248
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
9 Kommentare
Neuester Kommentar
Guten Morgen,
zur Frage 1: Dann musst du eine JS Datei aufrufen, die die Daten per PHP verarbeiten lässt und diese dynamisch ins aufrufende HTML einbettet. So ist die Funktion wie designt. Du gibst dem Gerät nur die falschen Befehle für das, was du wünschst.
Zur Frage 2:
Gleiches Problem teste das ganze einfach mal mit einer HTML Datei, so dass das JS direkt beim Aufruf das Pop Up provoziert - wobei ich das persönlich eher als einfache Ausgabe generieren würde.
Viel Erfolg.
Christian
certified IT
zur Frage 1: Dann musst du eine JS Datei aufrufen, die die Daten per PHP verarbeiten lässt und diese dynamisch ins aufrufende HTML einbettet. So ist die Funktion wie designt. Du gibst dem Gerät nur die falschen Befehle für das, was du wünschst.
Zur Frage 2:
Gleiches Problem teste das ganze einfach mal mit einer HTML Datei, so dass das JS direkt beim Aufruf das Pop Up provoziert - wobei ich das persönlich eher als einfache Ausgabe generieren würde.
Viel Erfolg.
Christian
certified IT
Hallo FunkerVogt,
das ist für deine beiden Fälle ein Fall für Ajax. Du übermittelst z.B. mit jQuery und der Funktion post() die Eingabedaten an dein PHP-Script, welches dann die Daten an dein JavaScript in der HTML-Seite zurückgibt, wo du diese Daten dann verarbeitest und darstellst.
Ich hatte hier mal ein einfaches Beispiel dazu gepostet.
Alternativ könntest hier auch mit einem iFrame arbeiten welches nur das zurückgegebene PHP-Dokument in der HTML-Seite darstellt.
Grüße Uwe
das ist für deine beiden Fälle ein Fall für Ajax. Du übermittelst z.B. mit jQuery und der Funktion post() die Eingabedaten an dein PHP-Script, welches dann die Daten an dein JavaScript in der HTML-Seite zurückgibt, wo du diese Daten dann verarbeitest und darstellst.
Ich hatte hier mal ein einfaches Beispiel dazu gepostet.
Alternativ könntest hier auch mit einem iFrame arbeiten welches nur das zurückgegebene PHP-Dokument in der HTML-Seite darstellt.
Grüße Uwe
Hallo
PAPERLAPAP !
Drück erst einmal alles Javascript (ja auch JQuery und Konsorten) __in die Tonne__ !
Als erstes muss es so funktionieren und __danach__ kann man es mit JS ausschmücken !
Und jetzt die wichtigste Frage !
WAS MACHT "getdata.php" ?
Erzeugt es die Grafik und gibt sie aus ODER wird die Grafik als Datei gespeichert !?
Oder doch was anderes !?
Trenne deinen Code !
Überprüfe erst die Eingaben und erst wenn diese Korrekt sind gib sie an die nächste Datei weiter.
Du hast die PHP-Datei doch im "action"-Attribut des Formulars explizit angegeben, also wird sie auch aufgerufen !
Wenn die PHP-Datei die Grafik auch gleich anzeigt und sonst keine anderen Ausgaben (wie z.B. Hinweise auf falsche Eingaben) generiert, kannst du sie auch direkt als Bild einbinden:
Allerdings musst du dann die Daten entweder per GET an die Datei weitergeben
Und wenn die Grafik z.B. unter dem Formular angezeigt werden soll, könnte das in etwa so aussehen:
Das Formular ruft sich selber auf und übergibt die eingegebenen Daten so per POST an sich selber.
Der nachfolgende PHP-Code prüft ob die POST-Variable des "submit"-Buttons vorhanden ist und führt erst dann den restlichen PHP-Code aus.
So wird sichergestellt, das beim ersten aufrufen des Formulars - es existieren noch keine POST-Daten - nicht fälschlicherweise versucht wird eine Grafik zu erzeugen, mit Daten und Variablen die es noch nicht gibt, denn das würde jede Menge Fehlermeldungen produzieren.
~Arano
PAPERLAPAP !
Drück erst einmal alles Javascript (ja auch JQuery und Konsorten) __in die Tonne__ !
Als erstes muss es so funktionieren und __danach__ kann man es mit JS ausschmücken !
Und jetzt die wichtigste Frage !
WAS MACHT "getdata.php" ?
Erzeugt es die Grafik und gibt sie aus ODER wird die Grafik als Datei gespeichert !?
Oder doch was anderes !?
Trenne deinen Code !
Überprüfe erst die Eingaben und erst wenn diese Korrekt sind gib sie an die nächste Datei weiter.
Allerdings hätte ich gern, dass das Diagramm in der aufrufenden HTML Seite angezeigt wird.
[...]
funktioniert leider nicht. Im Prinzip soll die PHP-Seite nicht angezeigt werden, was sie aber unverständlicherweise macht.
Wieso unverständlicherweise ?[...]
funktioniert leider nicht. Im Prinzip soll die PHP-Seite nicht angezeigt werden, was sie aber unverständlicherweise macht.
Du hast die PHP-Datei doch im "action"-Attribut des Formulars explizit angegeben, also wird sie auch aufgerufen !
Wenn die PHP-Datei die Grafik auch gleich anzeigt und sonst keine anderen Ausgaben (wie z.B. Hinweise auf falsche Eingaben) generiert, kannst du sie auch direkt als Bild einbinden:
<img src="getdata.php">
Allerdings musst du dann die Daten entweder per GET an die Datei weitergeben
<img src="getdata.php?wert1=$_POST['wert1']&wert2=$_POST['wert2']">
oder in einer PHP-Session zwischenspeichern !Und wenn die Grafik z.B. unter dem Formular angezeigt werden soll, könnte das in etwa so aussehen:
<html>
<head>
<title>Seitentitel</title>
</head>
<body>
<form action="dia.php" method="POST">
<input type="text" name="wert1" value="">
<input type="text" name="wert2" value="">
<input type="submit" name="gfxGenBtn" value="Grafik generieren">
</form>
<?php
// wurden Daten vom Formular per Post übergeben ?
if( isset($_POST['gfxGenBtn]) )
{
// hier sämtliche Eingaben auf Gültigkeit überprüfen
// hier sämtliche Eingaben auf Gültigkeit überprüfen
// hier sämtliche Eingaben auf Gültigkeit überprüfen
// man könnte eine eigene PHP-Funktion dafür schreiben die an dieser Stelle aufgerufen wird,
// dann bleibt der Haupt-Code übersichtlicher ;)
// ggf. die Daten aus den $_POST-Variablen in die $_SESSION-Variablen kopieren
// wenn alle Eingaben gültig sind
if( FALSE===$inputError )
{
// per Session
echo '<img src="gatdata.php?'.time().'" alt="Chart">';
// oder per GET
echo '<img src="gatdata.php?wert1='.$_POST['wert1'].'&wert2='.$_POST['wert2'].'" alt="Chart">';
// time() wird bei der Session-Variante mit angehangen, um den Cache des Browsers "auszutricksen" weil
// die Grafiken sonst alle gleich heißen und so aus dem Cache immer die alten Daten angezeigt würden.
}
else
{
echo 'Es gab '.$inputErrorCounter.' Eingabefehler !';
echo '<ul>'.$inputErrorMessages.'</ul>'
// $inputErrorMessages enthält die Fehlermeldungen der Eingabeprüfung.
// Jede Meldung ist mit einem '<li> ... </li>' umschlossen um eine gültige UL-Liste zu erzeugen.
}
}
?>
</body>
</html>
Der nachfolgende PHP-Code prüft ob die POST-Variable des "submit"-Buttons vorhanden ist und führt erst dann den restlichen PHP-Code aus.
So wird sichergestellt, das beim ersten aufrufen des Formulars - es existieren noch keine POST-Daten - nicht fälschlicherweise versucht wird eine Grafik zu erzeugen, mit Daten und Variablen die es noch nicht gibt, denn das würde jede Menge Fehlermeldungen produzieren.
~Arano
Hi
Huii, das war jetzt aber ausführlich
So genau hätte es gar nicht sein müssen *g*
Aber lieber so, als das was wichtiges vergessen wird ;)
__getdata.php__
Da der Benutzer hier nur drei Werte als Parameter vorgibt, wäre es doch einfacher alles auf GET umzustellen und die Werte als Parameter beim einbinden von 'getdata.php' als IMG mit anzugeben.
Es so zu machen wie ich es eben schon vorschlug.
__dia.php__
__getdata.php__
Oder spricht etwas anders dagegen !?
~Arano
Huii, das war jetzt aber ausführlich
So genau hätte es gar nicht sein müssen *g*
Aber lieber so, als das was wichtiges vergessen wird ;)
__getdata.php__
- Eingaben prüfen
- Daten aus DB Holen
- Grafik generiere UND ausgeben
Da der Benutzer hier nur drei Werte als Parameter vorgibt, wäre es doch einfacher alles auf GET umzustellen und die Werte als Parameter beim einbinden von 'getdata.php' als IMG mit anzugeben.
Es so zu machen wie ich es eben schon vorschlug.
__dia.php__
- Formular
- Eingaben Prüfung und ggf
- Anzeigen der Grafik / Ausgabe von Fehleingaben
__getdata.php__
- Datenbank lesen
- Grafik generieren und ausgeben
Oder spricht etwas anders dagegen !?
~Arano
Na dann ist mein Vorschlag genau richtig
(Das sind auch nur zwei Dateien ! Allerdings wird aus der "dis.html" eine "dia.php" weil diese dann PHP-Code enthält)
In diesem Fall ist es absolut WICHTIG, das die 'getdata.php' __nichts außer den Bilddaten__ ausgibt !
Sollte da vorher auch nur ein einziges Leerzeichen ausgegeben werden - funktioniert es nicht.
Gleichzeitig sollte klar sein, das jegliche Fehlermeldungen die der PHP-Code in 'getdata.php' erzeugt oder die von dir generiert sind nicht auf der Seite angezeigt werden, denn diese Daten werden ja als vermeintliches Bild in die Seite eingebunden und verschwinden so zusagen "im Bild".
Wenn was ist, weißt ja wo du uns findest.
Dann mal viel Erfolg
~Arano
(Das sind auch nur zwei Dateien ! Allerdings wird aus der "dis.html" eine "dia.php" weil diese dann PHP-Code enthält)
Das mit dem IMG..werde ich mal testen.
Dann sei noch mal drauf hingewiesen:In diesem Fall ist es absolut WICHTIG, das die 'getdata.php' __nichts außer den Bilddaten__ ausgibt !
Sollte da vorher auch nur ein einziges Leerzeichen ausgegeben werden - funktioniert es nicht.
Gleichzeitig sollte klar sein, das jegliche Fehlermeldungen die der PHP-Code in 'getdata.php' erzeugt oder die von dir generiert sind nicht auf der Seite angezeigt werden, denn diese Daten werden ja als vermeintliches Bild in die Seite eingebunden und verschwinden so zusagen "im Bild".
Wenn was ist, weißt ja wo du uns findest.
Dann mal viel Erfolg
~Arano