portseven: Weitere Kommentare anzeigen lassen Javascript/PHP

hallo,

ich bräuchte mal wieder euren Rat, da ich nicht weiterkomme.

Ich hab nen Button, der alle Kommentare anzeigen soll. Sollte man den Button wieder drücken zeigt er die Kommentare an + 5 weitere.

Das Problem ist hierbei, sollte ich z.b auf Beitrag 1 3x den Button klicken zeigt er mir 15 Beiträge an. Soll ja auch so sein. Wenn ich jetzt runterscrolle und auf einen anderen Beitrag klicke, werden wieder 15 Kommentare angezeigt, obwohl standardgemäß 5 "limitert" ist."

Ich weiß auch denke ich mal worans liegt, aber ich finde keine möglichkeit CommentsCount eindeutig zu machen.

$(document).ready(function() {
	var commentsCount = 0;


					$('.comment-form').submit(function(e) {
					e.preventDefault()
					
					var btn = $(this).find('.show_comments')
					var value = btn.val()
		
					commentsCount = commentsCount + 5
					$.ajax({
						type: 'POST',
						url: 'show_comments.php',
						data: {newid: value, newcommentscount: commentsCount},
						success: function(data) {
		
							$('.comment-list-'+value+'').css('display', 'block')
							$('.btn-con-'+value+'').css('display', 'block')
							$('.comment-list-'+value+'').html(data)
					}
			})
		})
})
					<div class="btn-con-<?= $rowsafe['beichtid']; ?> btn-con zoom">
						<form class="comment-form">
							<button type="submit" class="show_comments top-margin" value="<?php echo $rowsafe['beichtid']; ?>">Weitere Kommentare anzeigen</button>
		
						</form>
					</div>

SQL:

	$t_id = filter_var($_POST['newid'], FILTER_SANITIZE_NUMBER_INT);
	$commentsCount = filter_var($_POST['newcommentscount'], FILTER_SANITIZE_NUMBER_INT);
	
	if(!is_numeric($commentsCount)) {
	exit("nicht nummeriert");
	}
	
		$stmt = $pdo->prepare("SELECT * FROM comments
		
		WHERE `comments`.`topic_id` = :t_id LIMIT $commentsCount;");
		
		$stmt->BindParam(':t_id', $t_id);
		
		if(!$stmt->execute()) {
			print_r($stmt->errorInfo());
		}
		
		
		while($row = $stmt->fetch()):  ?>

			<?php echo $row['comment']; ?>

		<?php endwhile; ?>
  1. hallo

    Da du pro Formular einen Counter brauchst, musst du schon den Counter an das betreffende form-Element binden.

    --
    Neu im Forum! Signaturen kann man ausblenden!
    1. Hi,

      das war mir bewusst, nur fällt mir keinerlei Idee ein wie ich das sogesehen mache. Hab in den letzen Stunden viel probiert, ich finde einfach keinen Weg. Hast du eventuell ein Beispiel wie ich es machen könnte? Dann probiere ich es auf diese Weise

      1. hallo

        Hi,

        das war mir bewusst, nur fällt mir keinerlei Idee ein wie ich das sogesehen mache. Hab in den letzen Stunden viel probiert, ich finde einfach keinen Weg. Hast du eventuell ein Beispiel wie ich es machen könnte? Dann probiere ich es auf diese Weise

        initialisieren:

        document.querySelectorAll("form").forEach(function(item){item.counter = 0;});

        und später beim ajax-Request benutzen.

        --
        Neu im Forum! Signaturen kann man ausblenden!
        1. Danke dir! Davon habe ich noch nie gehört. Hab auch paar Artikel grad gelesen dazu.

          Hab auch bisschen ausprobiert. Bekomme immer die Meldung: counter ist not definied

          Es müsste doch so aussehen:

          					counter = counter + 5
          					$.ajax({
          						type: 'POST',
          						url: 'show_comments.php',
          						data: {newid: value, newcommentscount: counter},
          						success: function(data) {
          

          Oder nicht?

          1. hallo

            Danke dir! Davon habe ich noch nie gehört. Hab auch paar Artikel grad gelesen dazu.

            Hab auch bisschen ausprobiert. Bekomme immer die Meldung: counter ist not definied

            Es müsste doch so aussehen:

            					counter = counter + 5
            					$.ajax({
            						type: 'POST',
            						url: 'show_comments.php',
            						data: {newid: value, newcommentscount: counter},
            						success: function(data) {
            

            Oder nicht?

            nein!

            In $.self hast du doch das formular. Du musst also die Eigenschaft von $.self abfragen.

            Ich bin aber icht fit in jQuery. Da musst du selber nachschauen.

            --
            Neu im Forum! Signaturen kann man ausblenden!