kostenloser Webspace werbefrei: lima-city


PHP-Skript in JS aufrufen und "echo"-Ausgaben auswerten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    tangoal

    Kostenloser Webspace von tangoal

    tangoal hat kostenlosen Webspace.

    Hi Community,

    ich habe eine große Datenbank und möchte viele Daten tabellarisch per HTML ausgeben. Der Seitenaufbau dauert aber zu lange, wenn ich die Seite per PHP serverseitig schon erzeuge. Ich will den Benutzer nicht so lange warten lassen, sondern ihm "Häppchenweise" mehr zeigen.

    Ich habe viel herumgeforscht und die einfachste/flexibelste Lösung für meinen speziellen Anwendungszweck ist es, wenn JavaScript nach und nach ein PHP-Skript aufruft und dessen echo-Ausgabe in einer Variablen speichert, die ich mit JavaScript auswerten kann und mit der ich das DOM der HTML-Seite verändern kann.

    Mein großes Problem: ich weiß nicht, wie ich das PHP-Skript mit JavaScript so aufrufe, dass mir die Daten in einer Variablen gespeichert werden.

    Das würde dann ungefähr so aussehen:

    //tabelle.php:
    <html>
       <script>
           var anzahl = <php? /* (1) Gib mir die Anzahl an Datensätzen zurück */ ?>
           for (i=0; i < anzahl; i++)
           {
              var datensatz= <php? /* (2) Gib mir den i-ten Datensatz zurück */ ?>
              //...
              //benutze datensatz um document-nodes zu verändern
              //...
           }
       </script>
    </html>


    Die Anzahl der Datensätze zu bekommen ist easy, da dies von PHP beim Aufbau der Seite serverseitig übernommen werden kann, bevor die HTML-Seite zum Client geschickt wird (siehe (1)).
    Aber wie mache ich den Aufruf bei (2)? Da muss ich ja eine neue PHP-Seite aufrufen, oder? Und wie rufe ich diese auf ohne den Nutzer plötzlich auf eine andere Seite zu lenken (er soll ja hier bleiben ;-))

    Interessant wäre es auch, wie ich diese Abfrage zeit-gesteuert hinbekomme: so sollen z.B. jede 1000 ms neue 100 Datensätze abgefragt werden...

    Danke sehr für eure Hilfe.

    PS: Ich möchte keine Lösung über HttpXmlRequest oder AJAX. Ich bevorzuge diese einfache Lösung, wenn es möglich ist. Und wie gesagt, dass PHP gleich die ganze Tabelle "hinschreibt" ist sehr, sehr doof.


    Beitrag zuletzt geändert: 3.1.2015 11:52:10 von tangoal
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. johanneskirchgemeinde

    johanneskirchgemeinde hat kostenlosen Webspace.

    Ich sehe erstmal einen Verständnisproblem: der php-Code in der tabelle.php wird beim Aufruf der Seite auf dem Server ausgeführt. Das ist für (1) in Ordnung, bei (2) würde der php-Code aber auch nur 1x beim Abrufen der Seite ausgeführt. Du bräuchtest für (2) ein extra php-Script, das jeweils ein Häppchen der Ergebnisse liefert und vom Javascript (vom Client aus) per URL aufgerufen wird.

    Beitrag zuletzt geändert: 3.1.2015 12:21:34 von johanneskirchgemeinde
  4. tangoal schrieb:
    PS: Ich möchte keine Lösung über HttpXmlRequest oder AJAX. Ich bevorzuge diese einfache Lösung, wenn es möglich ist. Und wie gesagt, dass PHP gleich die ganze Tabelle "hinschreibt" ist sehr, sehr doof.
    Wieso denn nicht über Ajax? Das ist exakt das, was du brauchst.
    Ein Tutorial dazu: http://www.html-seminar.de/ajax-einfuehrung.htm
    Was stört dich daran, denn viel anders lassen sich deine Erwartungen nicht umsetzen.

    Ist es zu kompliziert? Das ging mir am Anfang genauso. Ajax ist anspruchsvoll zu verstehen. Aber mit einem guten Tutorial versteht man es auch bald.
    Wenn du irgendwas an dem Tutorial nicht verstehst, dann frage hier wieder nach, bevor du verzweifelt aufgibst.
  5. Zuerst mal sollte dir bewusst sein, dass PHP Serverseitig ist und nur einmalig während dem Laden ausgeführt wird. Danach nicht mehr. JavaScript ist Clientseitig und kann erst nach dem Laden ausgeführt werden, aber so viel mal, wie man will.

    Wenn du also in JavaScript PHP Code ausführst, so wie in deinem Beispiel, passiert das nur Clientseitig und den Server interessiert das kein Stück. Du musst also über JavaScript eine neue PHP Datei laden und das macht man über Ajax. Dein Lösungsansatz ist schon rein Theoretisch total falsch, das musst du leider auf die Seite schieben.

    Zu deiner weiteren Fragestellung; Das kannst du alles über ein PHP File machen. Du kannst im PHP File eine Variable setzen, welche Datensätze ausgelesen werden sollen und diese im JavaScript definieren. Also zuerst führst du es mit Ajax von 1-100 aus, danach von 100-200, 200-300 usw. Kannst du durch eine Schleife und einem Timeout (Zeitgesteuert) lösen, oder einem simplen Nachlade-Button.

    Wenns hier nicht nur um eine Übung geht, rate ich dir auch eine Fallback Lösung rein mit PHP anzubieten. Am besten Seiten zum weiter klicken. Es gibt ja auch User, die JavaScript deaktiviert haben. Dies könntest du mit noscript lösen. Wenn du aber noch nicht so weit bist, kannst du das mal aufschieben. Ich empfinde es zwar als wichtig, aber der Hauptanteil hat doch JavaScript aktiviert.

    Ajax fand ich übrigens auch kompliziert, aber ich habe das noch in reinem JavaScript ohne jQuery gelernt. Mit ist es ziemlich einfach.

    EDIT: Und kaum schreibt man eine Antwort, kommt vom Threadersteller auch schon die Rückmeldung, dass alles erledigt ist... :P Glückwunsch!

    Beitrag zuletzt geändert: 3.1.2015 15:19:32 von c143
  6. Autor dieses Themas

    tangoal

    Kostenloser Webspace von tangoal

    tangoal hat kostenlosen Webspace.

    Ich habe es
    fuerderer schrieb:
    Ist es zu kompliziert? Das ging mir am Anfang genauso. Ajax ist anspruchsvoll zu verstehen. Aber mit einem guten Tutorial versteht man es auch bald.
    Wenn du irgendwas an dem Tutorial nicht verstehst, dann frage hier wieder nach, bevor du verzweifelt aufgibst.

    Ich habe es jetzt über ein asynchrones HttpXmlRequest gelöst, in dem ich ein PHP-Skript mehrfach mit Parametern aufrufe. Mit den Parametern kann ich steuern, welche und wieviele Datensätze übertragen werden sollen. Jedes Mal, wenn ein HttpXmlRequest beendet wurde, wird der nächste Request abgesetzt um die nächsten Daten zu erhalten. Mit JavaScript verändere ich dann das DOM der HTML-Seite, um die Datensätze in einer Tabelle dynamisch nachzuladen.

    Ich war anfangs auch ziemlich schnell auf das HttpXmlRequest gestoßen, aber hatte einige Probleme damit, weswegen ich es wieder verworfen hatte (lag aber eher an meinen mauen PHP und JS Künsten:wall:). Zumal war mir weder bewusst, dass es so flexibel ist, noch dass es auch zu Ajax gehört. Danke für die Hinweise:thumb:

    Thread kann aus meiner Sicht geschlossen werden.

  7. hallo tangoal,


    wenn das ganze thema neu für dich ist würde ich dir noch sehr anz herz legen dich über die sicherheit in deinen
    ...in dem ich ein PHP-Skript mehrfach mit Parametern aufrufe...
    zu informieren, denn wenn du post- oder get- oder header-parameter benutzt und dann daraus eine datenbankabfrage zusammensetzt kann das ein grosses tor für böse leute sein die dein php-script dann vielleicht einfach mal mit anderen, unerwarteten (bösen) parametern füttern die zb den datenbankquery manipulieren...


    lg hechma
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!