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

PHP Array von Javascript durchsuchen lassen

Ganz so einfach verhält es sich nicht. Der User schickt einen POST-Request an die Datenbank. Damit ihm der Kommentar direkt angezeigt wird, müsste im Success-Handler entweder ein neuer GET-Request gesendet, bzw. ein Seitenrefresh durchgeführt werden - was beides unsauber wäre - oder der Kommentartext samt Markup ins DOM gespushed werden. An der Stelle würde es mit jQuery hässlich.

Dafür gibt es 'fortgeschrittene' JS-Frameworks, die das wie folgt handhaben: Initial wird ein GET-Request gesendet, der alle Kommentare fetched, in einem JavaScript-Array speichert und das Array im HTML ausgibt. Der neue Kommentar wird sowohl als POST-Request gesendet wie auch in das Array gepushed - also server- und clientseitige Aktualisierung. Durch das Array-Update wird das HTML neu gerendert.
 
Werbung:
Okay danke aber das was Sempervivum mir geraten hat funktioniert und war verständlich. Jetzt wo das funktioniert würde ich mir ganz gerne noch zu etwas deine Meinung einholen.

Es gibt ja über PHP die Möglichkeit die Anzahl der Datensätze die ausgelesen werden soll zu begrenzen auf bspw. 10 Datensätze. Ich denke aus dem Grund über eine solche Möglichkeit nach weil sagen wir mal es gibt utopische Anzahlen von Kommentaren. Dann würde das laden aller Kommentare vermutlich länger dauern als wenn ich die Anzahl der Datensätze die ausgelesen werden sollen relativ niedrig halte oder ? Ich meine man kann dann ja immer noch die Möglichkeit hinzufügen weitere Datensätze nachfolgend angezeigt zu bekommen.

Dazu also die frage ob diese Überlegung berechtigt ist ?

Mein Plan wäre es dann nämlich bspw. 10 Kommentare in der Lightbox auslesen zu lassen. Ich könnte dann in dem dafür vorgesehen Element eine Scrollbar einbauen und sobald ich am Ende der Kommentare angekommen bin, würde da sowas ähnliches wie "weitere Kommentare anzeigen" stehen und bei einem klick darauf werden weitere 10 Kommentare ausgelesen :)
 
Dazu also die frage ob diese Überlegung berechtigt ist ?

Durchaus.

Der GET-Request sollte zwei Parameter enthalten: per_page und page. Der erste beschreibt die Anzahl der Kommentare, die gefetched werden, der zweite die Position, ab der sie gefetched werden. 10 / 1 wären Kommentare 0-9, 10 / 2 Kommentare 10-19, usw.

Zum Triggern gibt es zwei Pattern. Das eine per klassischer Pagination, das zweite per Infinite Scrolling, à la Facebook. Für letzteres gibt es auch Plugins.
 
Werbung:
Durchaus.

Der GET-Request sollte zwei Parameter enthalten: per_page und page. Der erste beschreibt die Anzahl der Kommentare, die gefetched werden, der zweite die Position, ab der sie gefetched werden. 10 / 1 wären Kommentare 0-9, 10 / 2 Kommentare 10-19, usw.

Zum Triggern gibt es zwei Pattern. Das eine per klassischer Pagination, das zweite per Infinite Scrolling, à la Facebook. Für letzteres gibt es auch Plugins.

Okay vielen Dank dann weiß ich bescheid :)

Fast wundert mich das jetzt, denn der Einwand von Tronjer ist berechtigt: Dieses:ist nicht die geeignete Stelle, um die Kommentare neu auszulesen, denn es muss sicher gestellt sein, dass der neue Kommentar in der Datenbank ist. D. h. wie Tronjer schreibt:sollte der Aufruf der Funktion inside() besser im success-Callback geschehen.

Also wenn ich das jetzt richtig verstehe dann muss ich die Funktion einfach nur an einer anderen Stelle aufrufen ? Wie gesagt es hat auch so schon funktioniert aber nur damit es jetzt richtig ist hier nochmal der neue Code in dem inside() in der success-Callback erscheint:

