[JavaScript] jQuery - Bestimmten Wert in PHP-Session übergeben

Dieses Thema im Forum "Webentwicklung" wurde erstellt von GaYlORd, 22. April 2010 .

  1. 22. April 2010
    jQuery - Bestimmten Wert in PHP-Session übergeben

    Hi,

    ich hab leider von JS und Ajax gar kein Plan und brauche kurz Hilfe.

    Mein Problem:
    Ich habe 2 Tabs mittels jquery gemacht. Das funktioniert auch wunderbar.

    JS:
    PHP:
    < script >
    $(function() {
        $(
    ".tabs" ). tabs ( ".panes > div" ). history ();
    });
    </
    script >
    HTML:
    HTML:
    <ul class="tabs">
     <li><a id="t1" href="#info_tab"><img src="images/info.png" /></a></li>
     <li><a id="t2" href="#wk_tab"><img src="images/basket.png /></a></li>
    </ul>
    
    <div class="panes"> 
     <div>Tab 1</div> 
     <div>Tab 2</div> 
    </div>
    
    code stark vereinfacht
    Das ganze funktioniert auch. Jetzt möchte ich gerne über die funktion ankersetzen(), dass, sobald man auf den ersten tab klick, #info_tab in $_SESSION["anker"] gespeichert wird. Dann kann ich prüfen, welcher Tab angeklickt wurde, so daß immer noch der selbe Tab angezeigt wird, wenn man eine andere interne Seite aufruft.

    Das sollte ja mit jQuery auch funktionieren.
    Hab mir gedacht, dass man so eine JS-Funktion aufrufen könnte:
    HTML:
    <a id="t1" onclick="ankersetzen(#info_tab);return false;" href="#info_tab">...
    Aber wie greife ich jetzt darauf zu? So dass der übergebene string ("#info_tab") in $_SESSION["anker"] gespeichert wird, aber die Seite nicht neugeladen wird?
    Hab viel gesucht und auch einiges probiert, aber das hat alles nicht funktioniert :-/

    Vielen Dank schonmal!

    gruß
    gl
     
  2. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    Setting a PHP $_SESSION[var] using jQuery - Stack Overflow

    hilft dir das weiter?
     
  3. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    hmm, irgendwie nicht :lol:

    Habs so eingebunden:

    HTML:
    <ul class="tabs">
     <li><a id="t1" href="#info_tab"><img src="images/info.png" class="tab" /></a></li>
     <li><a id="t2" href="#wk_tab"><img src="images/basket.png" class="tab" /></a></li>
    </ul>
    
    Das JS im Head-Bereich der indexDatei:

    PHP:
    $( "img.tab" ). onclick (function()
    {
        
    // Get the src of the image
        
    var  src  = $( this ). attr ( "src" );

        
    // Send Ajax request to backend.php, with src set as "img" in the POST data
        
    $. post ( "/anker.inc.php" , { "img" src });
    });
    die anker.inc.php (liegt im selben Ordner wie die index datei):
    PHP:
    <? php
        session_start
    ();
            
    $_SESSION [ 'imgsrc' ] =  $_POST [ 'img' ];
    ?>
    Aber er macht einfach gar nix
     
  4. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    Ich weiß nicht ob dir das Hilft aber in den Kommentar steht noch folgendes:

     
  5. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    ja, backend.php ist bei mir die anker.inc.php und da is ja das session_start(); drin.
     
  6. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    du musst dann ja auch abfragen welche tab zuletzt angeklickt wurde.
    dazu brauchst du kein ajax. gib einfach im script $_SESSION[imgsrc] aus, such den tab und zeig ihn an.
     
  7. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    ja ich versuch ihn so auszugeben:
    PHP:
    <? php  echo  $_SESSION [ 'imgsrc' ];  ?>
    aber das klappt leider nicht.
     
  8. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    definiere "das klappt leider nicht"
    meine glaskugel funktioniert grad ned.
     
  9. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    arg, sry, mein fehler^^

    Also, das is der Fehler:
    <b>Notice</b>: Undefined index: imgsrc in <b>...</b> on line <b>8</b><br>

    sprich, die Session wird nicht gesetzt
     
  10. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    hast du schon selber ein wenig rum probiert?

    ich mein als erstes ruft man dann "/anker.inc.php" per hand auf und schaut ob n syntax-fehler drinnen ist oder sowas in der art. anschließend prüft man bei seinem ajax-request "responseText" ob da was verdächtiges steht. danach dumped man die ganze session um zu prüfen ob überhaupt was drinnen steht und wenn alle stricke reißen postet man sein problem in nem forum

    was davon, außer direkt in nem forum nachzufragen, hast du schon gemacht? ^^
     
  11. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    Probier seit vorgestern dran rum. Gestern dann mein post. Hab sämtliche Fehler die am php-Code liegen konnten getestet und keine gefunden.
    Dann hab ich hier gepostet, da ich von Ajax kEine Ahnung hab uns somit auch keine Fehler finden kann. Keine Sorge, Frage meistens erst nach, wenn ich gar nicht weiterkomm.

    Was meinst du mit ResponseText? Kannst du mit das genauer erklären? Bzw.nen Bsp.geben, wenn ich in <à href> nen onclick schreib, wie es dann funktioniert? Das mit dem Image kommt ja nur von obigen Link.

    Danke schonmal bis hierhin!
     
  12. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    Code:
    $.post("/anker.inc.php", {"img": src}, function(d) { alert(d); });
     
  13. 23. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    cool, danke.

    Aber es kommt leider kein Alert-Fenster (oder wie man das auch immer nennt^^) und es wird auch kein Fehler ausgegeben (bzw. das selbe wie oben).
     
  14. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    hat keiner noch nen Vorschlag?
     
  15. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    muss es denn unbedingt über php geschehn?
    ich benutze dieses plugin für jquery und bin eigentlich zufrieden damit, ist selbsterklärend und reicht für meine sachen vollkommen aus... gucks dir mal an..
    http://code.google.com/p/jquery-session/
     
  16. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    hmm, so gehts auch

    habs bisher so:
    PHP:
         var  test  location . href . split ( '#' )[ 1 ];
        if(
    test  ==  "#info_tab"  ||  test  ==  "#wk_tab"  || $. session ( "anker" ) !=  null ){
         $.
    session ( "anker" test );
         
    alert ( "1"  + $. session ( "anker" ));
        }else{
            $.
    session ( "anker" "#info_tab" );
            
    alert ( "2" );
        }
        
    location . hash  = $. session ( "anker" );
    die alerts sind nur für mich, damit ich seh was er einfügen möchte.

    Aber er ändert mir die Werte nicht, also speichert sie nicht in der Session. Beim ersten mal hüpft er in die Schleife 2. Und beim 2ten mal zwar in die Schleife 1, aber er gibt immer #info_tab aus.
     
  17. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    ist das dein ganzer code? meinst du mit schleife, die abfrage jetzt oder sollte da noch was kommen?
    ist das ganze auch in ner function wo bei jedem anklicken der wert überschrieben wird?
     
  18. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    dsa war das problem: hab es in die Funktion, die die Tabs switcht, geschrieben.
    Jetzt hab ich eine neue dafür gemacht:

    PHP:
      $( document ). ready (function(){
       $(
    "#t1" ). click (function( event ){
           $.
    session ( "anker" , "#info_tab" );
         });
         $(
    "#t2" ). click (function( event ){
           $.
    session ( "anker" , "#wk_tab" );
         });
         if($.
    session ( "anker" ) == null ){
             $.
    session ( "anker" , "#info_tab" );
            }
        
        
    location . hash  = $. session ( "anker" );
    });
    und die links schauen so aus:
    HTML:
    <a id="t1" href="#info_tab"></a>
    
    bzw. id=t2 für den #wk_tab.

    So funktioniert es aufjedenfall.

    Ich lass es mal offen, vllt. kennt ja jemand noch eine optimalere Lösung.
    Bspw.: Momentan wird erst der link geöffnet,wenn man einen anklickt, und dann #wk_tab daran gehängt:
    index.html -> index.html#wk_tab
    wenn man jetzt auf zurück im browser klickt:
    index.html#wk_tab -> index.html -> vorherbesuchteseite.html#wk_tab -> vorherbesuchteseite.html
    man muss also immer zweimal auf zurück klicken um zur vorigen Seite zu kommen. Kann man das besser lösen?
    Hab es so versucht:
    PHP:
    $( document ). ready (function() {
          $(
    'a' ). each (
                  function( 
    intIndex  ){
                    
    // Anhang beim Link auf einen Blaetterkatalog (soll automatisch angehaengt werden, damit der BK mit entsprechenden Parametern aufgerufen wird)
                    
    var  bkValue  = $. session ( "anker" );
                    var 
    newHREF  = $(  this  ). attr ( 'href' ) +  bkValue ;                
                    $( 
    this  ). attr ( 'href' newHREF );
                  }
          );
    });
    er hängt schön brav das entsprechende daran, aber die tabs springen nicht um, sondern zeigen immer den standart tab an.

    danke an alle =)
    gruß
    gl
     
  19. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben


    mach das doch sonst so wie du die funktion schonmal hattest mit dem getattr("href") dann kanns das alles in einer funktion mit nem abfrage handlen ...
    nur als vorschlag um den code bisschen dynamischer zu gestalten damit du nicht für jeden deiner tabs ne funktion schreiben musst



    //EDIT:

    hab grad gesehn das du dein eintrag editiert hast,
    öhm theoretisch brauchst du den link ja nicht an den browser bzw in die adressleiste zu übergeben mach am ende deiner funktion doch return false; dann sollte der link nicht abgeschickt werden an den brwoser aber du erhälst trotzdem deinen wert für deine session. und kanns das weiter verarbeiten.

    gruß
     
  20. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    sind nur 2 tabs, aber kann ich noch ändern.

    die tabs laufen wie hier: http://flowplayer.org/tools/demos/tabs/history.htm
    Ich muss js doch sagen, welchen tab er öffnen soll und sie auch speichern. Oder kann man das auch ohne die anker? Das wäre natürlich dann noch besser, hab aber dafür keine Lösung gefunden.
     
  21. 25. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben


    Also auf der Seite wechselt die normale Seite ja nicht... kp iFrame oder Ajax, aber auf jedenfall
    musst du es ja nicht an den Browser übergeben, du kannst ja per name-Tag oder id-Tag auch einen wert übergeben und da die Session JS seitig verarbeitet wird. Sprich du musst deinen anker nicht direkt in den href setzten du kannst auch <a name="#tab1" href="link">text</a> und dann liest du ihn im JS wieder aus.
     
  22. 26. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    zwar nicht jquery, aber nachvollziehbar mit prototype:

    HTML:
    <!DOCTYPE html>
    <html>
     <head>
     <title>ActiveTab</title>
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>
     <script type="text/javascript">
     // <![CDATA[
     function getCookie(name) {
     var value = null;
     document.cookie.split(";").each(function(item) {
     var col = item.split("=");
     if(col[0].strip() == name) {
     value = col[1].strip();
     throw $break;
     }
     });
     
     return value;
     }
     
     function setCookie(name, value) {
     document.cookie = name + "=" + value + ";";
     }
     
     document.observe("dom:loaded", function() {
     //fetch tabs
     $$('#tabs ul li a.tab').each(function(a) {
     a.observe("click", function(e) {
     e.stop();
     
     var div = this.href.substr(this.href.indexOf("#") + 1);
     var col = $$("#tabs div." + div);
     if(!col || col.length == 0)
     return;
     
     $$("#tabs div.tab").each(Element.hide);
     setCookie("active-tab", div);
     col[0].show();
     });
     });
     
     //hide all tabs
     $$("#tabs div.tab").each(Element.hide);
     
     //display the first tab (or if set - the last displayed tab saved in a cookie)
     var tab = getCookie("active-tab") || "tab1";
     $$("#tabs div." + tab).each(Element.show);
     });
     // ]]>
     </script>
     </head>
     <body>
     <div id="tabs">
     <ul>
     <li><a href="#tab1" class="tab">tab1</a></li>
     <li><a href="#tab2" class="tab">tab2</a></li>
     </ul>
     <div class="tab tab1">tab1</div>
     <div class="tab tab2">tab2</div>
     </div>
     </body>
    </html>
     
  23. 26. April 2010
    AW: jQuery - Bestimmten Wert in PHP-Session übergeben

    sehr geil, danke murdoc! Genau das sollte es machen! Klappt super.

    danke an alle =)

    gruß
    gl
     
  24. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.