Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Funktionsfrage zu Per PHP-Script ausgewertete bzw. bearbeitete Daten in aufrufender HTML Seite anzeigen lassen.

Frage Entwicklung PHP

Mitglied: FunkerVogt

FunkerVogt (Level 1) - Jetzt verbinden

13.10.2013 um 11:49 Uhr, 2366 Aufrufe, 9 Kommentare

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.

01.
<form target="_self" method="post" action="getdata.php" > 
02.
03.
04.
05.
<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:

01.
<? 
02.
    if(!checkdate($EZMon1,$EZTag1,$EZJahr1)) 
03.
04.
    echo "<script language=\"JavaScript\"
05.
<!-- 
06.
 alert(\"Bitte noch einmal ueber das Enddatum nachdenken\"); 
07.
 window.location.href=\"dia.html\"
08.
//--> 
09.
</script>"; 
10.
  
11.
12.
?>

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??


Mitglied: certifiedit.net
13.10.2013 um 11:55 Uhr
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
Bitte warten ..
Mitglied: colinardo
13.10.2013, aktualisiert um 12:31 Uhr
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
Bitte warten ..
Mitglied: Arano
13.10.2013 um 13:38 Uhr
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.

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 ?
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:
01.
<html> 
02.
  <head> 
03.
    <title>Seitentitel</title> 
04.
  </head> 
05.
  <body> 
06.
   
07.
  <form action="dia.php" method="POST"> 
08.
    <input type="text" name="wert1" value=""> 
09.
    <input type="text" name="wert2" value=""> 
10.
    <input type="submit" name="gfxGenBtn" value="Grafik generieren"> 
11.
  </form> 
12.
   
13.
  <?php 
14.
    // wurden Daten vom Formular per Post übergeben ? 
15.
    if( isset($_POST['gfxGenBtn]) ) 
16.
17.
        // hier sämtliche Eingaben auf Gültigkeit überprüfen 
18.
        // hier sämtliche Eingaben auf Gültigkeit überprüfen 
19.
        // hier sämtliche Eingaben auf Gültigkeit überprüfen 
20.
        // man könnte eine eigene PHP-Funktion dafür schreiben die an dieser Stelle aufgerufen wird, 
21.
        // dann bleibt der Haupt-Code übersichtlicher ;) 
22.
 
23.
        // ggf. die Daten aus den $_POST-Variablen in die $_SESSION-Variablen kopieren 
24.
         
25.
        // wenn alle Eingaben gültig sind 
26.
        if( FALSE===$inputError ) 
27.
28.
            // per Session 
29.
            echo '<img src="gatdata.php?'.time().'" alt="Chart">'; 
30.
            // oder per GET 
31.
            echo '<img src="gatdata.php?wert1='.$_POST['wert1'].'&wert2='.$_POST['wert2'].'" alt="Chart">'; 
32.
            // time() wird bei der Session-Variante mit angehangen, um den Cache des Browsers "auszutricksen" weil 
33.
            // die Grafiken sonst alle gleich heißen und so aus dem Cache immer die alten Daten angezeigt würden. 
34.
35.
        else 
36.
37.
            echo 'Es gab '.$inputErrorCounter.' Eingabefehler !'; 
38.
            echo '<ul>'.$inputErrorMessages.'</ul>' 
39.
            // $inputErrorMessages enthält die Fehlermeldungen der Eingabeprüfung. 
40.
            // Jede Meldung ist mit einem '<li> ... </li>' umschlossen um eine gültige UL-Liste zu erzeugen. 
41.
42.
43.
  ?> 
44.
  </body> 
45.
</html>
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
Bitte warten ..
Mitglied: FunkerVogt
13.10.2013 um 14:50 Uhr
Nur mal zur Erklärung!

Was macht getdata.php!!!!

Getdata.php verarbeitet die per $_POST übergebenen Werte in einer Datenbankabfrage.
Diese Daten werden dann für die Darstellung des Diagrammes benutzt, welches auch
innerhalb des .php Skriptes generiert wird (phplot).

Die Datenbanken bestehen aus Datum|Uhrzeit|Wert.
Innerhalb der html Seite gibt es eine Benutzereingabe, in der der Nutzer einen
Startzeitpunk, Endzeitpunkt (Menü) und Zählerpunkte (Radiobuttons) angeben kann.

Zuerst nehme ich im php-Script, die übergebenen Werte aus $_Post und prüfe auf Richtigkeit also
ob z.B. nicht der 30.02.2013 gewählt wurde, der Endzeitpunkt nicht vor dem Startzeitpunkt
liegt und ob auch min. ein Zählerpunkt angegeben wurde (siehe Frage 2 oben).

Innerhalb der Datenbankabfrage werden die Werte bezüglich der Zählpunkte und der
Zeitpunkte aus der Datenbank gelesen und dann von phplot zu einem Diagramm verarbeitet.

Wenn ich fixe Werte in die getdata.php eintragen würde, wäre die Seite auch allein
lauffähig. Sprich es würde das Diagramm dargestellt.

Soweit funktioniert es alles auch wunderbar!
Bitte warten ..
Mitglied: Arano
13.10.2013, aktualisiert um 15:57 Uhr
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__
  • 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
Bitte warten ..
Mitglied: FunkerVogt
13.10.2013 um 17:34 Uhr
Ne ne neeee... sind nur 2 Seiten!

Es gibt die dia.HTML (Quasi Startseite)--- da werden die Formulardaten für $_POST eingetragen und an
die getdata.PHP (zweite Seite) übertragen.

In der dia.HTML soll auch das Diagramm der getdata.PHP ausgegeben werden.

oder meinst Du alles auf 3 Seiten aufteilen?

Das mit dem IMG..werde ich mal testen.
Bitte warten ..
Mitglied: Arano
13.10.2013 um 20:48 Uhr
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)

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
Bitte warten ..
Mitglied: nxclass
13.10.2013, aktualisiert um 21:46 Uhr
der Quellcode wird in einem neuen Fenster angezeigt.
.. "short open tags" deaktiviert ?
01.
- <? 
02.
+ <?php
Bitte warten ..
Mitglied: FunkerVogt
20.10.2013 um 21:18 Uhr
@nxclass

Nein.
Benutze ich auch nicht.

In der .htaccess hab ich dennoch "php_flag short_open_tag off" eingetragen.
Selbstverständlich auch den Server neugestartet.

Start und End-Tags sind bei mir:

<?php
.
.
.
?>

@Arano

Mit dem selbstaufrufen der Seite funktioniert auch mit img nich..
Fehler sind keine, zumindest nicht sichtbar. Fehlerlogging über:

01.
error_reporting(E_ALL); 
02.
ini_set('display_errors', 0); 
03.
ini_set('log_errors', 1); 
04.
ini_set('error_log', 'fehler.txt');
Gruss Uwe
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
JavaScript
gelöst JQuery - Daten aus HTML-Oberfläche dynamisch abfragen (1)

Frage von Roadrunner777 zum Thema JavaScript ...

VB for Applications
Aus VBA E-Mail und HTML Dokument erstellen lassen (3)

Frage von Pago159 zum Thema VB for Applications ...

HTML
gelöst HTML-Seite auf mehreren Geräten öffnen (6)

Frage von Crumpy zum Thema HTML ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...