Code:
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Version2.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 */ ) {}
        })
    }
                              
            }
        });   
</script>

Du meinst das so oder ?

Und dann noch zu einer Sache eine Frage.
Dieses:ist nicht die geeignete Stelle, um die Kommentare neu auszulesen, denn es muss sicher gestellt sein, dass der neue Kommentar in der Datenbank ist. D. h. wie Tronjer schreibt:sollte der Aufruf der Funktion inside() besser im success-Callback geschehen.

Inwiefern muss sichergestellt werden das der Kommentar in der Datenbank ist. Also ich meine damit, entweder ist er vorhanden und wird somit ausgelesen oder er existiert nicht und wird auch nicht ausgelesen.
Wieso also diese Kontrolle ?
 
Okay vielen Dank für die Erklärung, ist klar geworden :)

Ich arbeite gerade noch daran die Lightbox weiter auszubauen und ich dachte mir das es vielleicht gar nicht schlecht wäre innerhalb der Lightbox nochmal kenntlich zu machen wer das jeweilige Bild hochgeladen hat.

Code:
<?php   
 $test = "http://192.168.178.61/PHPversion/"; // mal gucken
$idx = 0;   
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT bildtabelle.path, adressen.nachname, adressen.vorname, adressen.profilbild, bildtabelle.timestamp FROM `bildtabelle`, `adressen` WHERE adressen.id = bildtabelle.user_id ORDER BY timestamp DESC "; 
foreach ($pdo->query($sql) as $row) {
    echo "<div class='rahmen'>
        <img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'><p style='color: black; float: left; margin-left: 37px; position: absolute; font-weight: normal'>".$row['vorname']."</p><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>
    <a href= Version2.php?delid=".$row['path']."><i id='i' class='fa fa-comment fa-2x' aria-hidden='true' style='float: right; margin-right: 100px;'></i><a/>
</div>
</div>
</li>
</ul>
    </div>";
     $idx++;
}   
?>

In dem Code mit dem ja quasi alles startet bzw. die Lightbox geöffnet wird, ist bereits angezeigt von wem jedes einzelne Bild stammt. Es gibt in diesem Code diese Zeile:

<img class='profilbild' src='".$test.$row['profilbild']."' alt='Bild'>

Das ist der Pfad zum Profilbild des jeweiligen Users der das Bild hochgeladen hat. Ist es möglich diesen Pfad ebenfalls mit den Daten zu übergeben die auch in der Lightbox eine Rolle spielen ?

Also ich meine bei der Lightbox nutze ich die Informationen die in dem Div-Element "gallery" enthalten sind. Jetzt will ich aber auch passend zu den Bildern immer noch das Profilbild des Users auslesen.

Gibt es da eine Möglichkeit für oder benötigt das eine andere Herangehensweise ?
 
Wobei ich glaube ich weiß wie, melde mich gleich nochmal falls ich mit meiner Vermutung richtig liege. Hatte glaube ich einen Denkfehler

EDIT:

Ich habs jetzt mithilfe von diesem Code geschafft:

Code:
<?php
$z= $_POST["imgurl"];
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    $sql = "SELECT profilbild FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo $row['profilbild'];}
}
?>

Hatte am Anfang nicht bedacht das ich ja bereits die Variable $z habe und mit dieser konnte ich dann weiter arbeiten :)
 
Zuletzt bearbeitet:
Werbung:
Mir ist dann auch noch etwas aufgefallen an dem Javascript. Ist jetzt schon etwas her aber wir hatten ja mal ne Zeit lag daran gearbeitet das man bei den Bildern vor und zurück klicken kann.

Das funktioniert auch nach wie vor aber es gibt da ein Problem. Wenn ich am letzten Bild angekommen bin und dann nach rechts weiter klicke, dann verändert sich das Bild zwar nicht mehr aber die Kommentare verschwinden. Das bedeutet obwohl es sich um das letzte Bild handelt hört das Script nicht auf weiter zu zählen.

