Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]/[MySQL] Wyswietlanie newsów z bazy.
dawhol
post
Post #1





Grupa: Zarejestrowani
Postów: 256
Pomógł: 0
Dołączył: 19.07.2006
Skąd: Ostrów Wielkopolski

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


Witam jestem poczatkujacy w sprawach php ucze sie dopiero kilkanascie dni (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale napisałem juz pare skryptów dzisiaj chciałem dac pod ostrzał skrypt do wyswietlania newsów z bazy.

Struktóra bazy danych jest następująca:
ID | TITLE | SHORTNEWS | LONGNEWS | DATA

A o to kod pliku newsy_wyswietl.php
  1. <?php
  2. $mysql = '../conf/mysql.ini.php';
  3.  
  4. /* Za pomocą funkcji if sprawdzamy czy istnieje plik ze zmiennej $mysql, gdy funk
    cja zwróci wartosc TRUE
  5.    wczytujemy plik w innym przypadku wyswietlamy blad. */
  6.  
  7. if ( file_exists($mysql)) 
  8. {
  9. require_once($mysql);
  10. } else echo ('Nie można się połączyć z bazą ponieważ plik'.$mysql.' nie istnieje.');
  11.  
  12. /* Deklarujemy funkcje shortnews() */
  13. function shortnews()
  14. {
  15. /* ile na strone */
  16. $ile = 10;
  17. $numrows = mysql_num_rows(mysql_query("SELECT * FROM cms_news"));
  18. if(!$p) $p = 0;
  19. /* zabezpieczenie przed nienumerycznymi wartosciami */
  20. $p = (int)$p; 
  21. $ile = (int)$ile;
  22.  
  23. $zapytanie = "SELECT * FROM cms_news ORDER by data LIMIT $p,$ile";
  24. $wykonaj = mysql_query($zapytanie);
  25.  
  26. while($dane=mysql_fetch_array($wykonaj)) { echo "<table width="500px"><tr>
  27. <td>".$dane['title']."</td></tr>
  28.  <tr><td>".$dane['shortnews']."<br><a href="news_wyswietl.php?wiecej=1&id=".$dane['id']."">Więcej ...</a></td></tr>
  29. <tr><td>".$dane['data']."</td>
  30. </tr></table><br /><br />";
  31. }
  32.  
  33. echo "strona: ";
  34. for($i=0;$i<ceil($numrows/$ile);$i++) {
  35. echo '<a href="'.$PHP_SELF.'?p='.($i*$ile).'">'.($i+1).'</a> ';};
  36.  
  37. }
  38.  
  39. /* Deklarujemy funkcję longnews() */
  40. function longnews()
  41. {
  42.  
  43. if (is_numeric($_GET['id'])) 
  44. {
  45. $id = $_GET['id'];
  46. }
  47. else
  48. {
  49. $id = rand(); /* Jeżeli id nie bedzie liczba lub bedzie puste wtedy zostanie wylosowane
  50.  jezeli nie bedzie go w bazie to nic sie nie wyswietli a 
  51.  jezeli dany id bedzie w bazie wyswietli on w formie dludiej newsa o wylosowanym
     id */
     
  52. };
  53.  
  54. $zapytanie2 = "SELECT * FROM cms_news WHERE id=$id LIMIT 1";
  55. $wykonaj2 = mysql_query($zapytanie2);
  56.  
  57. if ($dane2=mysql_fetch_array($wykonaj2)) { echo "<table width="500px"><tr>
  58. <td>".$dane2['title']."</td></tr>
  59.  <tr><td>".$dane2['shortnews']."<br /><br />".$dane2['longnews']."</td></tr>
  60. <tr><td>".$dane2['data']."</td>
  61. </tr></table>";};
  62. }
  63.  
  64. /* Jezeli zmienna $wiecej jest pusta wtedy zostana wyswietlone wszystkie newsy w 
    formie krótkiej,
  65. jezeli wartos ta bedzie liczba oraz bedzie równa 1 wtedy zostanie wyswietlony je
    den news w całości,
  66. w innym wypadku zostanie wyświetlony bład */
  67.  
  68. $wiecej = $_GET['wiecej'];
  69.  
  70. if (empty($wiecej)) 
  71. {
  72. shortnews();
  73. } 
  74. else 
  75. {
  76. if (is_numeric($wiecej) && $wiecej = 1) 
  77. {
  78. longnews();
  79. } 
  80. else echo ('Błąd wartość zmiennej $wiecej jest nie prawidłowa !!!');  
  81. };
  82.  
  83. ?>


Proszę o ocenę i ew. propozycje poprawy i zmian (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował dawhol 4.08.2006, 23:56:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Jak na jeden z pierwszych skryptow wyglada niezle (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


Zmienne, ktore maja byc stale, a do tego sa w jakis spsob konfiguracja w skrypcie (jak $ile = 10) powinny byc definiowane przez define() na poczatku skryptu.
Jezeli bedziesz chcial zmienic liczbe wyswietlanych newsow, to nie bedzie szukal po calym pliku tej zmiennej.


Losowanie newsa raczej jest zbedne. Nie podales przedzialu losowania, wiec raczej napewno wylosuje nieistniejacy. Moze lepiej wyswietlic news z ID 1 ?


Inna sprawa to taka, ze mozna by sie pokusic o jakis system wzorcow aby odseparowac, warstwe prezentacji. Bedzie czytelniej i latwiej w utrzymaniu (zmianach).


Ostatnia chyba sprawa to nazewnictwo zmiennych i komentarze.

$p, $ile nic nie mowia. Jezeli wrocisz do tego skryptu po jakims czasie, to tez Ci one nic nie powiedza (bez analizy kodu).

Dodatkowo, mozna by sie pokusic o inna firme zapisu zmiennych.
Np:
- $alaMaKota albo
- $iAlaMaKota lub $intAlaMaKota.

Pierwszy spsob wyroznia czlowny wyrazow zmiennej. Jest to znacznie czytelniejsze niz ciag nazwa pisana cala z malych liter $alamakota.

Drugi przyklad wprowadza na poczatku nazwy zmiennej infromacje o typie zmiennej (o ile mnei pamiec nie myli, nazywa sie to notacja wegierska?).
i dla int
f dla float
s dla stringa
o dla object itd.

Mozna tez uzyc dluzszej formy typu $intCos, $strTekst, $floatZmienna


Komentarze, ktore sa jedna linia nie trzeba otaczac /* */ do tego jest // na poczatku linii.
Niby mala roznica ale ulatwia np. odkomentowywanie danych linii.


Polecam Ci poczytac takze o standardach kodowania.
http://wortal.php.pl/wortal/artykuly/pomys...dardy_kodowania
Dzieki temu wprowadzisz do swoich skryptow, pewien porzadek i przemyslana strukture.

Milej lektury (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 22:44