Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: moj pierwszy skrypt
Forum PHP.pl > Inne > Oceny
Home
Witam, php studiuje od ok 2 tygodni. Napisalem skrypt, ktory ma mi slozyc jako cos ala newsy. Czyli na jednej stronie 5 niepelnych artykolow a jak sie kliknie na [wiecej] to sie caly jeden dany art pojawia. Prosze o delikatna ocene.
  1. <?php
  2. if(ereg("^[0-9]", $id)){ //caly text
  3.  
  4. $query = "SELECT * FROM dzialy WHERE temat_id=".(int)$_GET['id'];
  5.  
  6. $result = mysql_query($query)
  7. or die(mysql_error());
  8.  
  9. if(mysql_num_rows($result) == 0) { 
  10. echo "404: Nie znaleziono strony";
  11. }
  12.  
  13. while($row = mysql_fetch_array($result)){
  14. echo($row["temat_text"]);
  15. }
  16. }
  17.  
  18.  
  19. if(ereg("^[0-9]", $strona)){ //kawalki teksow po 5 sztuk na strone
  20.  
  21. $limitstron = 5;
  22.  
  23. $wynik = (($strona * $limitstron) - $limitstron);
  24.  
  25.  
  26. $sql = mysql_query("SELECT * FROM dzialy LIMIT $wynik, $limitstron");
  27. $total_results = mysql_num_rows($sql);
  28.  
  29.  if(mysql_num_rows($sql) == 0){ 
  30. echo("404: Nie znaleziono strony"); 
  31. }
  32.  
  33. while($row = mysql_fetch_array($sql)){
  34.  
  35. echo $row['temat_text']."<br />"; //+kawalek kodu ktory skraca wyswietlanie teksu do np. 500 znakow
  36. //+link [wiecej...]+$id -odnosnik do calego teksu
  37. }
  38.  
  39.  
  40. $total_results = mysql_result(mysql_query("SELECT COUNT(*) as all FROM dzialy"),0);
  41.  
  42. //tutaj reszta kodu pokazujaca linki do nastepnych stron...
  43.  
  44. }else{
  45. $strona =1;
  46. }
  47. ?>


Nie pokazalem calego kodu bo jest to zbedne. Chodzi mi glownie o to czy jest to w miare poprawnie napisane, i czy z tym kodem moze mi ktos jakis syf wpisac w zmiennej i zaszkodzic w bazie danych.
dodam ze calosc mi bardzo dobrze dziala
mike
A nie wpadłeś na to, że oceny dajemy na forum ... Oceny?

Przenoszę z forum php.
Prph
Witam,

Jak na 2 tygodnie, to nie jest zle. Ogolnie calkiem poprawnie. Mam male uwagi do napisow:

  1. <?php
  2. echo("404: Nie znaleziono strony");
  3. ?>