Das selbe tritt auf wenn man sich beim ersten Bild befindet und auf zurück klickt.

Das heißt entweder muss der Code aufhören zu zählen oder er fängt wenn ich bspw. beim letzten Bild bin und auf weiter klicke, wieder beim ersten Bild an...

Hier nochmal der Javascript-Code:
Code:
$(document).ready(function() {

// Globale Variablen
   
    var ACTIVE_IMG;
    var IMG_URL;
   
 
// Create Lightbox
   
$('body').append('<div id="lightbox_overlay"><div id="textbox"><div id="lightbox_inhalt"><div id="val_nav"><i id="left" class="fa fa-chevron-left" aria-hidden="true" style="float: left"></i><i id="x" class="fa fa-times" aria-hidden="true"></i><i id="right" class="fa fa-chevron-right" aria-hidden="true" style="float: right;"></i></div><img  id="bigpic" /><div id="comments"></div></div></div></div>');

 
// Open Lightbox
   
$('.gallery img'). stop().click(function(){
   
    IMG_URL = $(this).attr('src');
   
    $('#lightbox_overlay #lightbox_inhalt img').attr('src', IMG_URL);
    $('#lightbox_overlay').fadeIn(500);
   
    ACTIVE_IMG = $(this);
   
});
   
// Bild schließen
   
    $('#x').stop().click(function(){
        $('#lightbox_overlay').fadeOut(500);
    });
   
//Nächstes Bild (links und rechts)
   

   
(function() {
    var idx = 0;
    function comment(relurl) {
        $.ajax({
            url: "Version2.php",
            data: {imgurl: relurl},
            type: "POST",
            success: function(output) {
                console.log("Success output = " + output); // kann später auch raus
                $("#comments").html(output);
                // 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 */ ) {}
        })
    }
    $("img.bild").on("click", function() {
        idx = parseInt($(this).data("idx"));
        var relurl = $(this).data("relurl");
        $("#lightbox_overlay img").attr("src", relurl);
        console.log(relurl); //später wieder rausnehmen
        comment(relurl);
 
    });
            $('#left').click(function () {
                prev_img();
            });
            function prev_img() {
                idx--;
                var newsrc = $("#img" + idx).attr("src");
                $('#lightbox_overlay #lightbox_inhalt img').attr('src', newsrc);
                var relurl = $("#img" + idx).data("relurl");
                comment(relurl);
            }
            $('#right').click(function () {
                next_img();
            });
            function next_img() {
                idx++;
                var newsrc = $("#img" + idx).attr("src");
                $('#lightbox_overlay #lightbox_inhalt img').attr('src', newsrc);
                var relurl = $("#img" + idx).data("relurl");
                comment(relurl);
            }
        })();  
   
});

Vermutlich wäre die Option das wenn ich bspw. beim letzten Bild bin und auf weiter klicke, wieder beim ersten Bild lande am besten oder ? Doch leider weiß ich nicht ganz wie man das realisiert :/
 
Okay super das funktioniert schon mal einwandfrei jetzt muss ich das ja auch für den linken Button machen.

Ich habe mal den Code für den rechten Button mal ein wenig verändert doch leider funktioniert das so nicht :/

Code:
function prev_img() {
                var nrimg = $(".gallery").length;
                if (idx < nrimg - 1) idx--;
                else idx = 0;
                var newsrc = $("#img" + idx).attr("src");
                $('#lightbox_overlay #lightbox_inhalt img').attr('src', newsrc);
                var relurl = $("#img" + idx).data("relurl");
                comment(relurl);
            }

Doch so funktioniert es nicht. Ich glaube auch einen Denkfehler in dieser Zeile zu haben "if (idx < nrimg - 1) idx--;"

Das bedeutet doch so viel wie: Wenn die Id des Bildes kleiner ist als die Gesamtanzahl an Bildern -1 dann will ich runter zählen. Oder verstehe ich das völlig falsch ?
 
Nein, wenn Du herunterzählst, musst Du den Überlauf nach <0 abfangen:
Code:
                if (idx > 0) idx--;
                else idx = nrimg - 1;

Nur zum Verständnis. var nrimg ist die Variable mit der wir die Gesamtanzahl an Bildern in der Galerie ermitteln ? Und diese Zählen wir dann runter oder was genau bedeutet die -1 ?

ich dachte nur das wir von 0 ausgehend über idx-- runterzählen...
 
Werbung:
Achso okay ja jetzt habe ich das verstanden, Vielen Dank :D

Ich habe in meiner Lightbox ja mittlerweile so ein paar Dinge verändert. So sieht der Code fürs auslesen der Kommentare jetzt aus:

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<link rel="stylesheet" href="font-awesome-4.5.0/css/font-awesome.min.css">
<body>
<div class="all">
<?php
$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
?>
<hr class="stripe2">
<div class="php_kom">

<?php
 
$z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 50";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s:</p>
          <h3>%s</h3><p>%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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
</div>

<hr class="stripe3">
<i id='icon2' class='fa fa-star-half-o' aria-hidden='true'></i><i id='icon' class='fa fa-comment-o ' aria-hidden='true'></i>
<hr class="stripe">
<form method="post" class="formular">
<textarea data-imgurl="<?php echo $z; ?>" cols="35" rows="1" id="kommentarfeld" name="Kommentar" placeholder="Kommentar hinzufügen..."></textarea><br/>
    </form>
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Version2.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 */ ) {}
        })
    }
                              
            }
        });   
