Ik heb een functie gevonden welke voor mij resultaten ophaalt uit de database en deze weergeeft op de pagina. Ik kan via de functie een limiet opgeven hoeveel resultaten ik wilt weergeven, indien er meer resultaten nog zijn weergeeft die een laad meer resultaten button, dit werkt perfect indien er nog meer resultaten zijn.

Het probleem is dat de "weergeef meer results" button altijd wordt weergeven dus ook indien er geen resultaten zijn, hoe zorg ik ervoor dat die enkel de button weergeeft indien er nog meer resultaten zijn.

Dit is de code:


  <script>

        $(document).ready(function() 
        {

        var track_click = 0; //track user click on "load more" button, righ now it is 0 click
        
        var total_pages = <?php echo $total_pages; ?>;
        var domeinid = <?php echo $domeinId; ?>;

        $('#results').load("../includes/autoloadscroller/autoload_process.php?val="+domeinid+"", {'page':track_click}, function() {track_click++;}); //initial data to load
      
        $(".load_more").click(function (e) { //user clicks on button
       
            $(this).hide(); //hide load more button on click
            $('.animation_image').show(); //show loading image

            if(track_click <= total_pages) //user click number is still less than total pages
            {
     
                //post page number and load returned data into result element
                $.post('../includes/autoloadscroller/autoload_process.php?val='+domeinid+'',{'page': track_click}, function(data) 
                {
               
                    $(".load_more").show(); //bring back load more button
     
                    $("#results").append(data); //append data received from server
                   
                    //scroll page smoothly to button id
                    $("html, body").animate({scrollTop: $("#load_more_button").offset().top}, 500);
                   
                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received
       
                    track_click++; //user click increment on load button
               
                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
                    alert(thrownError); //alert with HTTP error
                    $(".load_more").show(); //bring back load more button
                    $('.animation_image').hide(); //hide loading image once data is received
                });
               
               
                if(track_click >= total_pages-1) //compare user click with page number
                {
                    //reached end of the page yet? disable load button
                    $(".load_more").attr("disabled", "disabled");
                }
             }
             
            });
    });

     
    </script>
Als er geen resultaten zijn, zou totalpages toch ook 0 moeten zijn? Dat zou de laatste if-statement toch worden opgeroepen?
Voeg daar hide() aan toe, of maak daarin nog een statement if totalpages === 0 hide()

if(track_click >= total_pages-1) //compare user click with page number
                {
                    //reached end of the page yet? disable load button
                    $(".load_more").attr("disabled", "disabled").hide();
                }
Op regel 47 wordt de load_more button disabled:

//reached end of the page yet? disable load button
$(".load_more").attr("disabled", "disabled");

Werkt dat wel? Maak daarvan dan eens:

$(".load_more").hide();
Dit gaat natuurlijk alleen werken wanneer je 2x een laadactie uitvoert.
Een maal MET een limiet en een maal ZONDER limiet.
De query zonder limiet mag ook een count zijn.

Die zonder limiet heb je nodig om te weten of er nog meer resultaten geladen kunnen worden.
Ik denk dat je dan ook nog bij moet houden vanaf welk item je geladen hebt.

Zijn er totaal 500 items, je hebt er 100 geladen vanf iten 300 dan zijn er nog meer te laden. Heb je er honderd geladen vanaf 400 dan heb je de laatste te pakken, dus niet meer. Denk hierbij ook aan resten zoals 100 records vanaf 300 geladen terwijl er totaal 450 items zijn.
Bedankt voor de reacties!

Ik heb al jullie code tips geprobeerd maar heeft niet mogen baten.

De button wordt standaard weergeven MAAR zodra ik erop klik wordt die indien er geen resultaten meer in de database zijn "disabled" dus dat stukje code werkt prima..

Alleen is die standaard enabled ondanks er geen resultaten zijn of te weinig.

Ik zal de code die bovenaan de pagina staat ook eens plaatsen, wellicht dat het iets duidelijk wordt:

<?php

          $items_per_page = 3; // aantal per pagina
          $database = new database(); 

          // gebruik id van bedrijf.
          $q = ("SELECT * FROM beoordelingen 
          WHERE domein_id = ".$domeinId." 
          AND status = 1" );

          $result = $database->query($q); 
          $total_records = mysqli_num_rows($result);
          $total_pages = ceil($total_records/$items_per_page);
?>

Reageren