Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
refresh setTimeout function
#21
so, die array,s werden jetzt schön angezeigt und aktualisiert 5 sec.

jetzt muss ich die tabelle erstellen! das mach ich mit einem javascript zwischen <table>? oder ist das falsch?
habt ihr ein beispiel für mich?

https://oesoft.de

Code:
       <body>
         <h1>Tabelle erstellen</h1>
        <table>
        
        
        </table>
       </body>

mir fällt gerade auf, dass die pagination auch nicht läuft Undecided

Code:
<div id="pagniton" class="table"></div>
Zitieren
#22
ich würde das tbody nutzen. Ich mache dir mal gerade ein Beispiel fertig , weil sehe jetzt ja deine Ausgabe
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#23
Thumbs Up 
(08.07.2022, 14:15)admin schrieb: ich würde das  tbody nutzen. Ich mache dir mal gerade ein Beispiel fertig , weil sehe jetzt ja deine Ausgabe

 ja, meinte ich auch <tbody> [Bild: thumbsup.png] vielen dank Wink
Zitieren
#24
Du solltest nicht so viele Daten aus der Db holen.Es würden ja 50 Zeilen oder so reichen, dafür gibt es ha das pagniton , damit man nur Teile anzeigen muss.
Erstens hast du so wonniger Datentransfer und wie du in meinem Beispiel sehen kannst dauert das auch etwas bis Javascript das zusammen gebaut hat


Man könnte die tabelle auch erstellen mit create
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#25
(08.07.2022, 15:33)admin schrieb: Du solltest nicht so viele Daten aus der Db holen.Es würden ja 50 Zeilen oder so reichen, dafür gibt es ha das pagniton , damit man nur Teile anzeigen muss.
Erstens hast du so wonniger Datentransfer und wie du in meinem Beispiel sehen kannst dauert das auch etwas bis Javascript das zusammen gebaut hat


Man könnte die tabelle auch erstellen mit create

 muss dich nochmal nerven :-) habe deine einzelnen codeschnipsel soweit verstanden.
 aber diese codeschnipsel müssen doch in einem script zusammen laufen oder?

also:
 1.) abfrage = befinden sich daten in der db alle 5 sec.
 2.) wie viele daten befinden sich in der db = für das pagniton (limit)
 3.) erzeuge eine Tabelle


also mache ich hiermit weiter oder?

Code:
<script>
var relodzeit=5;
var max_button=4;// xx Seiten plus und minus
var limit=15;
var page=11;
var g;
function abfrage(x){
    if(x<=0){
        g=1;
        if(x==-1){
            g=2;
        }
        $.ajax({
            type: 'POST',
            url: 'hole_daten.php',
            data:{check:g,page:11,limit:limit},   
            success: function(response){
                if(response!=1){
                    document.getElementById('infobox').innerHTML='<p style="color:green">neue Daten werden geladen</p>';
                    document.getElementsByTagName('table')[0].innerHTML=`<tbody>${response}</tbody>`;    
                }else{
                    document.getElementById('infobox').innerHTML='<p style="color:red">derzeit liegen keine neuen Daten vor!</p>';
                }
                x=relodzeit;
                setTimeout(function(){
                    abfrage(x)
                },2000);
            }    
        });
    }else{
         x--;
         setTimeout(function(){
              document.getElementById('infobox').innerHTML='<p>prüfe Datenbank auf neue Daten in '+x+' Sekunden</p>';
              abfrage(x)
         },1000)
    }
}

abfrage(-1)
    $.ajax({
        type: 'POST',
        url: 'hole_daten.php',
        data:{check:3},   
        success: function(response){
            if(response>(page*limit)){
                max=(page*limit);
            }else{
                max=response;
            }
            document.getElementById('count').innerHTML="<h2>Datensatz: "+(((page-1)*limit)+1)+" - "+max+" von  "+response+" </h2>";
            if(response>=limit){
                    letzter=(response/limit)+1;
                    pag='';
                    for(we=(page-max_button);we<=(page-1);we++){
                        if(we>=1){
                            pag+=`<li class="pagination wenniger"><a class="pagination" href="monitorOESoft_unerledigte_einsaetze.php?page=${we}">${we}<a/></li>`;
                        }
                    }
                    pag+=`<li class="pagination hier"><a class="pagination" href="monitorOESoft_unerledigte_einsaetze.php?page=${page}">${page}<a/></li>`;
                    for(me=(page+1);me<=(page+max_button);me++){
                        if(me<letzter){
                            pag+=`<li class="pagination mehr"><a class="pagination" href="monitorOESoft_unerledigte_einsaetze.php?page=${me}">${me}<a/></li>`;
                        }
                    }
            }else{
                 pag='<li class="pagination mehr"><a class="pagination" href="monitorOESoft_unerledigte_einsaetze.php?page=1">1<a/></li>';
            }
            document.getElementById('pagniton').innerHTML=pag;
        }    
    });
</script>
Zitieren
#26
Das sieht alles irgendwie unnötig umständlich aus.
Ich weiß ja nicht was das alles genau sein soll und was das ist.

Du holst immer noch alle Dateien.
Warum hast du 2 Ajax abfragen zur gleichen adresse ?
Das kann man alle in einer machen .
Das pagination braucht du kein extra Ajax geben , du must nur wissen auf welcher Seite du gerade bist , und wie viele Daten komplett in der Db stehen.




