Skocz do zawartości
TomaszC

[PHP] Pętla

Rekomendowane odpowiedzi

Cześć! Chciałbym wypętlować wszystkie postacie danego gracza. Mam problem jedynie właśnie z pętlą, bo pobrać dane z bazy i zapisać do sesji poszło mi bezproblemowo. Na logikę rzecz biorąc, musiałbym wiedzieć, ile zostało pobranych tych postaci, żeby wiedzieć, kiedy zatrzymać pętle i nie mam pojęcia jak to zrobić. Czy byłby ktoś w stanie pomóc?

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli korzystasz w pętli while i funkcji fetch_assoc (czy jakiejkolwiek innej z fetch w środku), to pętla się zatrzyma, gdy już nie będzie więcej wierszy do pobrania.

 

Ogólnie nie sprecyzowałeś czego dokładnie chcesz.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli korzystasz w pętli while i funkcji fetch_assoc (czy jakiejkolwiek innej z fetch w środku), to pętla się zatrzyma, gdy już nie będzie więcej wierszy do pobrania.

 

Ogólnie nie sprecyzowałeś czego dokładnie oczekujesz.

 

 

Chciałbym wylistować po prostu listę postaci, każda pod sobą. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pobranie wszystkich elementów z bazy jest proste. Do tego wystarczy ci funkcja mysql_fetch_assoc oraz pętla while.

Przy wykonaniu zapytania wykonujesz taką pętlę

while($row = mysql_fetch_assoc($result))
{
    echo($row['Kolumna1'] . '<br>');
}
mysql_free_result($result);

gdzie $row to jest nowa zmienna (tablica), w której przechowywany jest wiersz pobrany w kolejności,

a $result to wartość pobrana z funkcji mysql_query [$result = mysql_query(...)].

 

Wartości pobierasz podając jako indeks tablicy nazwę kolumny.

Pętla jest zatrzymywana, gdy nie będzie już więcej wierszy do pobrania (czyli gdy zmienna $row będzie pusta).

Następnie zasoby zapytania są uwalniane.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jest problem z Twoim kodem, otóż zrobiłem coś takiego:

            require_once "dbdata.php";
                            
                            $dbconnect = @new mysqli($host, $dbuser, $dbpass, $dbname);
                            if($dbconnect->connect_errno!=0)
                            {
                                echo "Error: ".$dbconnect->errno;   
                            }
                            else
                            {
                                $query = "SELECT * FROM characters WHERE UID = ".$_SESSION['UID']."";
                                if($result = @$dbconnect->query($query))
                                {
                                    while($row = mysqli_fetch_assoc($result))
                                    {
                                        echo($row['CID'].'<br />');
                                    }
                                    $result->close;
                                }
                            }

Nie działa, sprawdziłem na wszelki wypadek, w bazie danych czy zapytanie działa - działa. Sprawdziłem również, czy pobiera $_SESSION['UID'] - pobiera. Nie wiem w czym może być błąd, przynajmniej ja go nie widzę. Jedyne co zmieniłem w Twoim kodzie, to z mysql_fetch_assoc, na mysqli_fetch_assoc

Edytowane przez TomaszC

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×