Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] tabela z rekordami, pobieranymi z bazy
em-ba
post
Post #1





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


Witam, potrzebuję wykonać taką tabele, na którą będzie wczytywanych pięć rekordów ostatnio dodanych przez użytkownika do bazy

Zrobiłem tabele ale tam wyświetlają się wyniki na zasadzie, że jest przygotowana tabela na pięć rekordów i tyle.. nie wiem jak wykonać taką tabele, która pokaże tylko wypełnione rekrody ..i to pięć ostatnio dodanych (jeżeli były dodane tylko 3 rekordy to żeby wyświetliło je)

Oto kod:
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('style') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='$login'");
  6. $kot = mysql_fetch_array($tok);
  7.  
  8. '<table class="t">
  9.  <tr>
  10. <th class="t">nr</th>
  11. <th class="t">imię</th>
  12. <th class="t">nazwisko</th>
  13.  </tr>
  14.  <tr>
  15. <td class="t">1</td>
  16. <td class="t">'.$kot['imie'].'</td>
  17. <td class="t">'.$kot['nazwisko'].'</td>
  18.  </tr>
  19.  <tr>
  20. <td class="t">2</td>
  21. <td class="t">'.$kot['imie'].'</td>
  22. <td class="t">'.$kot['nazwisko'].'</td>
  23.  </tr>
  24.  </table>';
  25.  
  26. ?>
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




W przykładach do mysql_fetch_array znajdziesz pętlę while, dzięki której stworzysz tabelę.
Do tego będziesz też potrzebował użyć order by oraz limit.
Go to the top of the page
+Quote Post
kopix
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 4
Dołączył: 28.08.2007
Skąd: Katowice

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $i = 1;
  3. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='$login' LIMIT 0,5 ORDER BY data");
  4. '<table class="t">
  5.  <tr>
  6. <th class="t">nr</th>
  7. <th class="t">imię</th>
  8. <th class="t">nazwisko</th>
  9.  </tr>';
  10.  
  11. while($kot = mysql_fetch_array($tok)){
  12.  
  13.  echo '  <tr>
  14. <td class="t">'.$i.'</td>
  15. <td class="t">'.$kot['imie'].'</td>
  16. <td class="t">'.$kot['nazwisko'].'</td>
  17.  </tr>';
  18. $i += 1;
  19. }
  20.  
  21. echo '</table>';
  22. ?>


mniej więcej na tej zasadzie, oczywiście w tym przypadku w bazie musi istnieć kolumna o nazwie data, w której będzie podawana data i ewentualnie godzina dodania danej informacji do bazy.
Go to the top of the page
+Quote Post
em-ba
post
Post #4





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


no tak, rozumiem z tą datą, mam akurat takie pole..

Przerobiłem na ten sposób co napisałes ale przy while wyskakuje mi taka inf:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in..

a poza tym wyświetla mi tylko nagłówki tabeli bez rekordów z pobranymi danymi :/
Go to the top of the page
+Quote Post
rzymek01
post
Post #5





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