</script>

</div>
</body>
</html>

Ich muss auch sagen das soweit alles funktioniert nur mir ist da eine Sache ein kleiner Dorn im Auge. Ist jetzt eher ein Problem mit dem PHP. Um genau zu sein spreche ich von diesen Zeilen...

Code:
<?php
$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
?>

Mit diesem Code lese ich ja noch das Profilbild des Users aus der das Bild hochgeladen hat. Das funktioniert auch. Das was mich jedoch stört ist das wenn ich in der Lightbox bspw. den rechten Button betätige und ich auf ein Bild eines anderen Users gelange, sich in dem Bereich für das Profilbild für einen Bruchteil das Bild aus der Lightbox befindet bevor dann wieder das Profilbild des Users angezeigt wird..

Ich bin mir eigentlich fast sicher das es etwas mit dem img-Tag zu tun hat und da irgendwas durcheinander kommt mit dem img-tag für das große Bild in der Lightbox. Kann es sein das dadurch für diesen Bruchteil die Bilder im Profilbild angezeigt werden bevor dann wieder alles normal ist ?

Ich hoffe du verstehst was ich meine und was das Problem ist :)
 
Super es war wirklich ein Problem mit der Zuweisung :D

Ich hätte da noch ne Frage zum PHP. Ich habe weiter oben schon mal gefragt ob es Sinn machen würde die Anzahl der ausgelesenen Kommentare zu begrenzen und dann noch eine Möglichkeit zu schaffen diese nachzuladen. Genau das will ich jetzt umsetzen.

Ich gehe auch mal ganz stark davon aus das ich hierfür wieder Ajax verwende ? Ich habe mich auch bereits im Netz ein wenig darüber schlau gemacht und etwas gefunden was jedoch nicht zu 100% dem entspricht was ich vorhabe. Hier das Script:

Code:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Inhalte per Ajax nachladen</title>
<style type="text/css">
div {
    border: 1px solid #ccc;
    padding: 25px;
}
</style>
</head>

<body>
<h1>Inhalte per Ajax (jQuery) nachladen</h1>
<div id="target"> Die Inhalte in diesem Container werden nach dem Klick auf den Button mit den Inhalten aus der Datei <code>source.html</code> überschrieben. </div>
<p>
  <button onclick="kb_source_2_target()">Hier klicken</button>
