Mike: php aufrufen in einem popup von Bootstrap

Ich benutze das bootstrap Framework zum gestalten meiner Seiten. Nun habe ich dort ein popup Fenster das Aufpoppt wenn man eine Information möchte.

Dieses wird mit Javascript gestartet und nennt sich modal.

Nun würde ich gerne eine Zähler integrieren, der den Aufruf in der Datenbank speichert.

Jetzt kommt mein Problem. Wenn ich die Seite Ansicht aufrufe, wird der Zähler aktiviert. Und in der Datenbank abgespeichert.

Aber wie bekomme ich das hin, das der Zähler aktiviert wird, wenn das Bootstrap modal popup aufgerufen wird

Mike

  1. Tach!

    Aber wie bekomme ich das hin, das der Zähler aktiviert wird, wenn das Bootstrap modal popup aufgerufen wird

    Indem du jeweils einen (Ajax-)Request zum Server stellst, wann immer das Modal geöffnet wird. Das ist die einfachste Möglichkeit, aber auch die zuverlässigste. Eine andere wäre, die Öffnungen zu zählen und diese Zahl in einem geeigneten Moment an den Server zu übertragen. Das spart Requests, aber herauszufinden, wann dieser Moment sein soll und dass der auch zuverlässig auftritt, wäre die Herausforderung daran.

    dedlfix.

    1. Hallo dedlfix,

      um das zu ergänzen - wozu man nur einen schnellen Blick in die Doku von BS werfen muss: dafür braucht man eine Registrierung auf das entsprechende BS-Event.

      Das folgende Beispiel nimmt an, dass modalOpened.php die ID des modalen Dialogs als Eingabeparameter mit Name dialog bekommt, d.h. dieser Aufruf sollte in $_POST["dialog"] den String "myModal" vorfinden. Es nimmt weiter an, dass die Response ein JSON-String ist, in dem ein Objekt mit count-Eigenschaft zu finden ist. Dieser Count wird im Beispiel in einem data-Attribut des Dialogs vermerkt (was nicht nötig ist aber nützlich sein könnte) und muss dann noch irgendwie zur Anzeige gebracht werden. Das Beispiel nimmt an, dass der Dialog ein Element mit class="counter" enthält, in dem der Zählerstand eingetragen werden muss.

      $('#myModal').on('show.bs.modal', function (e) {
        $.post("http://example.org/modalOpened.php", { dialog: this.id }, handleModalOpened, "json"); 
      
        function handleModalOpened(data) {
          if (data && data.count)
             this.dataset.data-counter = data.count;
             $(".counter", this).text(data.count);
        });
      })
      

      Rolf

      --
      sumpsi - posui - clusi