Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Problem z wyświetlaniem ostatnich wpisów
piotrek1984
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Witam,

Mam następujący problem: próbuję napisać skrypt, który będzie pobierał kilka ostatnich (w tym przykładnie 3) tytułów ogłoszeń z tabeli oraz je wyświetlał. Na chwilę obecną udało mi się połączyć z bazą danych oraz wykonać zapytanie. Niestety nie potrafię wyświetlić tych informacji. Proszę o pomoc. Manual oczywiście cały czas czytam, jednak nie mogę sobie z tym poradzić. Narazie chciałbym zrobić wyświetlanie tytułów ogłoszeń, następnie zrobić w ten sposób, aby każdy tytuł ogłoszenia był linkiem do treści ogłoszenia. Kolejnym etapem będzie sprecyzowanie zapytania do bazy i wyświetlanie ostatnich ogłoszeń z danej kategorii.

  1. <?php
  2. // nawiazujemy polaczenie
  3. $connection = @mysql_connect('sql.****.nazwa.pl', 'nazwa', '***')
  4. // w przypadku niepowodznie wyswietlamy komunikat
  5. or die('Brak polaczenia z serwerem MySQL.<br />Blad: '.mysql_error());
  6. // polaczenie nawiazane
  7. echo "Udalo sie polaczyc z serwerem!<br />";
  8. // nawiazujemy polaczenie z baza danych
  9. $db = mysql_select_db('nazwabazy', $connection)
  10. // w przypadku niepowodzenia wyswietlamy komunikat
  11. or die('Nie moge polaczyc sie z baza danych<br />Blad: '.mysql_error());
  12. // polaczenie nawiazane
  13. echo "Udalo sie polaczyc z baza danych!";
  14. $zapytanie="SELECT tytul FROM ogloszenia_e Order by id_ogloszenia DESC Limit 3";
  15. $wykonaj=mysql_query($zapytanie);
  16. echo '<table>';
  17. while ($wiersz = mysql_fetch_row($wykonaj))
  18. {
  19. echo "<tr><td>".$wiersz[0]." ".$wiersz[1]." ".$wiersz[2]." ".$wiersz[3]."</td></tr>";
  20. }
  21. echo '</table>';
  22. ?>


Jeżeli potrzebne by były jakieś dodatkowe informacje, to podam bez problemu (IMG:style_emoticons/default/smile.gif)

Ten post edytował piotrek1984 25.01.2010, 21:43:04
Go to the top of the page
+Quote Post
rytek
post
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


