Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie kilku danych w pętli while & odczytywanie time()
Forum PHP.pl > Forum > Przedszkole
Mody23
Witam!

Mam problem, mianowicie zapisuję pobrane dane z bazy do pętli while i w efekcie powinienem otrzymać WSZYSTKIE wpisy z bazy, a otrzymuję tylko jeden ;/ Dlaczego?

Kod:

  1. if(isset($_GET['admin']) && isset($_GET['folder']) && $_SESSION['admin'] !== NULL && htmlspecialchars($_GET['folder'] == 'inbox') && htmlspecialchars($_GET['admin'] == 'private_messages'))
  2. {
  3. $sql = "SELECT * FROM `private_messages` WHERE to_userid = '".$id."' ORDER BY date DESC";
  4. $result = mysql_query($sql)
  5. or die('Nie udało sie pobrac danych');
  6. while($row = mysql_fetch_assoc($result))
  7. {
  8. $tytul = $row['subject'];
  9. $to_userid = get_username($row['to_userid']);
  10. $from_userid = get_username($row['from_userid']);
  11. $tabela_pmsg = '<tr><td><a href="loginek.php?admin=private_messages&read=' . $row['id'] . '">' . $tytul . '</a></td><td>' . $from_userid . '</td><td>' . $to_userid . '</td></tr>';
  12. }
  13. $body = 'Tutaj znajdujda sie Twoje prywatne korespondencje z innymi uzytkownikami ;))<br><a href="loginek.php?admin=create_private_message">Nowa Wiadomosc</a> | <a href="loginek.php?admin=private_messages&folder=inbox">ODEBRANE</a> | <a href="loginek.php?admin=private_messages&folder=outbox">WYSLANE</a><br><table border="1"><tr><td>TYTUL</td><td>OD</td><td>DO</td></tr>' . $tabela_pmsg . '</table>';
  14. echo $body;
  15. }


Drugie pytanie, to jak mogę zapisać dane funkcji time() na normalny czas ?

Pozdr.
ActivePlayer
zrób sobie echo $sql i wywołaj to zapytanie przez phpmyadmina - zobacz co zobaczysz. może masz tylko 1 wpis dla tego użytkownika.

do przerobienia time() na "fajny format" możesz użyć funkcji date. domyślam się że date("d-m-Y H:i:s", time()) będzie Cie satysfakcjonowało.
Mody23
Cytat(ActivePlayer @ 7.02.2012, 10:07:25 ) *
zrób sobie echo $sql i wywołaj to zapytanie przez phpmyadmina - zobacz co zobaczysz. może masz tylko 1 wpis dla tego użytkownika.



Mam tak w wielu przypadkach, że ciągne dane przez while i wypluwa mi tylko jeden rekord. A żeby udowodnić iż wpisów jest kilka i jaki efekt mam, to proszę screeny:





Co jest nie tak? :/

Dodam że już echowałem wczoraj to zapytanie i w PHPMYADMIN zwraca ładnie kilka rekordów...

Kod w przypadku ww. screenów wygląda tak:

  1. if(isset($_GET['manage']) && isset($_GET['admin']) && $_SESSION['admin'] !== NULL && htmlspecialchars($_GET['admin'] == 'panel') && htmlspecialchars($_GET['manage'] == 'users') && $userdata['user_level'] == 1)
  2. {
  3. $sql = "SELECT * FROM `users`";
  4. $result = mysql_query($sql)
  5. or die('Nie udało sie pobrac danych');
  6. while($row = mysql_fetch_assoc($result))
  7. {
  8. $idek = $row['id'];
  9. $name = $row['nick'];
  10. $email = $row['email'];
  11. $user_onoff = $row['user_on'];
  12. $session_time = $row['session_start'];
  13. $obecny_czas = time();
  14.  
  15. $user_status = '';
  16. if ( $session_time > ($obecny_czas - 300) && $user_onoff == 1 )
  17. {
  18. $user_status = '<span style="color: green; font-weight: bold;">ONLINE</span>';
  19. }
  20. else
  21. {
  22. $user_status = '<span style="color: red; font-weight: bold;">OFFLINE</span>';
  23. }
  24.  
  25. $tabela_userow = '<tr align="center"><td><a href="loginek.php?admin=profile&id=' . $idek . '">' . $name . '</a></td><td>' . $email . '</td><td>' . $user_status . '</td></tr>';
  26. }
  27. $body = '<b>Witaj w panelu administracyjnym! Tutaj mozesz zarzadzac strona, oraz uzytkownikami!<br><a href="loginek.php"><b>STRONA GŁÓWNA</b></a> | <a href="loginek.php?admin=panel">PANEL - STRONA GLOWNA</a> | <a href="cos">COS</a> | <a href="cos2">COS2</a><br><table border="1"><tr><td><b>NICK</b></td><td><b>E-MAIL</b></td><td><b>STATUS</b></td></tr>' . $tabela_userow . '</table>';
  28. echo $body;
  29. }
