Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Jak wyświetlić kilka wyników
Forum PHP.pl > Forum > Przedszkole
obelix94
Posiadam taką funckję która powinna wyświetlać wszystkie wiersze z zapytania. Wychodzą - jak na razie trzy wiersze. Ale przy użyciu poniższej funckji:
  1. <?php
  2. function wyswietl_uzyt(){       
  3. $baza = mysql_connect('mysql2.yoyo.pl', 'db727076', 'mateusz94');
  4. mysql_select_db('db727076');
  5. $zapytanie = "SELECT * FROM user";
  6. $wynik = mysql_query($zapytanie);
  7. $uzyt = mysql_fetch_array($wynik);
  8. echo $uzyt['login'].'<br>';
  9. echo $uzyt['imie'].'<br>';
  10. }
  11. ?>

Pojawia mi się tylko jeden wynik:
Kod
Login_1 Mateusz

Gdy dodam pętlę
  1. <?php
  2. $ile = mysql_num_rows($wynik);
  3. $i=0;
  4. while($i==$ile){
  5. echo $uzyt['login'].'<br>';
  6. echo $uzyt['imie'].'<br>';
  7. $i++;
  8. }
  9. ?>

Wyświetla mi się Login_1 Mateusz, ale tyle razy ile jest wyników.

Jak zobić tak, aby zwracać wszystkie wyniki z $uzyt['login']; questionmark.gifquestionmark.gif
piotrooo89
ymm nie wiem czy o to Ci chodzi:

  1. <?php
  2. while($row=mysql_fetch_array($wynik))
  3. {
  4. echo $row['login'];
  5. echo $row['imie'];
  6. }
  7. ?>


ps. polecam manuala mysql
obelix94
Dobrze, ale... (zawsze to ale się przypląta...) czemu to nie wyświetla pierwszego wyniku?

Mam 3 rekordy w bazie, a wyświetla tylko 2. Dodałem jeden rekord czyli mam 4 i wyświetla 3 rekordy. CZemu?
artur_dziocha
po co Ci inkrementacja??
$i=<$ile
piotrooo89
dałem Ci gotowy kod... usuń to:

  1. <?php
  2. $ile = mysql_num_rows($wynik);
  3. $i=0;
  4. while($i==$ile){
  5. echo $uzyt['login'].'<br>';
  6. echo $uzyt['imie'].'<br>';
  7. $i++;
  8. }
  9. ?>


i sprawdź...
obelix94
Usunąć!!??

Jeszcze jedno pytanko: jaką funkcję użyć aby mieć dostęp do danych $row['login'][1]; $row['login'][1]; itd...

questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
erix
Cytat
Usunąć!!??

Chyba nie ten konkretnie kod, o którym ~piotrooo89 napisał, tylko mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual przed pętlą, gdyż każda funkcja mysql_fetch_* przesuwa wskaźnik wyniku i dlatego nie ma pierwszego w Twoim przypadku.

Cytat
jaką funkcję użyć aby mieć dostęp do danych $row['login'][1]; $row['login'][1]; itd...

Tzn. chcesz mieć tablicę z kolumną X, a w niej wszystkie rekordy? Przecież to burzy spójność informacji. Traktuj dane jako rekordy, a nie jako kolumny.
obelix94
Chcę mieć tablicę dwuwymiarową z kolumną taką jak w bazie czyli np. $row['login'] i numerkiem jaki wiersz odczytuje.

Kod
USER (ID, login, imie, haslo)
ID LOGIN    IMIE        HASLO
1   matyas   nie wiem nie podam
2   obelix94 mati        nie podam
3   piotroo   nie wiem  nie podam


I mógłbym $row['login'][1], $row['login'][2] , $row['login'][3]... itd.
erix
Rób jak ludzie, czyli $row[<NR REKORDU>]['kolumna']. Praktycznego sensu odwoływania się po kolumnach nie ma.

Poza tym, nigdy nie przechowuj haseł tak, jak jest to u Ciebie (czyli bezpośrednio zapisanych do bazy). Poczytaj o hashowaniu haseł.
obelix94
Hasła zapisuję zakodowane za pomocą sha1();

Czyli, jak zrobię coś takiego:
  1. <?php
  2. $row=mysql_fetch_array($wynik);
  3. $ile=mysql_num_rows($wynik);
  4. $i = 0;
  5. while($i==$ile)
  6. {
  7. echo $row[$i]['login'];
  8. echo $row[$i]['imie'];
  9. $i++;
  10. }
  11. ?>

powinno dać wszystkie wyniki?
erix
Troszkę słabe, ale na dzień dobry wystarczy. :]

edit: napisz całość od razu... :S

  1. <?php
  2. $ile=mysql_num_rows($wynik);
  3. ?>

mysql_num_rows" title="Zobacz w manualu PHP" target="_manual, to jedna z najmniej efektywnych funkcji. Inaczej się powinno zliczać rekordy, tak ogólnie. W Twoim skrypcie nie ma takiej potrzeby.

  1. <?php
  2. while($i==$ile)
  3. ?>

Argh... Na chorobę tak? Przecież wyżej masz poprawny listing, jak się powinno robić.
obelix94
  1. <?php
  2. function wyswietl_uzyt(){       
  3. $baza = mysql_connect('mysql2.yoyo.pl', 'db727076', 'mateusz94');
  4. mysql_select_db('db727076');
  5. $zapytanie = "SELECT * FROM user";
  6. $wynik = mysql_query($zapytanie);
  7. $row=mysql_fetch_array($wynik);
  8. $ile=mysql_num_rows($wynik);
  9. $i = 0;
  10. while($i==$ile)
  11. {
  12. echo $row[$i]['login'];
  13. echo $row[$i]['imie'];
  14. $i++;
  15. }
  16. ?>
erix
To było do stylu pisania posta, jak coś. Uwzględnij jedną myśl od razu, a nie rozwijasz, że potem się można pogubić.

Ale widzę, że czekasz na gotowca, bo resztę moich uwag sobie najzwyczajniej w świecie olałeś.
obelix94
Cytat(erix @ 30.12.2008, 17:24:39 ) *
Ale widzę, że czekasz na gotowca, bo resztę moich uwag sobie najzwyczajniej w świecie olałeś.


1. Nie czekam na gotowca
2. Nie do końca rozumiem twoje uwagi

Jak zrozumiem to zmienię... Jestem ciężko kumaty.
erix
Cytat
Jak zrozumiem to zmienię... Jestem ciężko kumaty.

Widać czasami... Albo nie zawsze wykazujesz inwencję.

Cytat
2. Nie do końca rozumiem twoje uwagi

Po polsku nie piszę? Czego konkretnie nie zrozumiałeś, bo uważam, że wyraziłem się jasno i klarownie.
kefirek
  1. <?php
  2. while($row = mysql_fetch_assoc($wynik)) {
  3. echo $row['login'].'<br>';
  4. echo $row['imie'].'<br>';  
  5. }
  6. ?>
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.