1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Iframe Variable an PHP zur Speicherung in der DB

Dieses Thema im Forum "PHP" wurde erstellt von c-i-k-o, 6. Oktober 2016.

  1. c-i-k-o

    c-i-k-o Grünschnabel

    Hallo Zusammen,

    vorerst, ja ich weiss es gibt viele Themen mit ähnlichen Titeln. Allerdings bin ich ein sehr anfänglicher newbie und verstehe nicht so recht was da steht und brauche dringend Unterstützung.

    es geht um folgendes:
    ich habe folgenden php-Code in der Hauptdatei implementiert, darin ist das iframe:

    Code (PHP):
    1.   $questionoutput = "<iframe sandbox='allow-scripts allow-popups allow-forms'
    2.        src='{$url}'
    3.        width='90%'
    4.        height='400'
    5.        name='{$url}'>
    6.        </iframe>";
    7.  
    8.         return $questionoutput;
    der Inhalt des Iframes sieht so aus (es ist nur eine simple testaufgabe zum testen des gesamten):

    Code (HTML5):
    1. ..... hier vor ist der jsscript in welches zwei simple aufgaben implementiert sind.
    2.  
    3. <body onload="zahl()">
    4.  
    5. <p>Die Summe von <strong id="zahl1"></strong> und <strong id="zahl2"></strong> ist?</p>
    6. <p><input id="eingabe" width="3"/></p>
    7. <p><button id="ergebnis" onclick="check1()">Pruefe</button></p>
    8.  
    9. <p>Die Summe von <strong id="zahl3"></strong> und <strong id="zahl4"></strong> ist?</p>
    10. <p><input id="eingabe2" width="3"/></p>
    11. <p><button id="ergebnis2" onclick="check2()">Pruefe</button></p>
    12.  
    13. <p id="punktegesamt">Gesamtpunkte</p>
    14.  
    15. </body>
    Mein Ziel ist es nun die Variable <p id="punktegesamt">Gesamtpunkte</p> rauszulesen und in eine PHP-Variable zu schreiben. dabei ist zu beachten, dass diese url auf einem anderen webserver liegt und da entstehen wieder fragen der policy, die als nächstes gelöst werden müssen.

    Ich bitte um dringende Hilfe. Ich doktore jetzt schon seit längerem rum und komme immer noch nicht zu Ende... Bitte sehr dringend um Hilfe...

    Besten Dank und freundliche Grüße
     
  2. lockcat

    lockcat Mitglied

    Hi,

    jquery wird dir dabei helfen. Lese den tag Inhalt aus uns sende es via Post an ein PHP Script.

    Wie waren denn deine lösungswege?

    Gruß
     
  3. c-i-k-o

    c-i-k-o Grünschnabel

    das war letzte Nacht der letzte Stand:

    Code (PHP):
    1.         $questionoutput = "<form id ="form_content" name="form_content" method="post">      
    2.        <input type="hidden" name="content">
    3.        <iframe id='edit'  name='edit' sandbox='allow-scripts allow-popups allow-forms'
    4. src='{$url}'
    5.        width='90%'
    6.        height='400'
    7.        name='{$url}'>
    8.        </iframe>
    9.        document.getElementById('edit').contentWindow.document.[b]body[/b].innerHTML
    10.        </form>";
    11. return $questionoutput;
    12.     }
    wie gesagt bin halt noch ein newbie und weiss nicht genau, ob ich das ganze richtig implementiert habe.
    wie meinst du kann mir jquery helfen? und wie funkt das?
     
    Zuletzt bearbeitet: 6. Oktober 2016
  4. lockcat

    lockcat Mitglied

    Hi,

    wann genau soll der tag denn ausgelesen werden? wenn das Formular ausgefüllt wird? bzw. wie entstehen die Gesamtpunkte?
    Sollen die Daten gleich beim ausgeben in der Datenbank gespeichert werden?

    Lg
     
  5. c-i-k-o

    c-i-k-o Grünschnabel

    also die Gesamtpunkte entstehen in dem IFrame-Objekt so:

    Code (HTML5):
    1.  
    2. <script language="javascript" type="text/javascript">
    3.  
    4. total = 0;
    5. function zahl() {
    6.         zahl1 = 10;
    7.         zahl2 = 30;
    8.         zahl3 = 20;
    9.         zahl4 = 40;
    10.     document.getElementById("zahl1").innerText = zahl1;
    11.         document.getElementById("zahl2").innerText = zahl2;
    12.         document.getElementById("zahl3").innerText = zahl3;
    13.         document.getElementById("zahl4").innerText = zahl4;
    14. }
    15.       function check1() {
    16. var ergebnis = zahl1 + zahl2;
    17.         ergebnis = document.getElementById("ergebnis").val=ergebnis;
    18.         eingabe = document.getElementById("eingabe").value;
    19. var  p1 = 0;
    20.         if (eingabe == "") {
    21.         alert ("Keine Eingabe");
    22.         } else {
    23.  if (eingabe == ergebnis) {
    24.             p1 = 5;
    25.             alert("richtig " + p1 + " Punkte erreicht");
    26. } else {
    27.         p1 = 0;
    28.             alert("falsch. richtige Loesung ist " + ergebnis);
    29.         }
    30.         }
    31.         //return p1;
    32.         total = total + p1;
    33. document.getElementById("punktegesamt").innerHTML = "Gesamtpunkte: " + total;
    34.     }
    35.  
    36.  function check2() {
    37.         var ergebnis2 = zahl3 + zahl4;
    38.         ergebnis2 = document.getElementById("ergebnis2").val=ergebnis2;
    39.         eingabe2 = document.getElementById("eingabe2").value;
    40.         var p2 = 0;
    41. if (eingabe2 == "") {
    42.         alert ("Keine Eingabe");
    43.         } else {
    44.         if (eingabe2 == ergebnis2) {
    45.             p2 = 3;
    46.             alert("richtig! " + p2 + " Punkte erreicht");
    47.   } else {
    48.         p2 = 0;
    49.             alert("falsch. richtige Loesung ist " + ergebnis2);
    50.  
    51. }
    52.         }
    53.      
    54.         //return p2;
    55.         total = total + p2;      
    56. document.getElementById("punktegesamt").innerHTML = "Gesamtpunkte: " + total;
    57.     }
    58.                      
    59. function punkte(){
    60.      var gesamtpunkte = total;
    61.    
    62.   return total;
    63.  }
    64.  
    65.  
    66. /script>
    67.  
    68. <body onload="zahl()">
    69. <p>Die Summe von <strong id="zahl1"></strong> und <strong id="zahl2"></strong> ist?</p>
    70. <p><input id="eingabe" width="3"/></p>
    71. <p><button id="ergebnis" onclick="check1()">Pruefe</button></p>
    72.  
    73. <p>Die Summe von <strong id="zahl3"></strong> und <strong id="zahl4"></strong> ist?</p>
    74. <p><input id="eingabe2" width="3"/></p>
    75. <p><button id="ergebnis2" onclick="check2()">Pruefe</button></p>
    76.  
    77. <p id="punktegesamt">Gesamtpunkte</p>
    78.  
    79.  
    80. </body>
    81. </html>

    Genau die Daten sollen direkt in die Datenbank gespeichert werden, wenn Sie entstehen. D.h. wenn ich auf den Button Pruefe klicke, dann sollen die Punkte übergeben werden an php und in die Datenbank gespeichert werden.


    irgendwann habe ich mir gedacht dass ich vielleicht ein button:
    <p><button id="punktegesamt" onclick="punkte()">Submit</button></p>
    hinzufüge und die Variable mit der id punktegesamt dann ausgelesen werden sollen wenn auf den Button Submit geklickt wird.
    Aber das ist die ungünstigere Variante.
     
  6. c-i-k-o

    c-i-k-o Grünschnabel

    Kann denn keiner helfen :(
     
  7. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Ich weiß nicht genau, wie das Ganze zu verstehen ist. Wenn der Inhalt des p-Tags immer im HTML des iFrmae zur Verfügung steht, kannst Du das Ganze wahrscheinlich serverseitig lösen. Informiere dich, wie man den HTML-Text aus einer Datei parst und auf die Tags und ihre Inhalte zugreift. Genau weiß ich es nicht, aber ich meine, wenn man es mit PHP macht, kann die Datei auch auf einem anderen Server liegen.
    Wahrscheinlich ist dieser Inhalt jedoch das Ergebnis von Interaktionen während der iFrame auf deiner Seite eingebettet ist. (Handelt es sich um ein Spiel?) Dann scheitert das Ganze meines Wissens jedoch an der Same Origin Policy. Du solltest mit dem Betreiber der Seite Kontakt aufnehmen und ihn bitten, dir Zugriff zu geben.
     
  8. c-i-k-o

    c-i-k-o Grünschnabel

    es geht um folgendes: ich habe eine testaufgabe (der html code im folgenden) entwickelt. die soll in eine andere php seite eingebettet werden (der php code im folgenden). das einbetten habe ich mittels iframe gelöst (wie im code ja zu sehen ist). ich möchte aber nun die variable bzw die id "punktegesamt" in den php code übertragen, damit ich sie später in der datenbank speichern kann.
    Code (HTML5):
    1. <script language="javascript" type="text/javascript">
    2.  
    3. total = 0;
    4. function zahl() {
    5.         zahl1 = 10;
    6.         zahl2 = 30;
    7.         zahl3 = 20;
    8.         zahl4 = 40;
    9. document.getElementById("zahl1").innerText = zahl1;
    10.         document.getElementById("zahl2").innerText = zahl2;
    11.         document.getElementById("zahl3").innerText = zahl3;
    12.         document.getElementById("zahl4").innerText = zahl4;
    13. }
    14.       function check1() {
    15. var ergebnis = zahl1 + zahl2;
    16.         ergebnis = document.getElementById("ergebnis").val=ergebnis;
    17.         eingabe = document.getElementById("eingabe").value;
    18.         var  p1 = 0;
    19.         if (eingabe == "") {
    20.         alert ("Keine Eingabe");
    21.         } else {
    22.  if (eingabe == ergebnis) {
    23.             p1 = 5;
    24.             alert("Krichtig " + p1 + " Punkte erreicht");
    25.  } else {
    26.         p1 = 0;
    27.             alert("falsch. richtige Loesung ist " + ergebnis);
    28. }
    29. }
    30.     total = total + p1;
    31. document.getElementById("punktegesamt").innerHTML = "Gesamtpunkte: " + total;
    32.     }
    33. function check2() {
    34.         var ergebnis2 = zahl3 + zahl4;
    35.         ergebnis2 = document.getElementById("ergebnis2").val=ergebnis2;
    36.         eingabe2 = document.getElementById("eingabe2").value;
    37.  var p2 = 0;
    38.         if (eingabe2 == "") {
    39.         alert ("Keine Eingabe");
    40.         } else {
    41. if (eingabe2 == ergebnis2) {
    42.             p2 = 3;
    43.             alert("richtig! " + p2 + " Punkte erreicht");
    44.  } else {
    45.         p2 = 0;
    46.             alert("falsch. richtige Loesung ist " + ergebnis2);
    47. }
    48. }
    49. total = total + p2;      
    50. document.getElementById("punktegesamt").innerHTML = "Gesamtpunkte: " + total; }
    51.  
    52.  
    53. <body onload="zahl()">
    54. <p>Die Summe von <strong id="zahl1"></strong> und <strong id="zahl2"></strong> ist?</p>
    55. <p><input id="eingabe" width="3"/></p>
    56. <p><button id="ergebnis" onclick="check1()">Pruefe</button></p>
    57.  
    58. <p>Die Summe von <strong id="zahl3"></strong> und <strong id="zahl4"></strong> ist?</p>
    59. <p><input id="eingabe2" width="3"/></p>
    60. <p><button id="ergebnis2" onclick="check2()">Pruefe</button></p>
    61.  
    62. <p id="punktegesamt">Gesamtpunkte</p>
    63.  
    64. </body>
    65. </html>
    66.  
    67.  
    so diese testseite wird in diesen code hier wird als iframe in eine andere php datei eingebunden:

    Code (PHP):
    1. $questionoutput = "<iframe sandbox='allow-scripts allow-popups allow-forms'
    2.        src='{$url}'
    3.        width='90%'
    4.        height='400'
    5.        name='{$url}'>
    6.        </iframe>";
     
  9. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Wenn Du beides selber entwickelst, warum sind die beiden Seiten dann auf unterschiedlichen Domains?
     
  10. c-i-k-o

    c-i-k-o Grünschnabel

    also die anwendung soll später an einer hochschule benutzt werden. der dozent soll eine eigene webseite schreiben in der eine aufgabe enthalten ist. diese seite soll er dann über iframe in die oberfläche der anwendung einbetten können. ziel ist es die punkte aus der vom dozenten spezifizierten seite herauszulesen und die datenbank der anwendung zu speichern
     
  11. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Ich würde empfehlen, den HTML-Code mit der/den Aufgabe(n) statt über iFrame serverseitig mit PHP einzufügen. Dann hast Du keine Problem mit der SOP. Dann nach Lösung der Aufgabe über Javascript/jQuery auf das Ergebnis zugreifen, mit Ajax an den Server schicken und dort in die Datenbank eintragen.
     
  12. c-i-k-o

    c-i-k-o Grünschnabel

    dann kann der autor aber leider nicht über die grafische oberfläche den ort der Aufgabe eingeben oder? ich meine, die aufgaben jedes dozenten ist individuell und die anwendung soll von mehreren Dozenten genutzt werden... ziel ist dass der dozent die aufgabe über die grafische oberfläche der anwendung einbinden kann.

    bsp. ich habe eine anwendung der tests erstellt. Bei der erstellung soll der Dozent in das Formular die grunddaten angeben können zb: : 1. Frage im test: MultipleChoice-Frage (Titel, Frage, Punkte, Anwtortmöglichkeiten), 2. Frage im test: irgendeine aufgabe übergeben per iframe (Titel, Frage, Punkte,)
    usw. deswegen ist es wichtig dass der dozenten beim erstellen der frage nur die seiten spezifizieren,also die url angeben und alles andere soll in die oberfläche der test anwendung eingebunden werden
     
  13. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Verstehe ich nicht ganz. Das Ergebnis dieser Anwendung muss doch eine HTML-Seite mit den Aufgaben sein und dabei besteht IMO kein relevanter Unterschied, ob man sie serverseitig mit PHP oder clientseitig mit iFrame einbindet. Das Einbinden geschieht ja immer zum Zeitpunkt des Seitenaufrufs und der Benutzer sieht den aktuellen Zustand der Seite zu diesem Zeitpunkt. Das Einbinden soll ja nicht bei der Seitenerstellung passieren!
     
  14. c-i-k-o

    c-i-k-o Grünschnabel

    genau das Einbinden geschieht zum Zeitpunkt des Seitenaufrufs ... es geht halt nur drum, dass der dozent über die eingabemaske die url seiner aufgabe eingibt und sich nicht um das weitere geschehen kümmert...

    was wäre da die Lösung?
     
  15. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Wenn ich richtig informiert bin, entfällt dann das Problem mit der SOP.
     
  16. c-i-k-o

    c-i-k-o Grünschnabel

    ja aber wenn ich den HTML-Code mit der aufgabe doch per php serverseitig implementiere, dann kann dieser nicht dynamisch verändert werden - sprich man müsste immer in den php-code öffnen und von dort aus die aufgaben ändern. ja dann ist zwar das sop problem gelöst, aber dann würde die dynamik fehlen, undzwar die, dass der dozent einer seiner x beliebigen seiten nicht einfach über die gui mit angabe der url einbinden kann, richtig?
     
  17. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Nein, da hast Du mich falsch verstanden: Du sollst die Aufgabe nicht serverseitig implementieren sondern die Seite mit der Aufgabe serverseitig einbinden. Dann hast Du immer den aktuellen Inhalt der Seite mit den Aufgaben.
     
  18. c-i-k-o

    c-i-k-o Grünschnabel

    ok jetzt habe ich es verstanden sorry :oops:
    aber dann ist die url der seite immer statisch simmts?
    könntest Du mir vllt zum besseren verständnis ein bespiel nennen? für mich hört sich das an als würde man die url der seite mit der aufgabe nur über das bearbeiten des php codes ändern kann. quasi die url wäre dann statisch aber der inhalt natürlich dynamisch
     
  19. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Ja, die URL dieser Seite ist immer die selbe. Nur die URL der Aufgabenseite, die eingebunden wird, muss dynamisch sein.
    Eine ganz einfache Lösung ist das Einziehen mit PHP include:
    PHP:
    1. <?php include 'http://domain.de/aufgabenseite.html'; ?>
    Will man es sauber machen, ist es nicht ganz so einfach, weil man so ja auch das HTML-Grundgerüst mit Header etc. einzieht.
    Richtig, aber das ist beim Einbinden mit iFrame auch nicht anders. Du musst noch einen Weg finden, die URL dynamisch in deine Seite zu bekommen. Wenn ich dich richtig verstanden habe, soll der Dozent die URL in ein Formular eintragen?
     
  20. c-i-k-o

    c-i-k-o Grünschnabel

    okay, also habe ich im php code die variable, die die domain (http://domain.de/) enthält. über ein eingabeformular kann der dozent dann die zone eingeben quasi "/aufgabenseite.html" und klickt auf aufgabe erstellen...
    so jetzt kommt der testeilnehmer und will die aufgabe lösen, dazu klickt er aber auf die komplette url, die ihm angezeigt wird in der aufgabenbeschreibung: domain + zone, dieser öffnet sich über eine neuen tab, jetzt löst der teilnehmer die aufgabe dort und die punkte können dann von dort aus an php gepostet werden, php speichert die punkte in die db
    so richtig verstanden?

    ja aktuell ist es so, dass der dozent die komplette url über das eingabeformular eingibt...
     
Die Seite wird geladen...