na moje to posortuj (sql: ORDER) wg id w odwrotnej kolejności (sql: DESC) z limitem 5 i będzie stykało (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
em-ba
post
Post #6





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


poki co to mi nic nie wyświetla, tylko tak jak napisałem.. wyskakuje błąd i nie ma rekordów z danymi
Go to the top of the page
+Quote Post
rzymek01
post
Post #7





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

Ostrzeżenie: (0%)
-----


em-ba, pokaż strukturę tabeli (łącznie z typami np. int itd.) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

bo na slepo to nie lubię pisać zapytań

Ten post edytował rzymek01 7.06.2008, 09:05:34
Go to the top of the page
+Quote Post
em-ba
post
Post #8





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


przepraszam, że tak długo nie odpisywałem ale siedziałem nad tym i się meczyłem nie mając dostępu do internetu i ...dalej nic :/

tak jak prosiłeś, to jest kod:
  1. <?php
  2. $i = 1;
  3. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='$login' LIMIT 0,5 ORDER BY data");
  4. '<table class="t">
  5.  <tr>
  6. <th class="t">nr</th>
  7. <th class="t">login</th>
  8. <th class="t">imię</th>
  9. <th class="t">nazwisko</th>
  10. <th class="t">dataprzyjazdu</th>
  11. <th class="t">dataodjazdu</th>
  12.  </tr>';
  13.  
  14. while($kot = mysql_fetch_array($tok)){
  15.  
  16.  echo '  <tr>
  17. <td class="t">'.$i.'</td>
  18. <td class="t">'.$kot['login'].'</td>
  19. <td class="t">'.$kot['imie'].'</td>
  20. <td class="t">'.$kot['nazwisko'].'</td>
  21. <td class="t">'.$kot['dataprzyjazdu'].'</td>
  22. <td class="t">'.$kot['dataodjazdu'].'</td>
  23.  </tr>';
  24. $i += 1;
  25. }
  26.  
  27. echo '</table>';
  28. ?>

a oto struktura bazy danych:
  1. create table 'kortc'
  2. id, int 32, unsigned, auto_increment,
  3. login, varchar 32
  4. imie, varchar 30
  5. nazwisko, varchar 30
  6. dataprzyjazdu, varchar 12
  7. dataodjazdu, varchar 12


dopiszę jeszczę, że błąd obiawa się tym, że wyświetlają sie tylko nagłówki tabeli - bez wartości i nad nagłówkami znajduje się inf dotyczący linii z instrukcją while..
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\...
Go to the top of the page
+Quote Post
mike
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


A zapytanie zwraca jakieś wyniki? Jeśli nie to nie dziwota, że masz błąd.
Sprawdź czy są wyniki (mysql_num_rows()) zanim puścisz pętlę.
Go to the top of the page
+Quote Post
Puzi
post
Post #10





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

Ostrzeżenie: (10%)
X----


No to spróbuj tak:
  1. <?php
  2. $i = 1;
  3. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='".$login."' LIMIT 0,5 ORDER BY data");
  4. '<table class="t">
  5.  <tr>
  6. <th class="t">nr</th>
  7. <th class="t">login</th>
  8. <th class="t">imię</th>
  9. <th class="t">nazwisko</th>
  10. <th class="t">dataprzyjazdu</th>
  11. <th class="t">dataodjazdu</th>
  12.  </tr>';
  13.  
  14. while($kot = mysql_fetch_array($tok)){
  15.  
  16.  echo '  <tr>
  17. <td class="t">'.$i.'</td>
  18. <td class="t">'.$kot[1].'</td>
  19. <td class="t">'.$kot[2].'</td>
  20. <td class="t">'.$kot[3].'</td>
  21. <td class="t">'.$kot[4].'</td>
  22. <td class="t">'.$kot[5].'</td>
  23.  </tr>';
  24. $i += 1;
  25. }
  26.  
  27. echo '</table>';
  28. ?>
Go to the top of the page
+Quote Post
em-ba
post
Post #11





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


dzieki, ale nic się nie zmieniło..
Go to the top of the page
+Quote Post
Puzi
post
Post #12





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

Ostrzeżenie: (10%)
X----


Masz błąd w zapytaniu przy sortowaniu... nie masz żadnej kolumny w bazie o nazwie data!!!

Ten post edytował Puzi 11.06.2008, 11:42:19
Go to the top of the page
+Quote Post
mike
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(em-ba @ 11.06.2008, 12:38:37 ) *
dzieki, ale nic się nie zmieniło..
No to może wprowadzisz miany proponowane przeze mnie? Na co czekasz?
I pokaż kod, jaki stworzysz.
Go to the top of the page
+Quote Post
em-ba
post
Post #14





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


u siebie mam ok, tylko tu wrzuciłem zapominając poprawić
  1. <?php
  2. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='".$login."' LIMIT 0,5 ORDER BY dataprzyjazdu");
  3. ?>


mike juz patrze, nie zauważyłem postu (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

zanim wprowadziłem zmiany dotyczące wstawienia pętli while to pobierało mi dane do tabeli z bazy ale to był tylko jeden rekord (ostatnio dodany) i wyświetlał te dane prawidłowo. Problem się zaczął w momencie, kiedy potrzebuje zrobić wyświetlanie 5-ciu ostatnio dodanych rekordów przez użytkownika :/

oto kod:
  1. <?php
  2. $user=$_SESSION['login'];
  3. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  4. mysql_select_db('fi') or die ("Nie mozna zlokalizowac bazy danych");
  5.  
  6. $i = 1;
  7. $tok = mysql_query ("SELECT * FROM `kortc` WHERE login='".$login."' LIMIT 0,5 ORDER BY dataprzyjazdu");
  8. '<table class="t">
  9.  <tr>
  10. <th class="t">nr</th>
  11. <th class="t">login</th>
  12. <th class="t">imię</th>
  13. <th class="t">nazwisko</th>
  14. <th class="t">dataprzyjazdu</th>
  15. <th class="t">dataodjazdu</th>
  16.  </tr>';
  17.  
  18. while($kot = mysql_fetch_array($tok)){
  19.  
  20.  echo '  <tr>
  21. <td class="t">'.$i.'</td>
  22. <td class="t">'.$kot['login'].'</td>
  23. <td class="t">'.$kot['imie'].'</td>
  24. <td class="t">'.$kot['nazwisko'].'</td>
  25. <td class="t">'.$kot['dataprzyjazdu'].'</td>
  26. <td class="t">'.$kot['dataodjazdu'].'</td>
  27.  </tr>';
  28. $i += 1;
  29. }
  30.  
  31. echo '</table>';
  32. ?>


Ten post edytował em-ba 11.06.2008, 11:55:02
Go to the top of the page
+Quote Post
Puzi
post
Post #15





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

Ostrzeżenie: (10%)
X----


To spróbuj tam gdzie masz LIMIT dać tylko 5...

A czasami tam gdzie masz pętle nie powinno być tak:
  1. <?php
  2. while($kot = mysql_fetch_row($tok))
  3. ?>


Ten post edytował Puzi 11.06.2008, 12:00:34
Go to the top of the page
+Quote Post
em-ba
post
Post #16





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


dawałem z początku LIMIT 5 ..i było tak samo, potem zmieniłem na LIMIT 0,5 też błąd.. spróbowałem teraz znów z 5 ..też to samo

jak zmieniłem na
  1. <?php
  2. while($kot = mysql_fetch_row($tok))
  3. ?>

to dalej jest ten sam błąd, tylko, że nie dotyczy mysql_fetch_array() tylko mysql_fetch_row()
Go to the top of the page
+Quote Post
phpion
post
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Weź zrób to, o czym pisze ~mike!!
  1. <?php
  2. if (mysql_num_rows($tok) > 0) {
  3. while($kot = mysql_fetch_array($tok)){
  4.  
  5.  echo '  <tr>
  6. <td class="t">'.$i.'</td>
  7. <td class="t">'.$kot['login'].'</td>
  8. <td class="t">'.$kot['imie'].'</td>
  9. <td class="t">'.$kot['nazwisko'].'</td>
  10. <td class="t">'.$kot['dataprzyjazdu'].'</td>
  11. <td class="t">'.$kot['dataodjazdu'].'</td>
  12.  </tr>';
  13. $i += 1;
  14. }
  15. }
  16. else {
  17. // brak rekordow zwroconych przez zapytanie
  18. }
  19. ?>

Tak ciężko to poprawić?

Ten post edytował phpion 11.06.2008, 12:10:20
Go to the top of the page
+Quote Post
Puzi
post
Post #18





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

Ostrzeżenie: (10%)
X----


A spróbuj tak:
  1. <?php
  2. $i = 1;
  3. $zapytanie = "SELECT * FROM `kortc` WHERE login='".$login."' LIMIT 0,5 ORDER BY dataprzyjazdu";
  4. $idzapytania = mysql_query($zapytanie);
  5.  
  6. '<table class="t">
  7.  <tr>
  8. <th class="t">nr</th>
  9. <th class="t">login</th>
  10. <th class="t">imię</th>
  11. <th class="t">nazwisko</th>
  12. <th class="t">dataprzyjazdu</th>
  13. <th class="t">dataodjazdu</th>
  14.  </tr>';
  15.  
  16. while ($kot = mysql_fetch_row($idzapytania))
  17. {
  18. echo '  <tr>
  19. <td class="t">'.$i.'</td>
  20. <td class="t">'.$kot['login'].'</td>
  21. <td class="t">'.$kot['imie'].'</td>
  22. <td class="t">'.$kot['nazwisko'].'</td>
  23. <td class="t">'.$kot['dataprzyjazdu'].'</td>
  24. <td class="t">'.$kot['dataodjazdu'].'</td>
  25.  </tr>';
  26. $i += 1;
  27. }
  28.  
  29. echo '</table>';
  30. ?>
Go to the top of the page
+Quote Post
-cipek-
post
Post #19





Goście







Zapytanie:

  1. <?php
  2. $zapytanie = "SELECT * FROM `kortc` WHERE login='$login' ORDER BY dataprzyjazdu LIMIT 0,5 ";
  3. ?>
Go to the top of the page
+Quote Post
em-ba
post
Post #20





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

Ostrzeżenie: (0%)
-----


phpion, zrobiłem jak poleciłes i..
ciągle jest ten sam błąd
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\... //dotyczy linii z if (mysql_num_rows($tok) > 0) {

teraz chyba działa juz..

zamieniłem jak radził cipek

ale mam jeszcze takie pytanie..

teraz mam w kodzie przed pętlą while instrkcję if
mam tak zostawić czy wyrzucić tego if-a (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Przy okazji dzięki wszystkim za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

o to mi chodzi
  1. <?php
  2. if (mysql_num_rows($tok) > 0) {
  3. while($kot = mysql_fetch_array($tok)){
  4. }
  5. }
  6. ?>


Ten post edytował em-ba 11.06.2008, 12:22:54
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:53