Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Odczytywanie artykułów z bazy
Forum PHP.pl > Forum > Przedszkole
Rookie
Witam,
Zanim opiszę mój problem prosiłbym o wyrozumiałość ze względu na to, iż dopiero uczę się php, a znajomość mysql jest dosłownie minimalna, znam najprostsze podstawy.

Miałem na stronie możliwość dodawania artykułów, były one zapisywane do pliku *.txt.
Chcę udoskonalić to, ażeby artykuły były zapisywane do (i oczywiście odczytywane z) bazy mysql.
tabelę w bazie zrobiłem, skrypt do zapisywania również - i tu postęp, nie miałem żadnych problemów, wszystko zadziałało za 1 razem haha.gif.
Napisałem skrypt odczytujący informacje z bazy ale pokazuje tylko najnowszy wpis.
To jest skrypt odczytujący info z bazy:
  1. <?php
  2. $zapytanie="SELECT tytul FROM news";
  3. $temp=mysql_query($zapytanie) or die(mysql_error());
  4. $ile=mysql_num_rows($temp);
  5. $temp=mysql_fetch_array($temp);
  6. $tytul=$temp['tytul'];
  7.  
  8. $zapytanie2="SELECT obraz FROM news";
  9. $temp2=mysql_query($zapytanie2) or die(mysql_error());
  10. $ile2=mysql_num_rows($temp2);
  11. $temp2=mysql_fetch_array($temp2);
  12. $obraz=$temp2['obraz'];
  13.  
  14. $zapytanie3="SELECT tresc FROM news";
  15. $temp3=mysql_query($zapytanie3) or die(mysql_error());
  16. $ile3=mysql_num_rows($temp3);
  17. $temp3=mysql_fetch_array($temp3);
  18. $tresc=$temp3['tresc'];
  19.  
  20. $zapytanie4="SELECT zrodla FROM news";
  21. $temp4=mysql_query($zapytanie4) or die(mysql_error());
  22. $ile4=mysql_num_rows($temp4);
  23. $temp4=mysql_fetch_array($temp4);
  24. $zrodla=$temp4['zrodla'];
  25.  
  26. $zapytanie5="SELECT data FROM news";
  27. $temp5=mysql_query($zapytanie5) or die(mysql_error());
  28. $ile5=mysql_num_rows($temp5);
  29. $temp5=mysql_fetch_array($temp5);
  30. $data=$temp5['data'];
  31. ?>
  32. <table cellspacing="0" cellpadding="0" width="98%" style="margin-bottom: 10px;" align="center">
  33. <tr>
  34. <td style="width: 20;" align="left"><img src="Grafika/Niebieski/naroznik1.png" alt=""></td>
  35. <td class="glowek" align="center"><?php echo $tytul;?></td>
  36. <td style="width: 20;" align="right"><img src="Grafika/Niebieski/naroznik2.png" alt=""></td>
  37. </tr>
  38. <tr>
  39. <td valign="top" colspan="3" class="trescc">
  40. <p align="justify"><img src="<?php echo $obraz; ?>" style="float: left;" alt=""><?php echo $tresc; ?></p>
  41. <p valign="bottom">Źródła: <?php echo $zrodla; ?></p>
  42. </td>
  43. </tr>
  44. <tr>
  45. <td colspan="3">
  46. <div style="font-family: Times New Roman; font-size: 11; background-color: #1B84FF; color: #FFFFFF;">
  47. Dodano <?php echo $data; ?>
  48. </div>
  49. </td>
  50. </tr>
  51. </table>

Wydaje mi się, że tu trzeba coś zrobić z funkcjami for lub foreach, ale nigdy tych 2 nie potrafiłem się nauczyć i się nimi posługiwać, nie wchodzi mi to po prostu ;p
Nakierujecie mie na dobrą drogę (rozwiązanie)?
Bardzo proszę.
Z góry dziękuę.
Pozdrawiam
wookieb
To nie jest "skrypt" tylko przykład błędnego "kodu" napisanego przez osobę, która nie przeczytałą podstawowego kursu obsługi baz danych.
NAWET W MANUALU TO JEST
http://php.net/mysql_fetch_assoc
Fifi209
Niepotrzebnie wywołujesz tyle zapytań do jednej tabeli, z powodzeniem wystarczy jedno.