nospor
$tabela_pmsg = '.....'
Przecież ty w pętli za każdym razem nadpisujesz zmienną $tabela_pmsg, nic więc dziwnego, że zawiera tylko ostatni wynik.

Rozróżniaj dopisywanie do zmiennej od nadpisywania zmiennej.
Mody23
Cytat(nospor @ 7.02.2012, 11:35:04 ) *
$tabela_pmsg = '.....'
Przecież ty w pętli za każdym razem nadpisujesz zmienną $tabela_pmsg, nic więc dziwnego, że zawiera tylko ostatni wynik.

Rozróżniaj dopisywanie do zmiennej od nadpisywania zmiennej.


Ale ja właśnie taki efekt chcę osiągnąć, że każdy wpis oddziela się osobnym wierszem w tabeli. Chyba że coś źle zrozumiałem.
nospor
Mysl troche, szczegolnie ze podaje ci blad jak na tacy.

w petli, w ktorej przelatujesz po wszystkich rekordach generujesz zmienną $tabela_pmsg. Sek w tym, że z tej zmiennej korzystasz dopiero poza pętlą, wiec zmienna ta zawiera zapis tylko z ostaniego obrotu pętli

Rozróżniaj dopisywanie do zmiennej od nadpisywania zmiennej.
Mody23
Ja chyba za głupi jestem, no ale zamknąłem wszystko w pętlę, tak jak napisałeś i teraz korzystam z tej zmiennej w pętli. Jednak nadal pokazuje mi tylko jednego usera. Obecnie kod wygląda tak:

  1. while($row = mysql_fetch_assoc($result))
  2. {
  3. $idek = $row['id'];
  4. $name = $row['nick'];
  5. $email = $row['email'];
  6. $user_onoff = $row['user_on'];
  7. $session_time = $row['session_start'];
  8. $obecny_czas = time();
  9.  
  10. $user_status = '';
  11. if ( $session_time > ($obecny_czas - 300) && $user_onoff == 1 )
  12. {
  13. $user_status = '<span style="color: green; font-weight: bold;">ONLINE</span>';
  14. }
  15. else
  16. {
  17. $user_status = '<span style="color: red; font-weight: bold;">OFFLINE</span>';
  18. }
  19. $tabela_userow = '<tr align="center"><td><a href="loginek.php?admin=profile&id=' . $idek . '">' . $name . '</a></td><td>' . $email . '</td><td>' . $user_status . '</td></tr>';
  20. $body = '<b>Witaj w panelu administracyjnym! Tutaj mozesz zarzadzac strona, oraz uzytkownikami!<br><a href="loginek.php"><b>STRONA GŁÓWNA</b></a> | <a href="loginek.php?admin=panel">PANEL - STRONA GLOWNA</a> | <a href="cos">COS</a> | <a href="cos2">COS2</a><br><table border="1"><tr><td><b>NICK</b></td><td><b>E-MAIL</b></td><td><b>STATUS</b></td></tr>' . $tabela_userow . '</table>';
  21. echo $body;
  22. }

:/

To inny kod, ale ten sam przypadek - mam tak w kilku miejscach.
nospor
No ale w petli masz exit..... wiesz co robi exit?


nie kazałem ci wkladac wszystkiego w petle, tylko zamiast nadpisywać mialeś dopisywać. Rozrozniasz te dwa słowa??

nadpisywać
dopisywać
?

$zm = 'To jest nadpisanie';
$zm.= 'to jest dopisanie';
$zm = $zm . 'To też jest dopisanie';
Mody23
Tłumaczenie po łopatologicznemu pomogło. Dzięki...
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.