</p>
<script src="jquery.js" type="text/javascript"></script>
<script>
    function kb_source_2_target() {
        $.get('unbenannt.php', function(data) {
            $('#target').html(data);   
        })
    }
</script>
</body>
</html>

Ein wirklich einfaches Script das aber seinen Sinn erfüllt. Bei Klick auf den Button wird der Inhalt aus der Datei unbenannt.php geladen. Das Problem an der ganzen Sache ist jedoch das der bestehende Inhalt im Div-Element "Target" dabei ersetzt wird.

Mein Ziel ist es aber den neuen Inhalt aus unbenannt.php, hinzuzufügen. Vermutlich müsste dann auch in unbenannt.php ein Code drin stehen der dann bspw. immer die 5 nächsten Kommentare ausliest. Doch genau darin liegt eben mein Problem.

Letztendlich muss ich ja "nur" in meinem Code einen Button hinzufügen der per Ajax bspw. immer 5 weiter Kommentare ausliest...

Hier nochmal das Skript um das es jetzt geht :)
Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<link rel="stylesheet" href="font-awesome-4.5.0/css/font-awesome.min.css">
<body>
<div class="all">
<?php
$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
?>
<hr class="stripe2">
<div class="php_kom">

<?php
 
$z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 50";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' href=\"mailto:%s\">%s</a> am %s:</p>
          <h3>%s</h3><p>%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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
?>
</div>

<hr class="stripe3">
<i id='icon2' class='fa fa-star-half-o' aria-hidden='true'></i><i id='icon' class='fa fa-comment-o ' aria-hidden='true'></i>
<hr class="stripe">
<form method="post" class="formular">
<textarea data-imgurl="<?php echo $z; ?>" cols="35" rows="1" id="kommentarfeld" name="Kommentar" placeholder="Kommentar hinzufügen..."></textarea><br/>
    </form>
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Version2.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 */ ) {}
        })
    }
                              
            }
        });   
</script>

</div>
</body>
</html>
 
Okay also der erste Code hat funktioniert :)

Ich habe mir den Link mal angeschaut aber ich habe da drin glaube ich nicht das richtige gefunden oder es einfach übersehen...

Letztendlich will ich ja folgendes. Sagen wir das zu Beginn die 20 neuesten Kommentare ausgelesen werden. In meiner Datenbank sind insgesamt 100 Einträge. Dann wären die Kommentare die ich auslese die Kommentare von 100-80.

Bei einem Klick auf den Button möchte ich 5 weitere angezeigt bekommen. Also die Kommentare bis 75. Insgesamt 100-75... und das immer so weiter, je nachdem wie oft ich den Button betätige.

Oder ist das was ich suche, die Erklärung mit Offset und Count ? Wenn ja dann frage ich mich aber wie ich Count ausführe. Aber wenn ich das richtig verstanden habe ist Count nicht dazu da um weitere Inhalte anzuzeigen oder ? :/
 
Werbung:
Okay also ich hab mal ein bisschen rum probiert und dabei sieht der Code jetzt so aus:

Code:
<div class="php_kom">
<?php

$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
    echo "<hr class='stripe2'> ";

?>

<?php
 
$z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 5";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' 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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}

echo "<button class='button03' onclick='show_more()'>weitere Kommentare laden...</button>";
?>
<script>
    function show_more() {
        $.get('unbenannt.php', function(data) {
            $('.php_kom').html(data); 
        })
    }
</script>
</div>

Dazu kann man erstmal sagen das es so schon mal funktioniert das zu Beginn 5 Kommentare ausgelesen werden und dann mit dem Button die nächsten 20 Kommentare ausgelesen werden. Doch leider gibt es ein paar entscheidende Probleme.

1. Ich bin mir nicht sicher ob Offset und Count die richtige Methode für das ganze sind. Zu Beginn werden ja die neuesten 5 Kommentare ausgelesen. Durch Offset und Count gebe ich dann an "LIMIT 0, 20".
Das bedeutet das von dem ersten Kommentar angefangen, alle folgenden Kommentare bis Kommentar Nr. 20 ausgelesen werden. Sagen wir aber es gibt insgesamt 100 Kommentare und der User möchte immer in 15ner Schritten weitere Kommentare auslesen, dann funktioniert das mit diesem Prinzip nicht da es bei Count nur bis maximal 20 geht :/ verstehst du was ich meine ?

