Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Lista
Forum PHP.pl > Forum > Przedszkole
onelife
Cześć , mam mały problem. Chciałem sobie zrobić żeby wyświetlało osoby vip. I zrobiłem coś takiego

  1. <?php
  2. define("IN_MYBB", 1);
  3. require_once ("./global.php");
  4. mysql_connect('xxxx', 'xxxxx', 'xxxI') or die('Nieudane polaczenie z baza danych..');
  5. mysql_select_db('xxxxx') or die('Nie udalo sie wybrac bazy danych..');
  6. ?>
  7.  
  8. <?php
  9.  
  10.  
  11.  
  12.  
  13. $wynik = mysql_query("SELECT * FROM `players` ORDER BY `vip` DESC LIMIT 10");
  14. if(mysql_num_rows($wynik) > 0) {
  15.  
  16. while($dane = mysql_fetch_array($wynik)) {
  17. $vip .= "<tr><td>{$dane['nick']}</td></tr>";
  18. echo '$vip';
  19. }
  20. }
  21.  
  22.  
  23. ?>


I nie wyświetla mi,pusta biała strona. Co jest źle zrobione? Chcę żeby wyświetało nicki osób które w "vip" mają więcej niż 0 smile.gif
Kshyhoo
  1. $vip .= "<tr><td>{$dane['nick']}</td></tr>";

Po co ta kropka przez =?
A, skoro ma być tabela, to przed pętlą trzeba ją rozpocząć a za pętlą zakończyć smile.gif
onelife
Poprawiłem na :


  1. <?php
  2.  
  3.  
  4.  
  5.  
  6. $wynik = mysql_query("SELECT * FROM `players` ORDER BY `vip` DESC LIMIT 10");
  7. if(mysql_num_rows($wynik) > 0) {
  8.  
  9. while($dane = mysql_fetch_array($wynik)) {
  10. $vip =$dane['nick'];
  11. echo '$vip';
  12. }
  13. }
  14.  
  15.  
  16. ?>


i wyświetla mi się tylko $vip$vip$vip$vip$vip$vip$vip
xbigos
Nie rozumiem tego.

ORDER BY `vip`

Chcesz posortowć wszystkich użytkowników czy wyświetlić tylko z rangą Vip?

Spróbuj WHERE ranga='vip'

do tego wyrzuć kropkę tak jak mówił Kshyhoo i rozpocznij i zakończ tabele przed pętlą.


EDIT:
Usuń cudzysłów '$vip'
onelife
Wystarczyło usunąć cudzysłów, dzięki działa. smile.gif

Przepraszam za double. Ale mam jeszcze jeden problem,bo popełniłem pewien błąd. Chodzi o to że w mojej bazie "vip" ma czas kodowany w "timestamp" więc przestarzałe wyniki zostają jako np. "1388513518" . A ja wyświetlałem wyniki większe niż 0 ,więc moja lista vipów nie będzie aktualna bo będą te stare równiez się pokazywały. Pomoże ktoś ten problem rozwiązać?
Turson
Zamiast brać te większe od, porównuj czas wg. jakiegoś schematu, np. vip musi mieć czas większy być równy teraźniejszemu
xbigos
  1. date("Y-m-d H:i:s", $datatimestamp);


Nie wiem czy dobrze. sprawdź bo z marszu napisane. i wtedy wybierz sobie z jakiego przedziału czasowego będziesz pobierał dane.


Chyba, że chodzi o zapytanie sql-owe.

  1. where data >= [dataminimum] and data <= [data_maximum]
onelife
  1. where data >= [dataminimum] and date <= [data_maximum]


I jak to powinienem użyć? Bo nie bardzo rozumiem. Z góry bardzo dziękuje za pomoc.
Turson
Owszem tak. Generujesz w php daty i podstawiasz jako min i max
xbigos
w zapytaniu sql dodaj warunek z jakiego przedziału dat potrzebujesz. Podaj mi informacje jakie warunki odnośnie daty muszą być spełnione żeby rekord użytkownika został wyświetlony. Bo nie wiem do końca co chcesz osiągnąć.
onelife
Chcę wyświetlić aktualną listę vipów. To co mowił Turson wydaje się sensowne żeby wyświetlało osoby,które mają datę większą niż dzisiejsza.

xbigos
no to daj warunek gdzie data jest większa niż current_timestamp.
onelife
Dalej nie jestem pewny czy rozumiem,no ale cóż będę próbował. smile.gif


EDIT:

Nie wiem czy idę w dobrym kierunku. Powinno być coś takiego?

  1. mysql_query("SELECT `Data` FROM `players` WHERE CURRENT_TIMESTAMP() < `vip`");



Jeśli tak, to jeszcze mam pytanie jak mogę zrobić nową tabelę "Data" i w niej obecną datę w timestamp ?
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.