![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 28.02.2022 Ostrzeżenie: (10%) ![]() ![]() |
Cześć,
Na początku chciałem wszystkich powitać ze względu na to że to mój pierwszy post na tym forum. Bardzo proszę o pomoc bo sam już nie wiem gdzie popełniłem błąd. Próbuje zrobić własny system postów oraz komentarzy i nie wiem jak dlaczego mój skrypt pokazuje w tym momencie tylko jeden post ze komentarzami. Stwierdziłem że już sam nie dojdę do tego co jest nie tak i zapytam doświadczonych użytkowników. Poniżej wklejam kod, na którym pracuje. Będę wdzięczny za wszystkie podpowiedzi. Kod <div class="TwittePost">
<!-- Sekcja dodawania wiadomości --> <section> <form action="addTwitte.php" method="post"> <textarea class="form-control" id="exampleFormControlTextarea1" rows="3" placeholder="Wpisz tekst wiadomości..." name="posttext"></textarea><br> <button type="submit" class="btn btn-primary mb-3">Wyślij</button> </form> </section> <!-- Koniec sekcji wiadomości --> <!-- Sekcja wyświetlania postów --> <section> <div class="container"> <?php $servername = "localhost"; //Nazwa serwera $username = "root"; //Nazwa użytkownika $password = ""; //Hasło do konta użytkownika $dbname = "twitte"; //Nazwa bazy danych // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, posttext, userview, username, heart, add_date FROM homepage"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { ?> <div class="row"> <div class="col"> <span style="font-weight: bold;"><?php echo $row["userview"]; ?></span> <?php echo "@".$row["username"]." - "; ?> <?php echo $row["add_date"]; ?> </div> </div> <div class="row"> <div class="col"> <p class="lh-sm"><?php echo $row["posttext"]; ?></p> </div> </div> <div class="row"> <div class="col"> <!-- Formularz do dowania komentarzu --> <form action="addComment.php" method="POST" class="row g-2"> <div class="col-10"> <input type="text" class="form-control form-control-sm" name="comment" placeholder="Wpisz swój komentarz..." aria-label=".form-control-sm example"><br> <input type="hidden" name="id" value="<?php echo $row["id"]; ?>"> <input type="hidden" name="userviewcom" value="<?php echo $row["userview"]; ?>"> <input type="hidden" name="usernamecom" value="<?php echo $row["username"]; ?>"> </div> <div class="col-auto"> <button type="submit" name="submit" class="btn btn-primary btn-sm">Skomentuj</button> </div> </form> </div> </div> <?php $sql = "SELECT id, comment_id, comment_text, userview, username, reg_date FROM comments ORDER BY comment_text DESC"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($com = $result->fetch_assoc()) { ?> <div class="row"> <div class="col"> <span style="font-weight: bold;"><?php echo $com["userview"]; ?></span> <?php echo "@".$com["username"]." - "; ?> <?php echo $com["reg_date"]; ?> </div> </div> <div class="row"> <div class="col"> <p class="lh-sm"> <?php echo $com["comment_text"]; ?> </p> </div> </div> <?php } } } } else { echo "0 results"; } $conn->close(); ?> </div> </section> <!-- Koniec sekcji postów --> </div> |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ciężko się taki mix czyta. Myślałeś żeby odseparować prezentację od logiki trochę? Możliwe że przez nadpisanie zmiennej result w drugiej pętli. Natomiast nie powinno być w ogóle sytuacji że wysyłasz dla każdego postu kolejne zapytania o komentarze - poczytaj n+1 problem. Zbierz id wszystkie razem i pobierz komentarze tylko dla tych id (select ... where post_id IN())
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 28.02.2022 Ostrzeżenie: (10%) ![]() ![]() |
Twoja podpowiedź była kluczowa, dzięki wielkie już wiem wszystko gdzie zrobiłem błąd. Po pierwsze faktycznie zmienna $rezult była w obu zapytaniach i zmiana w drugim naprawiła błąd wyświetlania się tylko jednego postu. Jeśli chodzi o komentarze żeby prawidłowo się wyświetlały, to błąd leżał dokładnie w samym zapytaniu wystarczyło dopisać w zapytaniu SQL końcówkę FROM comments WHERE $id=comment_id, gdzie zmienna $id to id samego postu. Gdyby nie Twoja podpowiedź to bym nad tym siedział nie wiem jak długo. Dzięki
![]() ![]() Ten post edytował nowaxik 28.02.2022, 20:33:20 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 15.06.2025 - 18:14 |