PS: Ich habe mich übrigens doch dafür entschieden die Einträge komplett zu ersetzen und nicht nur zu ergänzen da es durch das ergänzen dazu kam das die ersten 5 Kommentare beim zweiten mal auch ausgelesen wurden...


2. Ich habe außerdem ein Problem über der Übergabe von $z, also dem Bildpfad. Über Ajax war es ja relativ einfach gewesen diese Daten zu übergeben doch hier hackt es irgendwie. Ich brauche $z nämlich für die Datei unbenannt.php. Diese sieht nämlich wie folgt aus:

Code:
<?php

$z= $z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
    
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";   
foreach ($pdo->query($sql) as $row) {
    
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
    echo "<hr class='stripe2'> ";

?>


<?php
 
$z= $z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 0, 20";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' 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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}

echo "<button class='button03' onclick='show_more()'>weitere Kommentare laden...</button>";

?>

3. Außerdem hatte ich noch eine Idee bezüglich des Buttons (button03). Ist es möglich zu prüfen ob beim öffnen der Lightbox direkt 5 Kommentare angezeigt werden ? Schließlich brauche ich den Button ja eigentlich nicht anzeigen wenn bspw. erst 2 Kommentare abgegeben wurden. Das heißt ich würde dann über eine if-Abfrage prüfen ob das LIMIT von 5 überhaupt ausgefüllt wurde. Doch leider bin ich mir nicht sicher ob dies so wie ich mir das vorstelle überhaupt möglich ist ?
 
Also ich habe mir das jetzt mal angeschaut und habe da ein paar Fragen. Ist dieser Code in der Datei enthalten die ich über den Button aufrufe ?

Weil ich mich sonst frage woher diese Variablen kommen bzw. die POST Informationen ?

$start = $_POST["start"];
$count = $_POST["count"];

Hast du dir das so gedacht das dieser Part im Code in Version2.php (Der erste Code aus Posting #103) enthalten ist ?
Code:
$z= $_POST["imgurl"];
$start = "0";
$count = "5";

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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, $count";
 
Werbung:
Das hier ist der Code mit dem es ja anfängt also Version2.php:
Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<link rel="stylesheet" href="font-awesome-4.5.0/css/font-awesome.min.css">
<body>
<div class="all">

<div class="php_kom">
<?php

$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
   
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'";  
foreach ($pdo->query($sql) as $row) {
   
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
    echo "<hr class='stripe2'> ";

?>

<?php
 
$z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 50";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' 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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}

echo "<button class='button03' onclick='show_more()'>weitere Kommentare laden...</button>";
?>
<script>
    function show_more() {
        $.get('unbenannt.php', function(data) {
            $('.php_kom').html(data);
        })
    }
</script>
</div>

<hr class="stripe3">
<i id='icon2' class='fa fa-comment-o ' aria-hidden='true'></i>
<?php
$z= $_POST["imgurl"];
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$statement = $pdo->prepare("SELECT k_path, COUNT(*) AS anzahl FROM kommentare WHERE k_path = '$z'");
$statement->execute();
while($row = $statement->fetch()) {
echo "<p class='anzahl'>".$row['anzahl']."</p>";
}
?>
<i id='icon' class='fa fa-star-half-o' aria-hidden='true'></i>
<hr class="stripe">
<form method="post" class="formular">
<textarea data-imgurl="<?php echo $z; ?>" cols="35" rows="1" id="kommentarfeld" name="Kommentar" placeholder="Kommentar hinzufügen..."></textarea><br/>
    </form>
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus  
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
               
                 function inside(imgurl) {
        $.ajax({
            url: "Version2.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 */ ) {}
        })
    }
                             
            }
        });  
