Ergebnis 1 bis 4 von 4
  1. #1
    Mr_Amsel ist offline Jungspund
    registriert
    06-03-2005
    Beiträge
    12

    Arrow PHP Funktion in gleichwertige JS Funktion umwandeln.

    Hallo liebe Community!!

    Habe wiedereinmal ein Problem mit JS. ich glaub JS mag mich nicht und ich es nicht! ;-O

    Also folgender Sachverhalt:

    Ich habe eine JS Funktion die eig. nichts anderes macht als ein PHP File aufzurufen (via AJaX). In diesem PHP File werden die mitgeschickten Variablen dann in eine Session gschrieben. Nun ist das ganze aber irgendwie unübersichtlich. Weil zuerst wird eine JS Funktion aufgerufen die wiederum nichts anderes macht als eine PHP Funktion aufzurufen die wiederum dann das gewünschte macht. Und ich würde nun gerne den PHP Teil ausklammern. Sozusagen wird dann nur noch die JS Funktion überbleiben. Soviel zu meiner Motivation.

    Hier haben wir mal meinen JS und PHP Code (P.S.: für den AJaX Teil verwend ich JQuery).

    JS:

    Code:
    function saveTime (date, hour, outputTime) {
      $.post("session_write.php", { dateHour: date + '-' + hour + '-' + outputTime} );
    };
    PHP:

    PHP-Code:
    <?php
    session_start
    ();

    if (!isset(
    $_SESSION['stored'])) {
      
    $_SESSION['stored'] = array($_POST['dateHour']);
    } else {
      if (
    in_array($_POST['dateHour'], $_SESSION['stored'])) {
        foreach (
    $_SESSION['stored'] as $key => $value) {
          if (
    $value == $_POST['dateHour']) unset($_SESSION['stored'][$key]);
        }
      } else {
        
    array_push($_SESSION['stored'], $_POST['dateHour']);
      }
    }
    ?>
    Wie ihr sicher unschwer erkennen könnt gibt die JS Funktion Werte an das PHP File und dieses geht damit wie folgt um: Wenn noch keine Session existiert erstellt es ein Session (Array) mit den mitgelieferten Werten. Sollte die Session schon existieren vergleicht es die mitgelieferten Werte mit denen aus der Session und entweder nimmt es diese Werte dann aus dem Session Array raus oder hängt sie an. (Sache dahinter: Tabelle mit klickbaren Zellen die beim Klick ihre ID in die Session schreiben sollen bzw. wenn die Zelle bereits geklickt worden ist (sprich schon im Session ist) soll es die ID dann wieder rausnehmen.)

    Damit ihr seht ich will das nicht einfach nur präsentiert bekommen habe ich es natürlich selbst versucht aber nach einiger Zeit aufgegeben da ich JS Syntax und Logik einfach nicht ausreichend beherrsche. PHP ist da um einiges leichter und intuitiver!!

    Hier meine Gehversuche:

    Code:
    function saveTime (date, hour, outputTime) {
    
      if (document.cookie) {
        if (jQuery.inArray(date + '-' + hour + '-' + outputTime, document.cookie)) {
          //hier fehlt noch die foreach schleife sowie das entfernen des überinstimmenden teiles des cookies.
        } else {
          document.cookie = document.cookie.push(date + '-' + hour + '-' + outputTime);
        }
      } else {
        document.cookie = new Array(date + '-' + hour + '-' + outputTime);
      }
    };
    Natürlich funktioniert der Code hinten und vorne nicht und gewisse Teile des Codes fehlen noch.
    Auch ist mir klar dass Sessions mit JS nicht in der Art möglich sind aber wie man aus meinem Gehversuch erkennen kann würd ich die Session einfach gegen ein Cookie austauschen. Also falls jemand meinen JS Code richtigstellen und vervollständigen kann UND/ODER nach seinem eigenen Weg den PHP Code usmchreiben kann in einen JS Code UND/ODER einen eigenen Weg hat die Problemstellung in JS zu lösen dann nur her damit!

    Ich weiss dass ist nicht leicht. Weiss aber nicht an wen ich mich sonst wenden kann ...SelfHTML konnte mir nicht weiterhelfen und ich benötige das für mein Studium. ;-(

    LG Amsele

  2. #2
    Bieber ist offline König
    registriert
    10-12-2007
    Ort
    Erfurt
    Beiträge
    964

    AW: PHP Funktion in gleichwertige JS Funktion umwandeln.

    ach gott

    1.
    Nun ist das ganze aber irgendwie unübersichtlich.
    ?? das ist doch genau das Prinzip von AJAX, wüsste nicht was da unübersichtlich ist
    2. JS kann in jedem Browser deaktiviert werden (und jeder der mit security was zu tun hat, oder einfach nur Werbung ausblenden will macht das!)
    3. irgendwie haben die Funktionen die du da postest nicht viel mit deiner Frage zu tun zwecks dieser Tabelle, wo du die geklickten IDs speichern willst... was willst du da mit Zeit?
    4. JS ist nicht schwerer als PHP

    Lösungsansatz für die Tabelle deren aktivierte/deaktivierte Felder du speichern willst:
    onclick auf jedes td, welches Funktion aufruft
    Funktion testet auf vorhanden sein eines cookies (erzeugt es gegebenfalls)
    entsprechenden wert ins array/cookie schreiben
    wo ist das Problem? SELFHTML: JavaScript / Objektreferenz / document
    unterstützen JS-Cookies denn überhaupt arrays? habe ich noch nie versucht und gebraucht
    crazy

    Schach online: Lust auf eine Partie Schach gegen mich? Einfach kostenlos auf onlineschach.eu registrieren und den Bieber suchen.

  3. #3
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.687

    AW: PHP Funktion in gleichwertige JS Funktion umwandeln.

    Cookies sind meines Wissens nach reine Strings - d.h. um da Array zu speichern müsste man sie z.B. mit JSON erst einmal formatieren

  4. #4
    Mr_Amsel ist offline Jungspund
    registriert
    06-03-2005
    Beiträge
    12

    AW: PHP Funktion in gleichwertige JS Funktion umwandeln.

    Hallo erstmal!
    ..und ja danke!! ..also zur Beantwortung der ersten Antwort:

    zu 1. Mit ajax hat das ganze eig. gar nichts zu tun. Aax ist hier nur Mittel zum Zweck. Es geht dabei um die Reduzierung von Code bzw. von verschiedenen Technologien. Und ich bin auch der Meinung Ajax rult auch wenn ich mir bewusst bin was Ajax ist. Also keine Sprache und auch das es es eig. schon seit langer Zeit gibt ...der Hype ist mir egal. Ich find Ajax einfach so oder so klasse. Dass es jetzt halt populärer ist macht das ganze nur noch besser und einfacher.

    Denn zurzeit sieht es so aus. Es gibt eine Html Tabelle die mit onclick auf die Zellen eine js funktion aufruft. Dieses Funktion ruft dann Php auf um das Cookie zu speichern. Im weiteren Verlauf muss Php das Cookie wieder in für Js verständliche Form bringen. Die Js verständliche Form ruft dann eine Js Funktion auf die wiederum dann Html ausgibt.

    Also von Html zu Js zu Php und dann von Php zu Js zu Html
    Ich will aber von Html zu Js und von Js zu Html

    Sprich den Php Teil weglassen. Und dabei spielt Ajax nicht wirklich eine Rolle. Es macht nur den Übergang vom Js zum Pphp aber den Teil will ich ja sowieso streichen.
    Soweit verstanden?!?!?

    2. Danke für die Belehrung aber das ist mir bewusst. Ist klar aber bei meinem Projekt wird er um Js sowieso nicht herumkommen. Ohne Js kein onclick, kein Ajax, kein Komfort. Jedoch wird alles benötigt und ist schon gut so.

    3. Ist doch selbstverständlich das die ganze Sache aus dem Kontext gerissen ist. Zeit und so brauch ich halt aber ist für die Problemstellung hier nicht wichtig. Meine Fragestellung war aber doch klar oder nicht? Einfach(oder auch nicht) den von mir bereitgestellten funktionstüchtigen Php Code in Js Code umwandeln.

    4. Ganz klar nein. So oder so nicht aber schon an einfachen Beispielen wie foreach schleifen oder in_array befehlen sieht man wie mächtig Php ist und wie umständlich Js. Diesen Php Code zu konstruieren hat mich 5 Minuten gekostet oder weniger ...das gleichwertige in Js bekommt irgendwie keiner hin aber du kannst mich gern vom Gegenteil überzeugen!! Trau dich! ;-O

    ...
    hmm irgendwie glaube ich hast du meinen Beitrag nicht genau gelesen. Dein Lösungsansatz ist zwar eh nicht vollständig aber wie auch immer ich habe ihn ja selbst schon hingeschrieben. In Worten und in Php Code. Aber ich will ihn in Js code und bekomme das nicht hin. Wenn ich das hin bekommen würde würde ich doch hier nicht nachfragen. Auch deine Verlinkung zu Selfhtml habe ich mir schon alles angeschaut ..wie du ja meinen Posting entnehmen kannst habe ich ja versucht den Php Code in Js nachzubauen. Mit unter auch von dem Cookie Beitrag auf Selfhtml. Aber der Code funktioniert nicht. Mir ist also klar wie das ganze von der Porgrammierlogik aussehen müsste. Das hilft mir jetzt also auch als Antwort nicht mehr weiter. Ich bekomme es trotzdem nicht hin einen vernünftigen Js Code zu konstruieren der das (folgende) kann:

    Von daher nochmal: Lösungsansatz in Worten:

    1. Js Funktion wird mit Werten aufgerufen.
    2. Js Funktion soll ein Cookie erzeugen und die Werte darin posten (sofern das Cookie nicht schon exisitiert)
    3. Exisitiert das Cookie schon soll es überprüfen ob der mitgelieferte Wert schon im Cookie vorhanden ist.
    4. Wenn Ja dann diesen Wert aus dem Cookie rausnehmen. Die anderen Werte aber drinlassen.
    5. Wenn Nein Werte an das Cookie dranhängen (an die schon bestehenden Werte).

    und hier in Php Form:

    PHP-Code:
    <?php 
    session_start
    (); 

    if (!isset(
    $_SESSION['stored'])) { 
      
    $_SESSION['stored'] = array($_POST['dateHour']); 
    } else { 
      if (
    in_array($_POST['dateHour'], $_SESSION['stored'])) { 
        foreach (
    $_SESSION['stored'] as $key => $value) { 
          if (
    $value == $_POST['dateHour']) unset($_SESSION['stored'][$key]); 
        } 
      } else { 
        
    array_push($_SESSION['stored'], $_POST['dateHour']); 
      } 

    ?>
    Wie das gemacht wird ist mir egal! ;-) Ob mit Json oder sonst wie. Nur ist derzeit die Lösung von Ss auf Php und dann wieder von Php auf Js. Und ich finde das redundant. Würde gerne nur Js zu Js haben. ...wie bereits alles erwähnt.

    Wer kann das bewerkstelligen?? Vielleicht du wenn Js für dich leicht ist. Für mich ist das um einige Ecken schwerer. Da array speicherung in Js Cookie schwieriger ist. Da foreach Schleifen nur über Umwege zu erreichen sind. Auch in_array und array_push und explode Funktionen nur bedingt exisitieren (zumindest in array gar nicht ...kann man nur selber basteln, array_push und explode gibt es zumindest mit push und split). Aber meinen Lösungsansatz wie das ganze ungefähr und von der Logik her aussehen sollte sieht man in meinen ersten Posting.

    LG Stefan

Ähnliche Themen

  1. vServer: PHP 4 auf PHP 5 updaten?
    Von TiffTiff im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 28-01-2006, 12:29
  2. PHP debuggen mit PHP Designer bzw. PHP-Coder
    Von Malleus im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 22-08-2005, 22:46
  3. Submit Funktion Variable an PHP übergeben.
    Von Tolwin im Forum JavaScript
    Antworten: 12
    Letzter Beitrag: 20-06-2005, 17:08
  4. Antworten: 6
    Letzter Beitrag: 14-10-2001, 03:41
  5. PHP: Unbekannte Funktion
    Von EisVogel im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 06-09-2001, 17:18

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •