• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Inhalte per scrollen nachladen

lokoroko

Mitglied
Hallo,

wie man meiner Überschrift bereits entnehmen kann bin ich gerade dabei einen Code zu schreiben der Inhalte nachlädt sobald man nach unten gescrollt hat.

Ich habe dafür als Basis einen Code aus dem Web genommen der wie folgt aussieht:

Scroll.php:
Code:
<!DOCTYPE html>
<html lang="de">
<head>
  <meta http-equiv="X-UA-Compatible" content="IE=9">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
  <meta name="robots" content="index,follow">
  <title>Datensätze beim scrollen nachladen</title>
  <link rel="stylesheet" href="Style.css" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
 
  <script type="text/javascript">
  $(document).ready(function()
  {  
    function loadNextData()
    {
      var userID=$(".block:last").attr("id");
      $('div#loader').html('<img src="images/loader.gif">');
      $.post("loaddata.php?lid="+userID,
 
      function(data)
      {
        if (data != "")
        {
          $(".block:last").after(data);    
        }
        $('div#loader').empty();
      });
    };
 
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        loadNextData();
      }
    });
  });
  </script>
</head>
<body>
 
<div id="wrapper">
   
  <?php include('loaddata.php'); ?>
  <div id="loader"></div>
</div>
 
</body>
</html>

Und loaddata.php:
Code:
<?php
include("Zugang.php");
 
if(isset($_GET['lid']))
{
  $lid = $_GET['lid'];
  $lim = 5; //Anzuzeigende Datensätze beim scrollen
}
else
{
  $lid = 0;
  $lim = 5;//Anzuzeigende Datensätze beim Start
}
 
if($lid==0) $abfrage = ""; else  $abfrage = " WHERE id > ".$lid;
 



$q_data = mysql_query("SELECT id, path AS username
                       FROM bildtabelle ".$abfrage." ORDER BY id ASC LIMIT ".$lim);
while($r_data = mysql_fetch_array($q_data))
{
  $userido = $r_data['id'];
    var_dump($userido);
  if($r_data['username']!=' ') $username = $r_data['username']; else $username = 'unbekannt';
?>
 

<div id="<?php echo $userido; ?>" class="block" ><?php echo "<b>".$userido."</b> ".$username; ?></div>
 
<?php
}
?>


Die Basis aus dem Netz funktioniert auch wunderbar. Also habe ich mich daran gemacht das ganze für mich zu optimieren und auf meinen Code anzuwenden. An sich funktioniert die eigentliche Funktion auch schon mal. Wenn man nach unten gescrollt hat werden weitere Bilder nachgeladen. Das Problem das ich jedoch habe ist, dass die nachgeladenen Bilder exakt die selben 5 Bilder sind die auch von Anfang an zu sehen sind ...

Aber hier mein Code, vielleicht kann mir ja einer von euch helfen :)

Hauptseite.php PS ( Ich habe das ganze mal auf das relevante gekürzt):
Code:
<script type="text/javascript">
  $(document).ready(function()
  {  
    function loadNextData()
    {
      var userID=$(".rahmen:last").attr("id");
      $('div#loader').html('<img src="okö.gif">');
      $.post("loaddata.php?lid="+userID,
 
      function(data)
      {
        if (data != "")
        {
          $(".rahmen:last").after(data);    
        }
        $('div#loader').empty();
      });
    };
 
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        loadNextData();
      }
    });
  });
  </script>

<div id="wrapperfour">
<legend>Popular</legend>
<div id="servicetext">
<?php include('loaddata.php'); ?>
  <div id="loader"></div>  

</div>
</div>


loaddata.php:
Code:
<?php  
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
$idx = 0;  
   
if(isset($_GET['lid']))
{
  $lid = $_GET['lid'];
  $lim = 5; //Anzuzeigende Datensätze beim scrollen
}
else
{
  $lid = 0;
  $lim = 5;//Anzuzeigende Datensätze beim Start
}
 
if($lid==0) $abfrage = ""; else  $abfrage = " AND id > ".$lid;
   
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id, bildtabelle.ideo FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ".$abfrage." ORDER BY timestamp DESC LIMIT ".$lim;
foreach ($pdo->query($sql) as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li>
        <div class='gallery' id='".$row['ideo']."'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div>
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
}  
?>
 