</script>

</div>
</body>
</html>
 
Achso ne Version2.php war die Datei die dazu dient die Kommentare auszulesen. Diese rufen wir ja über Ajax auf wenn die Lightbox geöffnet wird. Das war der Part hier:

Code:
(function() {
    var idx = 0;
    function comment(relurl) {
        $.ajax({
            url: "Version2.php",
            data: {imgurl: relurl},
            type: "POST",
            success: function(output) {
                console.log("Success output = " + output); // kann später auch raus
                $("#comments").html(output);
                // 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 */ ) {}
        })
    }
    $("img.bild").on("click", function() {
        idx = parseInt($(this).data("idx"));
        var relurl = $(this).data("relurl");
        $("#lightbox_overlay img").attr("src", relurl);
        console.log(relurl); //später wieder rausnehmen
        comment(relurl);
 
    });
            $('#left').click(function () {
                prev_img();
            });
            function prev_img() {
                var nrimg = $(".gallery").length;
                if (idx > 0) idx--;
                else idx = nrimg - 1;
                var newsrc = $("#img" + idx).attr("src");
                $('#lightbox_overlay #lightbox_inhalt img#bigpic').attr('src', newsrc);
                var relurl = $("#img" + idx).data("relurl");
                comment(relurl);
            }
            $('#right').click(function () {
                next_img();
            });
            function next_img() {
                var nrimg = $(".gallery").length;
                if (idx < nrimg - 1) idx++;
                else idx = 0;
                var newsrc = $("#img" + idx).attr("src");
                $('#lightbox_overlay #lightbox_inhalt img#bigpic').attr('src', newsrc);
                var relurl = $("#img" + idx).data("relurl");
                comment(relurl);
            }
        })();   
    
});

So ich hab mir dann mal den Code aus dem Link angeschaut. Also so ähnlich hab ich mir das gedacht. Das würde bedeuten das dein Code quasi comments.php ist, richtig ?
 
Okay also ich habe dann jetzt schon mal ein wenig rumprobiert und dabei kam das raus. So sieht Version2.php aus, die Datei zum Kommentar auslesen und mit der das ganze beginnt:

Code:
<?php
 
$z= $_POST["imgurl"];

try {
    $db = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
    $sql = "SELECT 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 5";
 
    $ergebnis = $db->query($sql);
    foreach ($ergebnis as $zeile) {
        printf("<p class='rest'><a class='Kom_name' 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']))
          );
    }
} catch (PDOException $e) {
  echo 'Fehler: ' . htmlspecialchars($e->getMessage());
}
 
echo "<button class='button03' >weitere Kommentare laden...</button>";
?>
<script>
    var start = 0;
        var count = 5;
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count
            };
            $.ajax({
                url: "unbenannt.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();
                    }
                    $(".php_kom").append(newcomments);
                }
            });
        }
        $(".button03").on("click", more);
        more();
</script>
</div>

Wie du siehts ist das anfängliche LIMIT auf 5 gesetzt.

So sieht die Datei unbenannt.php aus :
Code:
<?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.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) {
        printf("<p class='rest'><a class='Kom_name' 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());
}
 
echo "<button class='button03'>weitere Kommentare laden...</button>";
 
?>

Leider funktioniert das ganze so noch nicht :/ Fällt dir ein grober Fehler auf ? Ich habe vielleicht überlegt ob es nicht falsch ist das anfängliche LIMIT auf 5 zu setzen da ja bei Start und Count die Zahlen 0 und 5 stehen aber ich bin mir da leider nicht sicher...
 
Werbung:
Könntest du bitte mal die PHP- statt der Code-Tags benutzen?!

Und was heißt "funktioniert nicht"? Fehlermeldung? Error-Reporting hochdrehen!
 
So ich habe dann jetzt weiter ausprobiert. Version2.php sieht nun so aus:

Code:
<?php
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
?>
<html>
<link rel="stylesheet" type="text/css" href="javacss.css">
<link rel="stylesheet" href="font-awesome-4.5.0/css/font-awesome.min.css">
<body>
<div class="all">

<div class="php_kom">
<!-- Hier wird der Container für die Kommentare definiert.
        Er wird durch Aufrufe von more() gefüllt. -->
 </div>
<button class='button03' >weitere Kommentare laden...</button>
<script>
    var start = 0;
        var count = 5;
        function more() {
            console.log(start, count);
            var params = {
                imgurl: imgurl,
                start: start,
                count: count
            };
            $.ajax({
                url: "unbenannt.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();
                    }
                    $(".php_kom").append(newcomments);
                }
            });
        }
        $(".button03").on("click", more);
        more();