Du solltes erst mal eine Abfrage machen ob es neue Daten gibt
Zb
function checke_daten(){
//ajax
if(ja){
hole_daten()
}else if(nein){
// 5 sekunden warten
// funktion selber aufrufen checke_daten()
}
}

checke_daten()

functiom hole_daten(){
hier solltest du dann überlegen was du holst.
Brauchst du nur die neuen Daten?
Oder nur die am Angang stehen ?

Zb du bist auf Page 1, dann gebe den Ajax den wert mit und gebe dann z. B. die ersten 50 daten raus.
Bist du auf Page 2 dann daten von 50 bis 100
heir sollte das Ajax Script die 50 Zeilen rausgeben, die Anzahl der kompletten Daten der Tabelle
Dann zabelle bauen und pagniton anpassen
}




Das pagniton könnte man wahrscheinlich auch einfacher bauen , bzw recorcen schonende.
Aber das lass erstmal zu Seite und versuche das mit der Tabelle .
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#27
So meine ich das nur die Daten geholt werden die du brauchst .
Zb Seite 2 , , hole daten 11-20 ( bei 10 Datenasätze he Seite )
Das was ich hier mit den Button simuliere, musst du aus der Db holen


Ich baue dir da noch das pagniton Ding  ein . 
Dann musst du nir noch eine Ajax script erstellen was daten von bis holt , und die aktuelle   Anzahl der Daten (falls sie sich ändern, wenn es immer 250 bleiben brauch man das ja nicht)
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#28
ich muss ja an alle daten dran, aber man kann pro seite (page) ein limit festlegen 25 datensätze oder so?
das sollte doch kein problem sein oder?

dann zu deiner abfrage :

Code:
function checke_daten(){
//ajax
if(ja){
hole_daten()
}else if(nein){
// 5 sekunden warten
// funktion selber aufrufen checke_daten()
}
}
das prinzip habe ich verstanden!
aber wie muss die abfrage aussehen das ich ja oder nein bzw. false oder true oder 0 oder 1 bekomme?

also if ????????????? = true {
 
} end else {

}

es muss ja eine sql abfrage sein zum beispiel:

Code:
$result = mysqli_query($link, "SELECT TelegramStorage.id FROM TelegramStorage");
$anzahl = mysqli_num_rows($result);

die variable $anzahl wird als globale variable gespeichert

if ($anzahl != $????) ?? was muss hier hin? !=
Zitieren
#29
Erste Abfrage, mit Ajax guckst du, ob neue Daten da sind. Da gibst du true oder dalse zurück.

Oder einfach nee 1
Dann wenn 1 in Javascript ankommt holst du die Daten 

So habe hier dein Javascript zu ende gebaut , du musst jetzt nur noch zu sehen, dass du es anpasst , so das es bei dir funktioniert.
Die Gesamtzahl der Datensätze fragst du mit im Php ab , und gibst es mit zurück.

Lass dir zeit und mach erst ein nach den anderen.
Gehe so vor wie der Code abgearbeitet werden muß.

Viel hast du jetzt nicht mehr zu tun.

Hier mein Code


Bin erstmal weg , melde mich morgen wieder
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#30
möchte es ja auch verstehen! jeden einzelnen schritt!

deine erste ajax abfrage sieht wie folgt aus:




Code:
function abfrage(x){
    if(x<=0){
        g=1;
        if(x==-1){
            g=2;
        }
        $.ajax({
            type: 'POST',
            url: 'daten_unerledigt.php',
            data:{check:g,page:11,limit:limit},   
            success: function(response){
                if(response!=1){
                    document.getElementById('infobox').innerHTML='<p style="color:green">neue Daten werden geladen...</p>';
                    document.getElementsByTagName('table')[0].innerHTML=`<tbody>${response}</tbody>`;    
                }else{
                    document.getElementById('infobox').innerHTML='<p style="color:red">derzeit liegen keine neuen Daten vor...</p>';
                }
                x=relodzeit;
                setTimeout(function(){
                    abfrage(x)
                },4000);
            }    
        });
    }else{
         x--;
         setTimeout(function(){
              document.getElementById('infobox').innerHTML='<p>prüfe Datenbank auf neue Daten in '+x+' Sekunden</p>';
              abfrage(x)
         },1000)
    }
}



dann schreibst du:


Zitat:Erste Abfrage, mit Ajax guckst du, ob neue Daten da sind. Da gibst du true oder dalse zurück.

Oder einfach nee 1
Dann wenn 1 in Javascript ankommt holst du die Daten 
wie schon erwähnt, dass prinzip ist verstanden! aber was muss ich prüfen um eine 1 oder true zu erhalten?





was ist true oder was ist 1??? wie erhalte ich diese werte? was muss geprüft werden?






den ertsen teil musst du mir erklären, zeile für zeile!


was ist "x" und wie kommt die "0" bzw. "-1" zustande?


Code:
function abfrage(x){  gibt true zurück, wenn x kleiner als 0 ist
    if(x<=0){
        g=1;
        if(x==-1){ gibt true zurück, wenn x und -1 gleich sind
            g=2;
        }


wenn x = die relodzeit (5 sekunden) ist, hat es ja nicht mit dem zustand der datenbank zu tun? oder?


du schreibst immer prüfe ob neue daten vorhanden sind! aber wie prüfe ich das, dass ich true oder false zurückbekomme?

warum hier immer so große zeilenumbrüche gesetzt werden, keine ahnung, dass bin ich nicht!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste