tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von para_noid
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
292
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Purdey Purdey ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    42
    Hallo ich habe ein php Script welches aktuell mittels MySQL
    aus einer Datenbank Datensätze ermittelt und die Inhalte dann
    in einer Schleife für alle Datensätze in ein vorhandenes DIV schreibt.
    Dies funktioniert alles ganz gut, doch leider wird das Div nicht mit neuem Inhalt gefüllt,
    wenn nun in der Abfrage ein Datensatz mehr ermittelt wird?

    Ist es möglich, das ich via SQL prüfe wie viel DS existieren (bspw. 8)
    und wenn es dann mehr als 8 DS sind soll ein Reload ausführe.

    Und zwar nur dann, super wäre also eine Überprüfung der Anzahl der DS alle 30 Sekunden,
    Sind es mehr als 8 DS dann neuladen ansonsten soll alles so bleiben.

    Wie gehe ich hier vor und wie realisiere ich die Prüfung vor dem Reload?

    Ich hoffe meine Darstellung war verständlich?
     

  2. #2
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Du müsstest mittels Javascript-Timeout alle 30 Sekunden eine Ajax-Ansage losschicken, die ein PHP-Skript das gleiche Query (also mit allen Where's usw.) als Count abfragen lässt. Wenn das Ergebnis größer 8 ist lädst du neu (kam jetzt nicht ganz rüber, ob die gesamte Seite neugeladen werden oder nur der Div-Inhalt erneuert werden soll), für Letzteres also grob:
    • Code :
      1
      
      setTimeout(refreshDiv, 30000);
    • Code :
      1
      2
      3
      4
      5
      6
      7
      8
      
      function refreshDiv(){
        $.ajax({
          url: "count.php",
          success: function(content){
            if(content != "none") $('#divid').html(content);
          }
        });
      }
    • im angesprochenen PHP-Skript
      PHP-Code:
      "SELECT COUNT(*) AS 'Anzahl' FROM ..."

      /* Verarbeitung Count-Abfrage */

      if($res['Anzahl'] > 8){

        
      /* Daten über zweite Abfrage holen */

        
      echo $daten;

      }else{

        echo 
      "none";



    Ich merk grade dass die 8 wohl nur ne Hausnummer war - in dem Fall könntest du die Anzahl beim ersten Aufruf in die Session schreiben und die im angesprochenen Skript entsprechend statt der 8 abfragen.

    Wenn das irgendwo zu ungenau war frag ruhig, is schon spät
    Purdey bedankt sich. 
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

  3. #3
    Purdey Purdey ist offline Mitglied Bronze
    Registriert seit
    Sep 2007
    Beiträge
    42
    Vielen Dank für diesen Beitrag, ich habe es so gebaut nur wie realisiere ich jetzt das ich möglichst mit nur einem Script arbeite, was die Datensätze raussucht. Stand jetzt habe ich index-datei in der ich mir datei1 anzeigen lasse und welche datei2 aufruft und datei2 nun antwortet mit none oder mit dem Inhalt aus dem SQL welcher entsprechend verarbeitet wurde. Schön wäre ja wenn ich nun in Datei eins sagen könnte, wenn du das erste mal lädst dann lade auch Ergebnisse aus Datei2 ansonsten prüfe immer schön ob es differenzen gibt und gebe mir selbige zurück. Ist der Ansatz umsetzbar?
     

  4. #4
    Avatar von para_noid
    para_noid para_noid ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    144
    Du kannst Datei2 includen und innerhalb Datei2 das normale Query einmal ausführen lassen.

    Grob nach dem Schema:
    PHP-Code:
    /* innerhalb von datei1.php */

    $nocount true;
    include 
    'datei2.php';
    echo 
    getData();

    /* innerhalb von datei2.php */

    if(!isset($nocount)){
      
    "SELECT COUNT(*) AS 'Anzahl' FROM ..."

      
    /* Verarbeitung Count-Abfrage */

      
    if($res['Anzahl'] > 8){

        
    /* Funktion aufrufen */
        
    echo getData();

      }else{

        echo 
    "none";

      }

    }

    function 
    getData(){

      
    /* Daten über zweite Abfrage holen */ 

      
    return $datenVonDBAbfrage;

    So wird beim ersten Aufruf datei2.php inkludiert und die darin enthaltene Funktion getData aufgerufen, in der du die normale DB-Abfrage hast.
    Da vorher $nocount gesetzt wurde, wird die Zählung nicht durchgeführt.

    Danach wird ja alle 30 Sekunden die datei2.php erneut angesprochen. Dazu wird sie quasi einzeln aufgerufen, und in dem Zusammenhang ist $nocount nicht gesetzt, also wird die Zählung durchgeführt und bei Erfolg dieselbe Funktion getData aufgerufen.
     
    Für die Übereinstimmung von Niederschrift und Hirninhalt.

Ähnliche Themen

  1. JSF, XHTML-Anker für Pagereload?
    Von schlumsch im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 08.12.10, 16:05
  2. MYSQL: AVG aus GROUP BY Ergebnis
    Von prey im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 03.11.07, 14:54
  3. MySQL Ergebnis mit PHP darstellen.
    Von janosh75 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 24.04.07, 16:11
  4. [MySQL] Count-Ergebnis als Auswahlkriterium
    Von GreenThunder im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 04.06.06, 11:19
  5. PHP/MySQL] Merkwürdiges Abfrage-Ergebnis
    Von Moritz123 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 14.03.05, 12:50

Stichworte