</script>


<hr class="stripe3">
<i id='icon2' class='fa fa-comment-o ' aria-hidden='true'></i>
<?php
$z= $_POST["imgurl"];
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');

$statement = $pdo->prepare("SELECT k_path, COUNT(*) AS anzahl FROM kommentare WHERE k_path = '$z'");
$statement->execute(); 
while($row = $statement->fetch()) {
echo "<p class='anzahl'>".$row['anzahl']."</p>";
}
?>
<i id='icon' class='fa fa-star-half-o' aria-hidden='true'></i>
<hr class="stripe">
<form method="post" class="formular">
<textarea data-imgurl="<?php echo $z; ?>" cols="35" rows="1" id="kommentarfeld" name="Kommentar" placeholder="Kommentar hinzufügen..."></textarea><br/>
    </form>
<script>
$("#kommentarfeld").on("keydown", function (event) {
            var komm = $("#kommentarfeld").val();
            var imgurl = $("#kommentarfeld").data("imgurl");
            var code = (event.keyCode ? event.keyCode : event.which);
            if (code == 13) {
                event.preventDefault();
                console.log("enter pressed");
                // hier die Aktionen zum Abschicken des Kommentars
                $.ajax({
            url: "Kommentar_eintragen.php",
            data: {imgurl: imgurl, Kommentar: komm},
            type: "POST",
            success: function(input) {
                console.log("Success input = " + input); // kann später raus   
                inside(imgurl);
               // hier möglicherweise eine geeignete Meldung an den
               // Benutzer, dass der Kommentar eingetragen wurde
            },
            error: function() {}
      });
                $('.formular')[0].reset();
                
                 function inside(imgurl) {
        $.ajax({
            url: "Version2.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 */ ) {}
        })
    }
                              
            }
        });   
</script>

</div>
</body>
</html>

Das ist jetzt die komplette Datei. Das Problem dabei ist jetzt nur das gar keine Kommentare ausgelesen werden sondern, in der Theorie, erst dann wenn der Button betätigt wurde. Deswegen ist es doch eher schlecht wenn ich nur über die Function gehe oder ?

So sieht unbenannt.php aus:
Code:
<?php
 
$z= $_POST["imgurl"];
$test = "http://192.168.178.61/PHPversion/"; // mal gucken
  
$pdo = new PDO('mysql:host=localhost;dbname=Datenbank_NEU', 'root', 'lehar456');
$sql = "SELECT user_id FROM `bildtabelle` WHERE path = '$z'"; 
foreach ($pdo->query($sql) as $row) {
  
    $sql = "SELECT profilbild, vorname, nachname FROM `adressen` WHERE id = '".$row['user_id']."'";
    foreach ($pdo->query($sql) as $row) {
    echo "<img class='image' src='".$test.$row['profilbild']."'><p class='name'>".$row['vorname']." ".$row['nachname']."</p>";
    }
}
    echo "<hr class='stripe2'> ";
 
?>
 
<?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.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) {
        printf("<p class='rest'><a class='Kom_name' 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());
}
?>

Es funktioniert leider immer noch nicht. Ich habe mal in die console geschaut um zu sehen was passiert wenn ich auf den Button klicke doch dann kommt folgende Meldung:

Keine Nachricht (2)
-0
-5
 
Zurück
Oben