Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Odczytywanie artykułów z bazy
Rookie
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


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 (IMG:style_emoticons/default/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

Ten post edytował Rookie 13.08.2009, 11:34:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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.

Ten post edytował fifi209 13.08.2009, 11:52:30
Go to the top of the page
+Quote Post
Rookie
post
Post #4





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


No właśnie chcę bez limitu, jeśli pominę "LIMIT", to będzie wszystko? ;p
Zaraz sprawdzę to co mi podałeś (IMG:style_emoticons/default/smile.gif)
Datę mam w takim formacie:
  1. $data = date("d.m.Y H:i:s");
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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ś (IMG:style_emoticons/default/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ć. (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Rookie
post
Post #6





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


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

Ten post edytował Rookie 13.08.2009, 12:30:09
Go to the top of the page
+Quote Post
Fifi209
post
Post #7





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


  1. $sql="SELECT * FROM news";
  2. while($dane = mysql_fetch_assoc($sql)) {

A zobacz jak ja pisałem...
Go to the top of the page
+Quote Post
Andaramuxo
post
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 18.03.2009

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


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...

Ten post edytował Andaramuxo 13.08.2009, 12:35:19
Go to the top of the page
+Quote Post
Rookie
post
Post #9





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 1.03.2008
Skąd: Olsztyn

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


No kurde, porównuję te linijki i nie widzę różnicy, jestem ślepy? (IMG:style_emoticons/default/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

Ten post edytował Rookie 13.08.2009, 12:39:33
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: 6.10.2025 - 06:24