Tak na szybko: zrobiłeś literówkę: $zaptanie ($zaptanie="SELECT tytul...)
i
  1. ORDER BY id DESC LIMIT 3`;

Cudzysłów powinien być.

Poprawnie powinno być:

  1. $zapytanie="SELECT tytul, pole2, pole3, pole4 FROM ogloszenia_e ORDER BY id DESC Limit 3";


Oczywiście pole2, pole3, pole4 zastąp nazwami pól, które pobierasz, bo widzę, że 4 pola pobrać chciałeś.

Ten post edytował rytek 25.01.2010, 19:41:16
Go to the top of the page
+Quote Post
piotrek1984
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Była jeszcze jedna literówka, ale po dokładnym przeczytaniu kodu została usunięta. W tej chwili wywala błąd jakiegoś argumentu w18 linijce.
Go to the top of the page
+Quote Post
pedro84
post
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(piotrek1984 @ 25.01.2010, 20:29:22 ) *
Była jeszcze jedna literówka, ale po dokładnym przeczytaniu kodu została usunięta. W tej chwili wywala błąd jakiegoś argumentu w18 linijce.

Może podasz chociaż treść tego błędu? Linia 18 z kodu z Twojego pierwszego posta? Ta?
  1. #
  2. while ($wiersz = mysql_fetch_row($wykonaj))
Go to the top of the page
+Quote Post
piotrek1984
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Z tym błędem już sobie poradziłem. W tej chwili nie wywala już żadnych błędów, jednak wynikiem działania skryptu są tylko 3 napisy ułożone w ten sposób:
$wiersz
$wiersz
$wiersz

Tak, cały czas piszę o kodzie zamieszczonym w pierwszym poście.

Ten post edytował piotrek1984 25.01.2010, 20:51:46
Go to the top of the page
+Quote Post
rytek
post
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


  1. echo "<tr><td>".$wiersz[0].", ".$wiersz[1].", ".$wiersz[2].", ".$wiersz[3]."</td></tr>";
Go to the top of the page
+Quote Post
piotrek1984
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Właśnie tak miałem na początku jak napisałeś (IMG:style_emoticons/default/smile.gif) Ktoś mi podpowiedział zle, ale już jest ok. Poprawione. W tej chwili skrypt wyświetla 3 tytuły ogłoszeń z najniższym id czyli najstarsze a ja chciałbym żeby wyświetlał 3 ostatnie, czyli 3 z najwyższym id, ponieważ kolumna id_ogloszenia jest typu auto_increment.


Już jest ok. Wyświetlają się tytuły ostatnio dodanych ogłoszeń. Po prostu trzeba było usunąć apostrofy, ponieważ na początku nie wiem czemu w zapytaniu wyrażenie 'id_ogloszenia' umieściłem w apostrofach. Poprawione. Teraz bym chciał aby każdy wyświetlany tytuł ogłoszenia był linkiem do tego ogłoszenia. Pomoże ktoś naprowadzić na dobry trop ? (IMG:style_emoticons/default/smile.gif)


Link do przykładowego ogłoszenia w moim przypadku wygląda następująco: ****.pl/index.php?act=ogloszenia&idk=2&ido=179 , więc wnioskuję, że trzeba będzie pobrać z tabeli kategorię do której ogłoszenie jest przypisane oraz id. Pomoże ktoś ? (IMG:style_emoticons/default/smile.gif)

Ten post edytował piotrek1984 25.01.2010, 21:50:43
Go to the top of the page
+Quote Post
rytek
post
Post #8





Grupa: Zarejestrowani
Postów: 63
Pomógł: 14
Dołączył: 21.01.2009
Skąd: Mszczonów

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


  1. $zapytanie="SELECT id_ogloszenia, tytul, id_kategorii FROM ogloszenia_e ORDER BY id_ogloszenia DESC LIMIT 3";
  2. $wykonaj=mysql_query($zapytanie);
  3. echo '<table>';
  4. while ($wiersz = mysql_fetch_row($wykonaj))
  5. {
  6. echo "<tr><td><a href='index.php?act=ogloszenia&idk=".$wiersz[2]."&ido=".$wiersz[0]."'> ".$wiersz[1]."</a></td></tr>";
  7. }
  8. echo '</table>';


A po drugiej stronie (przy wyświetlaniu treści) odbierasz:

  1. if(isset($_GET['ido']) AND is_numeric($_GET['ido']) AND isset($_GET['idk']) AND is_numeric($_GET['ido']))
  2. {
  3. $zapytanie="SELECT tytul, tresc FROM ogloszenia_e WHERE id_kategorii='".$_GET['idk']."' AND id_ogloszenia='".$_GET['ido']."' LIMIT 1";
  4. $wykonaj=mysql_query($zapytanie);
  5. $wiersz = mysql_fetch_row($wykonaj))
  6. echo "Tytul: ".$wiersz[0]."<br>Tresc: ".$wiersz[1];
  7. }


Pisane na szybko, ale powinno działać.

Ten post edytował rytek 26.01.2010, 12:46:27
Go to the top of the page
+Quote Post
piotrek1984
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


Nie chcę odczytywać treści ogłoszenia, jedynie jego tytuł, który ma być linkiem tego ogłoszenia. Dopiero po kliknięciu w tytuł ogłoszenia przechodzi sie do strony z treścią ogłoszenia. Próbuję ogarnąć temat i napisać kod opierając się na Twoich wskazówkach jednak na chwilę obecną skrypt nie działa. Poniżej fragment kodu od zapytania do końca:

  1. $zapytanie="SELECT id_ogloszenia tytul id_kategoria FROM ogloszenia_e Order by id_ogloszenia DESC Limit 3";
  2. $wykonaj=mysql_query($zapytanie);
  3. echo '<table>';
  4. while ($ogloszenie = mysql_fetch_row($wykonaj))
  5. {
  6. echo "<tr><td><a href='index.php?act=ogloszenia&idk=".$wiersz[2]."&ido=".$wiersz[0]."'> ".$wiersz[1]."</a></td></tr>";
  7. echo '</table>';
  8. if(isset($_GET['ido']) AND is_numeric($_GET['ido']) AND isset($_GET['idk']) AND is_numeric($_GET['ido']))
  9. {
  10. $zapytanie="SELECT tytul FROM ogloszenia_e WHERE id_kategoria='".$_GET['idk']."' AND id_ogloszenia='".$_GET['ido']."' LIMIT 1";
  11. $wykonaj=mysql_query($zapytanie);
  12. $wiersz = mysql_fetch_row($wykonaj)
  13. echo "<tr><td>".$wiersz[1]."</td></tr>";
  14. }
  15. echo '</table>';
  16. ?>
Go to the top of the page
+Quote Post
pedro84
post
Post #10





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


  1. SELECT tytul FROM ogloszenia_e WHERE

Pobierasz tylko tytuł to możesz wyświetlić tylko tytuł. Manual się kłania (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
piotrek1984
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 25.01.2010

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


No tak, przecież to oczywiste (IMG:style_emoticons/default/smile.gif) Poza tym żeby wyświetlić tablicę (w tym przypadku tytuły ogłoszeń) trzeba dodać pętlę while. Wszystko poprawione, skrypt działa. Poniżej zamieszczam kluczowy fragment kodu:

  1. $zapytanie1="SELECT id_ogloszenia, tytul, id_kategoria FROM ogloszenia_e ORDER BY id_ogloszenia DESC LIMIT 3";
  2. $wykonaj1=mysql_query($zapytanie1);
  3. echo '<table>';
  4. while ($wiersz = mysql_fetch_row($wykonaj1))
  5. {
  6. echo "<tr><td><a href='index.php?act=ogloszenia&idk=".$wiersz[2]."&ido=".$wiersz[0]."'> ".$wiersz[1]."</a></td></tr>";
  7. }
  8. echo '</table>';
  9. if(isset($_GET['ido']) AND is_numeric($_GET['ido']) AND isset($_GET['idk']) AND is_numeric($_GET['ido']))
  10. {
  11. $zapytanie2="SELECT tytul FROM ogloszenia_e WHERE id_kategoria='".$_GET['idk']."' AND id_ogloszenia='".$_GET['ido']."' LIMIT 1";
  12. $wykonaj2=mysql_query($zapytanie2);
  13. echo '<table>';
  14. while ($wynik = mysql_fetch_row($wykonaj2))
  15. {
  16. echo "<tr><td>".$wynik[0]."</td></tr>";
  17. }
  18. echo '</table>';
  19. }
  20. ?>


Panowie, wielkie dzięki za pomoc ! (IMG:style_emoticons/default/yahoo.gif)

Ten post edytował piotrek1984 27.01.2010, 16:43:19
Go to the top of the page
+Quote Post

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: 23.08.2025 - 06:19