Robisz coś takiego:

  1.  
  2. // połączenie z bazą (chyba wiesz jak)
  3.  
  4. $sql = mysql_query('SELECT * FROM `news` LIMIT 10'); // powiedzmy 10 newsów, nie wiem jak rozpoznajesz najnowsze
  5.  
  6. while($dane = mysql_fetch_assoc($sql)) {
  7. echo $dane['tytul'].'<br/>'.$dane['obraz'].'<br/>'.$dane['tresc'].'<br/>'.$dane['zrodla'].'<br/>'.$dane['data'];
  8. }
  9.  
  10. // powiedz w jakim formacie masz to $dane['data'];
  11.  


@down
Dzięki, literówka faktycznie.
Rookie
No właśnie chcę bez limitu, jeśli pominę "LIMIT", to będzie wszystko? ;p
Zaraz sprawdzę to co mi podałeś smile.gif
Datę mam w takim formacie:
  1. $data = date("d.m.Y H:i:s");
Fifi209
Cytat(Rookie @ 13.08.2009, 12:10:21 ) *
No właśnie chcę bez limitu, jeśli pominę "LIMIT", to będzie wszystko? ;p

Będzie wszystko
Cytat(Rookie @ 13.08.2009, 12:10:21 ) *
Zaraz sprawdzę to co mi podałeś smile.gif

Nie musi działać w 100% to jest przykład.
Cytat(Rookie @ 13.08.2009, 12:10:21 ) *
Datę mam w takim formacie:
  1. $data = date("d.m.Y H:i:s");

Polecam zapisać czas utworzenia news'a po prostu time() łatwiej potem porównywać. winksmiley.jpg
Rookie
Dzięki to działa, ale gdy wpisze linijka w linijke tak jak ty mi napisałeś ;p.
Nie mogę znaleźć błędu, poprawisz mnie?
  1. $sql="SELECT * FROM news";
  2. while($dane = mysql_fetch_assoc($sql)) {
  3. echo '
  4. <table cellspacing="0" cellpadding="0" width="98%" style="margin-bottom: 10px;" align="center">
  5. <tr>
  6. <td style="width: 20;" align="left"><img src="Grafika/Niebieski/naroznik1.png" alt=""></td>
  7. <td class="glowek" align="center">'.$dane[tytul].'</td>
  8. <td style="width: 20;" align="right"><img src="Grafika/Niebieski/naroznik2.png" alt=""></td>
  9. </tr>
  10. <tr>
  11. <td valign="top" colspan="3" class="trescc">
  12. <p align="justify"><img src="'.$dane[obraz].'" style="float: left;" alt="">'.$dane[tresc].'</p>
  13. <p valign="bottom">Źródła: '.$dane[zrodla].'</p>
  14. </td>
  15. </tr>
  16. <tr>
  17. <td colspan="3">
  18. <div style="font-family: Times New Roman; font-size: 11; background-color: #1B84FF; color: #FFFFFF;">
  19. Dodano '.$dane[data].'
  20. </div>
  21. </td>
  22. </tr>
  23. </table>';
  24. }

wyświetla się komunikat:
Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Julek\Moje dokumenty\HTML\Witryna\dodaj_test.php on line 65


EDIT:Jeszcze jedno, nie wiem jak tu jest, jeszcze nie zerknąłem ;p, oczywiście najnowszy artykuł musi być na samej górze, czyli musi być od najnowszego do najstarszego
Fifi209
  1. $sql="SELECT * FROM news";
  2. while($dane = mysql_fetch_assoc($sql)) {

A zobacz jak ja pisałem...
Andaramuxo
Jeżeli od najnowszego, to artykuł najnowszy ma największe id, więc w zapytaniu mysql dodajesz ORDER BY id DECS.

@down

Tak, naciśnij plaintext, skopiuj oba i wklej do notatnika, potem porównaj słowo po słowie...
Rookie
No kurde, porównuję te linijki i nie widzę różnicy, jestem ślepy? biggrin.gif
aaaa, zauważyłem, ale ja głupi ;p mysql_query przed tym ;p
Dzięki wielkie za pomoc

@up nie trzeba ORDER BY id DECS, i tak jest posortowane tak jak chcę ;p
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.