Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z wyświetlaniem ostatnich wpisów
Forum PHP.pl > Forum > Przedszkole
piotrek1984
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 smile.gif
rytek
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ś.
piotrek1984
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.
pedro84
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))
piotrek1984
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.
rytek
  1. echo "<tr><td>".$wiersz[0].", ".$wiersz[1].", ".$wiersz[2].", ".$wiersz[3]."</td></tr>";
piotrek1984
Właśnie tak miałem na początku jak napisałeś 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 ? 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ś ? smile.gif
rytek
  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ć.
piotrek1984
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. ?>
pedro84
  1. SELECT tytul FROM ogloszenia_e WHERE

Pobierasz tylko tytuł to możesz wyświetlić tylko tytuł. Manual się kłania smile.gif
piotrek1984
No tak, przecież to oczywiste 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 ! yahoo.gif
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.