Cudzyslow (") sluzy bardzo do podstawiania zmiennych, a nie generowania napisu. Lepiej w tym miejscu uzywac pojedynczego cudzyslowu ('):

  1. <?php
  2. $i = 5;
  3.  
  4. echo "Ola ma $i gruszek";
  5.  
  6. echo 'Ola ma 5 gruszek';
  7.  
  8. // Polaczenie zmiennej i napisu:
  9.  
  10. echo 'Ola ma ' . $i . ' gruszek';
  11. ?>


Chodzo przede wszystkim o szybkosc. W Twoim przypadku nie ma to znaczenia, ale generowanie duzej ilosci napisow przez podstawianie moze zwolnic cala aplikacje.

Kolejna rzecz - sprawdzanie czy $id jest liczba. Moze lepiej napisac funkcje:

  1. <?php
  2. function is_decimal($value)
  3. {
  4. return (strval(intval($value)) == $value);
  5. }
  6. ?>


Zawsze to mnie pisania w warunkach, a ponadto to wydaje sie lepsze.

Pozdrawiam, Adrian.
Home
wszystko rozumiem ale nie rozumiem ostatniej czesci wtojego skryptu. Wiem ze funckja to cos co mozna powtarzac np. w przyszlosc thats all-reszta to tylko domysly, moze bardziej szczegolowo?? dzieki
Prph
Rozumiem, kolega nie zna funkcji... No to polecam jakis kurs od php.

A w skrocie: uzywasz ich przeciez caly czas - mysql_zxy to sa przeciez funkcje. Nic nie stoi na przeszkodzie, zeby swoja napisac. Pozniej (korzystajac z mojego przykladu) mozesz warunki pisac nastepujaco:

  1. <?php
  2. if(is_digit($id)) { /* zrob cos */ }
  3. ?>


Po wiecej informacji - google winksmiley.jpg

Adrian.
Home
aha, proste sie to wydaje ale musze pocwiczyc...nic nie uczy jak wlasne bledy winksmiley.jpg wracajac do pierwotnego kodu...moze ktos mi cos namieszac w bazie? czy te warunki wystarcza?
Prph
Wystarcza, chciaz ja bylbym za moja funkcja is_digital.
Problem oczywiscie pojawi sie, jezeli zaczniesz uzywac pol tekstowych. Liczby maja ta zalete - jak poda sie cos innego, to int bedzie zawieral 0. W bazie nie ma autoinkrementowanych pol o wartosci 0, wiec co najwyzej - wywali blad.

W przypadku zapisu danych do bazy lub wyszukiwaniu czegos - uzywaj funkcji addslashes(). Jezeli nie jej znasz - polecam manual php.

Adrian.
Home
  1. <?php
  2. function calosc($id) {
  3. $query = "SELECT * FROM dzialy WHERE temat_id=".(int)$_GET['id'];
  4.  
  5. $result = mysql_query($query)
  6. or die(mysql_error());
  7.  
  8.  if(mysql_num_rows($result) == 0) { 
  9.  echo "404: Nie znaleziono strony";
  10. }
  11.  
  12.  while($row = mysql_fetch_array($result)){
  13.  echo($row["temat_text"]);
  14.  }
  15. }
  16.  
  17. function kawalektekstu($page) {
  18.  
  19.  $limitstron = 5;
  20.  
  21.  $wynik = (($strona * $limitstron) - $limitstron);
  22.  
  23.  
  24.  $sql = mysql_query("SELECT * FROM dzialy LIMIT $wynik, $limitstron");
  25.  $total_results = mysql_num_rows($sql);
  26.  
  27.  if(mysql_num_rows($sql) == 0){ 
  28.  echo("404: Nie znaleziono strony"); 
  29.  }
  30.  
  31.  while($row = mysql_fetch_array($sql)){
  32.  
  33.  echo $row['temat_text']."<br />"; //+kawalek kodu ktory skraca wyswietlanie teksu
  34.  //+link [wiecej...]+$id -odnosnik do calego teksu
  35. }
  36.  $total_results = mysql_result(mysql_query("SELECT COUNT(*) FROM dzialy"),0);
  37.  
  38.  //tutaj reszta kodu pokazujaca linki do nastepnych stron...
  39. }
  40.  
  41.  
  42.  
  43. if(ereg("^[0-9]", $id)){ // a moze is_numeric tu wstawic? tylko szkoda ze ujemne cyfry 
  44. //dopuszcza wiec wole surowo potraktowac i ograniczyc do takich 
  45. //liczb jakie mam w bazie danych (id)
  46.  
  47.  calosc($id);
  48. }
  49.  
  50.  
  51. if(ereg("^[0-9]", $strona)){
  52.  
  53. kawalektekstu($page);
  54.  
  55. }
  56. ?>


Pierwsze zapoznanie sie z funkcja smile.gif Jak narazie to jedyny plus to taki ze ladniej wszystko wyglada w kodzie . No ale zawsze to plus i dziala tak ja pierwotny kod- czyli dobrze. Potem moge np zapisac do jednego pliku te funkcje i tylko np. includowac do plikow gdzie maja zostac wykorzystane rolleyes.gif ale i tak bardzo niewiele o tym wiem blinksmiley.gif
Prph
Najwiekszy plus funkcji to mozliwosc wykorzystania tego samego kodu w wielu miejscach. Jezeli chcesz uzywac funkcji w wielu plikach, to mozesz zapisac je w osobnym pliku no i dolaczac (za pomoca require/require_once).

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