Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Wyświetlanie rekordów z bazy
heroep18
post 9.07.2012, 13:35:38
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.09.2010

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


Witam. Jak zwykle mam problem. Tym razem chodzi o to, że chcę aby rekord pokazywał się na stronie. Chciałbym żeby rekordy pojawiały się od 1 ID do ostatniego ID, jeśli użytkownik kliknąłby przycisk zmiany rekordu to pokazałby się następny rekord chronologicznie po ID.
Go to the top of the page
+Quote Post
CuteOne
post 9.07.2012, 13:42:15
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


google -> mysql order by
google -> mysql LIMIT
Go to the top of the page
+Quote Post
heroep18
post 9.07.2012, 13:54:14
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.09.2010

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


Dziękuję smile.gif O to chodziło.

Ok. Zrobiłem tak, że pokazuje mi rekord biggrin.gif

Teraz jeszcze jeden problem, chciałbym aby gdy użytkownik odświeży stronę to pokazuje następny rekord. Trzeba użyć jakiejś pętli?>
Go to the top of the page
+Quote Post
piotrex41
post 9.07.2012, 14:08:45
Post #4





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


Odświeży, czy przejdzie "dalej"? Chodzi mi o to czy link się zmieni, czy też ktoś po prostu da refresh tudzież F5? W tym pierwszym wypadku nie będzie problemu. Dajesz parametr do linku, i czytasz go GET'em i robisz z niego limit. Natomiast jeśli to tylko odświeżenie, to nie wiem czy jakiś JS by się tu nie nadał, bo jak odświeża się to dane tymczasowe są tracone. Musiał być pamiętać ile użytkownik widział, ale z drugiej strony zapisywać każdemu userowi ile widział... I jeszcze kiedy to się czyści?
Jeśli chodzi o sam refresh to podaj więcej szczegółów.


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post
heroep18
post 9.07.2012, 14:15:26
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.09.2010

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


Chodzi mi o F5, może być dalej

Ten post edytował heroep18 9.07.2012, 14:28:44
Go to the top of the page
+Quote Post
piotrex41
post 9.07.2012, 14:24:26
Post #6





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


To jeśli może być dalej, to masz co najmniej 2 wyjścia biggrin.gif

1. (Załóżmy, że wyświetlasz po 5 na stronę)
Pobierasz wiersze zapytaniem ("SELECT ... LIMIT 0,5"); i wyświetlasz je w pętli. Na końcu robisz sobie odnośnik <a href="?rows=5">Dalej...</a>
Więc trzeba poprawić zapytanie - ("SELECT ... LIMIT ".$_GET['rows'].",".$_GET['rows'] + 5);. Tym oto sposobem będziesz pobierać po 5 rekordów i je wyświetlać.

Dla wyjaśnienia: Ta liczba 5 w linku oznacza po ile wyświetlasz. Jeśli ją zmienisz to zmień też tę 5 w zapytaniu.

2. Pobierasz wszytko zapytaniem, przechowujesz to w tablicy i zmieniasz wyświetlanie przez JS (bodajże AJAXem takie rzeczy się robi). Można oczywiście AJAXem pobierać po 5 elementów na bieżąco w tle, bez przeładowania strony, ale trzeba zrobić jakiś link/przycisk do przechodnia dalej.


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post
klocus
post 9.07.2012, 14:28:29
Post #7





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 29.07.2010
Skąd: POZnan*

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


@Autor: z tym odświeżeniem: wydaje mi się, że mógłbyś spróbować ze zwykłą zmienną, która gromadziła by np. w sesji ilość odświeżeń. Otóż za każdym razem gdy odświeżysz stronę, skrypt wykona się ponownie, więc mógłbyś sprawdzić za pomocą sesji, które to już odświeżenie danego użytkownika i wg tego pobrać kolejne elementy z bazy wink.gif

Ten post edytował klocus 9.07.2012, 14:29:45
Go to the top of the page
+Quote Post
heroep18
post 9.07.2012, 18:42:11
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.09.2010

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


Narazie skombinowałem coś takiego:
  1. <?php
  2. $query = mysql_query('SELECT nick FROM tabelakodow ORDER BY ID ASC');
  3. $row = mysql_fetch_array($query);
  4. mysql_query(("SELECT nick FROM tabelakodow ORDER BY ID ASC LIMIT 0,5 ".$_GET['ID'].",".$_GET['ID'] + 5 ));
  5. echo $row['nick'];
  6.  
  7. ?>


ale nie chce mi pokazać tych pięciu rekordów. Co mam źle?
Go to the top of the page
+Quote Post
CuteOne
post 9.07.2012, 19:02:28
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Zobacz jak powinno wyglądać limitowanie w mysql

google -> mysql LIMIT
Go to the top of the page
+Quote Post
heroep18
post 10.07.2012, 10:57:21
Post #10





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 18.09.2010

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


Query was empty :/ Nie wiem jak może być puste, kiedy w bazie jest wszystko

Dodałem or die, wyrzuciłem limit (wydaje mi się, że dobrze limituję, ale i tak wyrzuciłem)

<?php
$query = mysql_query(("SELECT nick FROM tabelakodow ORDER BY ID ASC".$_GET['ID'].",".$_GET['ID'] + 5 )) or die (mysql_error());
$row = mysql_fetch_array($query);

echo $row['nick'];

?>

Teraz mam błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5' at line 1

Co to jest? Dodam, że gdy +5 wyrzucę to to samo jest. Jeśli wyrzucę $_get to też, order by tak samo :/
Go to the top of the page
+Quote Post
Shido
post 10.07.2012, 11:00:09
Post #11





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Musisz mu pokazać że $_GET['ID'].",".$_GET['ID'] + 5 jest wyznaczeniem limitu, czyli musisz przed tym dać LIMIT
  1. $query = mysql_query(("SELECT nick FROM tabelakodow ORDER BY ID ASC LIMIT ".$_GET['ID'].",".$_GET['ID'] + 5 )) or die (mysql_error());

I kody dawaj w tagach.

Ten post edytował Shido 10.07.2012, 11:01:17


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
redeemer
post 10.07.2012, 11:01:57
Post #12





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Pomijając kwestie bezpieczeństwa (SQL Injection) to po pierwsze twój string, który przesyłasz do bazy to "5" (zadanie dla Ciebie - dlaczego tak jest). Po drugie pomiędzy ASC a $_GET['ID'] brakuje spacji. Po trzecie brakuje słowa kluczowego LIMIT.

@up: Twoje zapytanie również zwraca "5" smile.gif

EDIT: Po czwarte to drugi argument w LIMIT to "prawdziwy" limit (jeżeli chcesz zawsze pięć rekordów to będzie to po prostu 5). Pierwszy to OFFSET.

Ten post edytował redeemer 10.07.2012, 11:12:35


--------------------
Go to the top of the page
+Quote Post
piotrex41
post 10.07.2012, 11:04:44
Post #13





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


Kod
$query = mysql_query(("SELECT `nick` FROM `tabelakodow` ORDER BY `id` ASC LIMIT ".$_GET['ID'].",".$_GET['ID'] + 5 )) or die (mysql_error());

lub
Kod
$query = mysql_query(("SELECT `nick` FROM `tabelakodow` ORDER BY `id` ASC LIMIT '".$_GET['ID']."','".$_GET['ID']."+ 5' )) or die (mysql_error());

Pokombinuj coś sam...


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 13:40