Werbung:
Leider ist aus deinem Code nicht ersichtlich, welche(n) Wert() die Variable userID annehmen kann. Ich vermute aber, dass sie konstant ist. In dem Fall werden immer die selben Bilder aus der DB ausgelesen. Du musst diese Variable von Aufruf zu Aufruf erhöhen.

Nun ja die Variable userID wird ja wie folgt definiert
Code:
 var userID=$(".rahmen:last").attr("id");

In meinem ersten Posting, im zweiten Code findet man dann diese Zeile
Code:
<div class='gallery' id='".$row['ideo']."'>

die in attr aufgeführte id soll $row['ideo'] sein. Ich weiß aber nicht ob das wirklich das Problem ist.

Mir ist dann nämlich auch noch aufgefallen das im Original code das hier vorkommt
ORDER BY id ASC

Während bei mir ORDER BY timestamp DESC steht. Wenn das was du sagst aber stimmt dann müsste ich doch eigentlich runterzählen oder nicht ?


Ich habe nur irgendwie das Gefühl das der Fehler irgendwo in diesem Code schlummert ...

Code:
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id, bildtabelle.ideo FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ".$abfrage." ORDER BY timestamp DESC LIMIT ".$lim;
foreach ($pdo->query($sql) as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li>
        <div class='gallery' id='".$row['ideo']."'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div>
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>

Das dumme ist nur das nicht von dem was ich probiere auch hilft...
 
Zuletzt bearbeitet:
Okay also ich bin deinem Ratschlag mal nachgegangen und habe mir den Code nochmal angeschaut mit dem die Kommentare nachgeladen wurden. Der Unterschied ist ja das dieses mal die Inhalte per scrollen nachgeladen werden sollen, also ich habe ich versucht die beiden Codes miteinander zu kombinieren.

Beginnen wir mit dem Javascript/Ajax-Teil auf Hauptseite.php:
Code:
<script>
    var start = 0;
        var count = 5;
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
            $.ajax({
                url: "loaddata3.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
</script>

Ebenfalls auf Hauptseite.php um loaddata3.php einzubinden:
Code:
<div id="wrapperfour">
<legend>Popular</legend>
<div id="servicetext">
<?php include('loaddata3.php'); ?>
  <div id="loader"></div>

</div>
</div>


Und dann zum Schluss noch die loaddata3.php:
Code:
<?php    
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken 
$idx = 0;    
   
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;


try { 
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ORDER BY timestamp DESC LIMIT $start, $count2";  
 $ergebnis = $db->query($sql);
    $countread = 0;
foreach ($ergebnis as $row) {
    if ($countread < $count) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li> 
        <div class='gallery'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div> 
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
    }
        $countread++;
}  
if ($countread < $count2) {
        echo '<span class="end"></span>';
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>

Aus irgendeinem Grund werden aber $start und $count2 nicht übergeben wodurch ich aktuell immer eine Fehlermeldung für ein invalid Argument bekomme...



EDIT: Mir fällt gerade ein das ich doch eigentlich loaddata3.php nicht über include einbeziehen muss sondern das Div-Element "servicetext" auch über so einen Code gefüllt werden kann oder ?
$("#servicetext").append(newpictures);
 
Zuletzt bearbeitet:
Werbung:
Also ich habe das ganze mal ausprobiert und es scheint so als wenn loaddata3.php gar nicht mit einbezogen wird, woran könnte das liegen ?. Das Div-Element "servicetext" bleibt jedenfalls leer...

So sieht das Javascript jetzt aus (Hauptseite.php):

Code:
<script>
    var start = 0;
        var count = 5;
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
            $.ajax({
                url: "loaddata3.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                   
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                 $("#servicetext").append(newpictures);  
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
</script>

Das Div-Element ebenfalls auf Hauptseite.php:

Code:
<div id="wrapperfour">
<legend>Popular</legend>
<div id="servicetext">

  <div id="loader"></div>  

</div>
</div>

Und dann noch loaddata3.php;

Code:
<?php  
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
$idx = 0;  
   
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;


try {
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ORDER BY timestamp DESC LIMIT $start, $count2";
 $ergebnis = $db->query($sql);
    $countread = 0;
foreach ($ergebnis as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li>
        <div class='gallery'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div>
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
        $countread++;
}  
if ($countread < $count2) {
        echo '<span class="end"></span>';
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
 
Erstaunlicherweise gar nichts...
Der Bereich in dem Div-Element "servicetext" bleibt auch völlig leer. Es passiert einfach gar nichts.

Also das einbinden der Datei "loaddata3.php" über Javascript funktioniert gar nicht.

Ich habe jetzt weiter getestet und dabei ist mir auch aufgefallen das nicht ein mal die Werte für Start und Count per POST übergeben werden. Irgendwas muss beim Javascript schief gehen da ich praktisch loaddata3.php nicht anspreche. Zumindest zeigt sich keine Reaktion

Javascript auf Hauptseite.php:

Code:
<script>
    var start = 0;
        var count = 5;
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
            $.ajax({
                url: "loaddata3.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                    
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                 $("#servicetext").append(newpictures);   
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
</script>
 
Zuletzt bearbeitet:
Also gute Nachrichten :) Ich habe es gerade hinbekommen. Der Javascript-Code schaut nun so aus:

Code:
<script>
     $(document).ready(function()
  {
    var start = 0;
        var count = 5;
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
            $.ajax({
                url: "loaddata3.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                    
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                 $("#servicetext").append(newpictures);   
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
         morepic();
        });
</script>
 
Werbung:
Was hat denn den Erfolg gebracht? Einfügen von document-ready?

Das zum einen und zum anderen dieser Part hier :
Code:
$(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
         morepic();
        });

Das letzte morepic() ist dazu gekommen und hatte gefehlt...
Aber jetzt ist alles gut :D Vielen Dank für die Unterstützung und Hilfe !
 
Was hat denn den Erfolg gebracht? Einfügen von document-ready?

Mir ist komischerweise jetzt erst aufgefallen, dass es seitdem ich die Inhalte per scrollen nachlade es zu einem Problem mit dem auslesen der Kommentare kommt. Ich versuche mal zu beschreiben was los ist...

Vorab: das auslesen der Bilder und der Kommentare an sich funktioniert und diese werden in der Lightbox angezeigt.

Klicke ich auf das erste Bild das ausgelesen wird, dann werden mir die dazugehörigen Kommentare ebenfalls angezeigt. Gehe ich nun über den Pfeil innerhalb der Lightbox bspw. nach rechts um das nächste Bild zu sehen so werden die Kommentare des neuen Bildes alle doppelt angezeigt....
Das ganze zieht sich dann von Bild zu Bild. Auf einmal werden alle Kommentare doppelt angezeigt und es bricht das Chaos aus. Das ganze geht soweit so das man irgendwann den Überblick verliert welches Kommentar zu welchem Bild gehört. Das ganze passiert aber nur wenn ich die Pfeile innerhalb der Lightbox nutze. Anklicken außerhalb der Lightbox klappt einwandfrei.

Ich habe dann aber einfach mal ausprobiert woran das ganze denn liegen könnte. Das ganze tritt auch erst seitdem auf seit ich das nachladen per scrollen hinzugefügt habe.

Hat jemand eventuell ne Idee wie ich an diesen Fehler am besten ran gehe ? Ich poste jetzt auch nochmal den betreffenden Code.
Könnte es sein das es zu Problemen kommt weil die selben Variablen verwendet werden ? Habe es aber auch schon mit anderen probiert...

Auslesen der Bilder und nachladen per scrollen (loaddata_loogin.php):
Code:
<script src="lightboxtest2.js"></script>
<?php 
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
$idx = 0; 
  
$start = $_POST["start"];
$count = $_POST["count"];
$userid = $_POST["userid"];
$count2 = $count;


try {
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen`, `abonennten` WHERE adressen.id = bildtabelle.user_id AND bildtabelle.user_id = abonennten.followed AND abonennten.iduser = '$userid' ORDER BY timestamp DESC LIMIT $start, $count2";
 $ergebnis = $pdo->query($sql);
    $countread = 0;
foreach ($ergebnis as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li>
        <div class='gallery'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div>
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
        $countread++;
} 
if ($countread < $count2) {
        echo '<span class="end"></span>';
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>


auslesen der Kommentare (Kommentar_nachladen.php):

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
?>
<?php



$z= $_POST["imgurl"];
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count + 1;


 
try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT kommentare.id ,kommentare.userid, kommentare.k_path, kommentare.eintrag, kommentare.autor, kommentare.datum, DATE_FORMAT(datum,'%d.%m.%Y um %H:%i') AS meindatum FROM `kommentare` WHERE kommentare.k_path = '$z' ORDER BY kommentare.datum DESC LIMIT $start, $count2";
    $ergebnis = $db->query($sql);
    $countread = 0;
 
    foreach ($ergebnis as $zeile) {
        if ($countread < $count) {
          if ($userid == $zeile['userid']) {
              $delete = "<button class='kreuz' data-userid='$userid' data-commid='".$zeile['id']."'><i id='icon3' class='fa fa-times' aria-hidden='true' ></i></button>";
        printf("<p class='rest'><a class='Kom_name' href=User_Seite.php?user=".$zeile['userid']." href=\"mailto:%s\">%s</a> am %s $delete</p>
          <h3>%s</h3><p style='margin-bottom: 15px;'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );
    } else {printf("<p class='rest'><a class='Kom_name' href=User_Seite.php?user=".$zeile['userid']." href=\"mailto:%s\">%s</a> am %s</p>
          <h3>%s</h3><p style='margin-bottom: 10px'>%s</p><hr noshade=\"noshade\" />",
          urlencode($zeile['']), // da stand mal email
          htmlspecialchars($zeile['autor']),
          htmlspecialchars($zeile['meindatum']),
          htmlspecialchars($zeile['']), // hier stand mal userid
          nl2br(htmlspecialchars($zeile['eintrag']))
          );}
        }
        $countread++;
    }
    if ($countread < $count2) {
        echo '<span class="ende"></span>';
    }
}  catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
 
Zuletzt bearbeitet:
Vielleicht auch noch interessant. Das Javascript zum ersten Code (loaddata_loogin.php):

Code:
<script>
     $(document).ready(function()
  {
    var start = 0;
        var count = 12;
        var userid = <?php echo $userid; ?>;
        function morepic() {
            console.log(start, userid, count);
            var params = {
                start: start,
                userid: userid,
                count: count
            };
            $.ajax({
                url: "loaddata_loogin.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                  
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                 $("#maintext").append(newpictures);
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
         morepic();
        });
</script>

Zum zweiten Code (Kommentar_nachladen.php):

Code:
<script>
    var start = 0;
        var count = 5;
        var imgurl = $("#kommentarfeld").data("imgurl");
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count
            };
            $.ajax({
                url: "Kommentar_nachladen.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newcomments = $("<div>" + output + "</div>");
                    start += count;
               
                    if (newcomments.find("span.ende").length != 0) {
                        $(".button03").hide();
                    }
                   
                   
                   
                    newcomments.find(".kreuz").on("click", function () {
                    var params = {
                        userid: $(this).data("userid"),
                        commid: $(this).data("commid")
                    };
 
                    $.ajax({
                        url: "Kommentar_loeschen.php",
                        data: params,
                        type: "POST",
                        success: function (input) {
                            console.log("Success input = " + input); // kann später auch raus
                            $(".close").html(input);
                            inside(imgurl);
                        },
                        error: function ( /* Parameter entspr Doku */) { }
                    });
                });
                   
                    function inside(imgurl) {
        $.ajax({
            url: "Kommentar_auslesen.php",
            data: {imgurl: imgurl},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später auch raus
                $("#comments").html(input);
                // Ausgabe von Version2.php steht unter dem Parameter output zur Verfügung
                // in deinem Fall wären das die Kommentare
            },
            error: function( /* Parameter entspr Doku */ ) {}
        })
    }
                   
                    $(".php_kom").append(newcomments);
                }
            });
        }
        $(".button03").on("click", more);
        more();
</script>
 
Werbung:
Update: Ich habe weiterhin rumgetestet. Ich habe ja gesagt das dass Problem erst seit dem auftritt seit ich das nachladen per scrollen drin habe (loaddata_login.php). Dieser Code wird ja über den Ajax-Code den ich oben gepostet habe, ausgegeben.

Nachdem ich den Ajax Code aber rausgenommen habe und loaddata_login.php wieder ganz normal in das Div-Element (maintext) auf der Hauptseite eingefügt habe, natürlich ohne $countread, $Count usw., hat das auslesen der Kommentare wieder ganz normal funktioniert...
Stehe wirklich auf dem Schlauch wie ich da ran gehen soll :/
 
Stimmt das ist ne gute Idee, habe auch direkt mal nachgeschaut. Es war in der Tat so das etwas mehrfach getriggert hat aber das waren nicht scrollTop() sondern der Code zum auslesen der Kommentare.

Das Problem war aber einfach ein dummer Fehler. Ich hatte das Javascript-Gebilde durch das die Lightbox erzeugt wird und die Kommentare ausgelesen werden zwei mal eingebunden. Einmal auf der Hauptseite und einmal in loaddata_loogin.php.

Naja und das war es dann auch schon. Jetzt läuft alles wieder so wie es sein soll :D Vielen Dank für den Tipp mit der Console :)
 
Ich würde überprüfen, ob diese Abfrage mit scrollTop() u. U. mehrfach triggert. Weiter oben hast Du die Funktion morepic() mit einem Checkpoint drin gepostet:
Code:
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
Dann müsste es ja in der Console sichtbar sein.

Oh man ich mir ist schon wieder etwas aufgefallen aber ich weiß dieses mal was das Problem ist.

Das ist der Code mit dem das nachladen beim scrollen möglich wird:

Code:
<script>
     $(document).ready(function()
  {
    var start = 0;
        var count = 12;
        function morepic() {
            console.log(start, count);
            var params = {
                start: start,
                count: count
            };
            $.ajax({
                url: "loaddata_popular.php",
                type: "POST",
                data: params,
                success: function (output) {
                    console.log(output);
                    var newpictures = $("<div>" + output + "</div>");
                    start += count;
                   
                    if (newpictures.find("span.end").length != 0) {
                        $('div#loader').empty();
                    }
                 $("#servicetext").append(newpictures);  
                }
            });
        }
    $(window).scroll(function()
    {
      if($(window).scrollTop() == $(document).height() - $(window).height())
      {
        morepic();
      }
    });
         morepic();
        });
</script>

Das ist die Datei loaddata_popular.php:

Code:
<script src="lightboxtest2.js"></script>
<?php  
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
$idx = 0;  
   
$start = $_POST["start"];
$count = $_POST["count"];
$count2 = $count;

try {
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.benutzername, adressen.vorname, adressen.profilbild, bildtabelle.timestamp, adressen.id FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ORDER BY timestamp DESC LIMIT $start, $count2";
 $ergebnis = $pdo->query($sql);
    $countread = 0;
foreach ($ergebnis as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><a href=User_Seite.php?user=".$row['id']." style:'font-weight: normal; data-user='".$row['id']."''><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['benutzername']."</p></a><div class='dropdowntest'><i class='fa fa-ellipsis-h' aria-hidden='true' style='color: #6E6E6E; float: right; margin-left: 110px; cursor: pointer; margin-top: -10px; position: absolute'></i><div class='dropdowntestcontent'><a href='#' style='font-weight: normal'><p style='color: black'>Dieses Bild melden !</p></a></div></div>
        <ul class='bildermenu2'>
        <li>
        <div class='gallery'>
            <img class='bild' data-idx='".$idx."' id='img".$idx."' src='".$test.$row['path']."' data-relurl='".$row['path']."'>
        </div>
        <div class='aufnahme'>
<div class='effekt'></div>
<div class='aufnahmetext'>
    <i id='i' class='fa fa-star-half-o fa-2x' aria-hidden='true' style='float: left; margin-left: 100px;'></i>
    <i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
        $countread++;
}  
if ($countread < $count2) {
        echo '<span class="end"></span>';
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>

wie man ganz oben von loaddata_popular.php sehen kann beziehe ich lightboxtest2.js mit ein. Das Problem ist sobald die erste Salve an Bilder beim scrollen nachgeladen wird, wird loaddata_popular.php erneut aufgerufen und lightboxtest2.js somit auch.

Klar ich darf <script src="lightboxtest2.js"></script> nicht auf loaddata_popular.php mit einbeziehen. Doch auf der Seite von dem ersten Code funktioniert auch nicht. Was kann ich tun ?
 
Werbung:
Zurück
Oben