Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Problem ze skryptem wyświetlającym posty oraz komentarze
Forum PHP.pl > Forum > Przedszkole
nowaxik
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>
viking
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())
nowaxik
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 exclamation.gif graduated.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.