Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] - Prosba o wytlumaczenie działania prostego kodu
Forum PHP.pl > Forum > Przedszkole
TomaszRag
Witam na forum smile.gif,
To moj pierwszy post i temat. W kazdym razie przejdzmy odrazu do rzeczy.
Wczoraj zaczelem moja przygode z php+mysql, czytalem wiele kursow, sa one napisane dosc przystepnie, lecz nie moge pojąć jednego faktu. Czemu na kursach nie tlumacza jak działa dany kod bardzo dokładnie.
Zwracam sie z prosba o wytlumaczenie ponizszego kodu, na zasadzie, ktora zmienna przyjmuje jaka wartosc, jaka wartosc jest zwracana, co robi konkretnie dane polecenie itd.

  1. <?php
  2. $query = "SELECT * FROM osoby";
  3. $result = mysql_query($query)
  4. or die ("Query failed !");
  5.  
  6. while ($row = mysql_fetch_array($result)) {
  7. echo "<TR><TD>" . $row["imie"] .
  8.  "</TD> $nbsp <TD>" . $row["nazwisko"] .
  9.  "</TD></TR>n";
  10.  
  11. }
  12.  
  13. ?>



To jest nie kompletny skrypt na wyswietlenie wartosci przypisanych. Komendy takie jak polaczenie z baza czy serwerem, albo zamkniecie rozumiem w 100% zasade dzialania, wiec nie potrzebuje objasnienia.


-------------------------
ten kod lepiej wygląda
jak używamy BBCode
do PHP a nie HTML
~Cienki1980
arecki
Cytat(TomaszRag @ 11.03.2007, 11:54:40 ) *
  1. $query = "SELECT * FROM osoby";
  2. $result = mysql_query($query)
  3. or die ("Query failed !");
  4.  
  5. while ($row = mysql_fetch_array($result)) {
  6. echo "<TR><TD>" . $row["imie"] .
  7. "</TD> $nbsp <TD>" . $row["nazwisko"] .
  8. "</TD></TR>\n";
  9.  
  10. }
  11.  
  12. mysql_free_result($result);


Jako że To pierwszy raz to przetłumaczę ale na przyszłość to tak jak kolega polecam manual i komentarze do funkcji w manualu. Często z gotowymi odpowiedziami lub rozwiązaniami problemu.

Oto tłumaczenie smile.gif

  1. <?php
  2. $zmienna_z_zapytaniem_do_bazy = 'SELECT * FROM osoby';
  3. $wynik_zapytania_sql = wyslanie_zapytania_do_bazy_i_otrzymanie_wynikow($zmienna_z_zapytaniem_do_bazy)
  4. lub zakoncz_skrypt_i_wyswietl_blad('blad w wykonaniu zapytania');
  5.  
  6. dopoki($wiersz_wynikow = pobierz_wiersz_wynikow_i_zwroc_jako_tablice_asocjacyjna($wynik_zapytania_sql) {
  7.  wyswietl '<tr><td>'.$wiersz_wynikow['nazwa_pola_z_bazy'].'</td></tr>';
  8. }
  9.  
  10. zwolnij_wyniki_zapytania_sql($wynik_zapytania_sql);
  11. ?>


Może być ? smile.gif
TomaszRag
Bardzo wam dziękuje, właśnie o takie coś mi chodziło.
Tłumaczenie takie jak oczekiwałem, a wlaśnie nie mogłem znaleźć manuala. Znalazłem jakiś w PDF-ie, ale to nie to co chciałem.

Musze jeszce pare razy to przeanalizować i napewno się uda zrozumieć w pełni.

Nieznam za dobrze PHP, ale mozna zrozumieć, bo troche programowałem w C++.

Jezeli jeszcze narzuci mi sie jakas kwestia to napisze w tym topicu, prosze jeszcze go nie zamykac.

Pozdrawiam, Tomasz.
mike
Cytat(TomaszRag @ 11.03.2007, 13:48:44 ) *
(...) prosze jeszcze go nie zamykac.
Jesteś tu nowy więc tylko wtrącę.
Nie lubimy egoistów. Wątki są dla wszystkich nie dla Ciebie. Nie mów nigdy nic w stylu "już można zamknąć", "problem rozwiązany, wątek do zamknięcia", ...
To jest szczyt egoizmu a z takim nastawianiem możesz trzymać się z dala od forum gdzie kluczem jest społeczność.

Witamy na forum.php.pl
TomaszRag
Napisałem, tak dla "czystego" porządku. Spotkałem sie na forach, gdzie wątek po rozwiązaniu jest automatcznie zamkany przez moda i nie ma mozliwosci dopisania niczego. Po co miałbym wtedy robić jeszcze jeden temat i zaśmiecać forum?

Mysle logicznie.
Cytat(mike_mech @ 11.03.2007, 13:53:40 ) *
Wątki są dla wszystkich nie dla Ciebie.

Wątki są dla wszystkich, więc również dla mnie.

Jeszce lepsze zrozumienie tego skryptu dalo mi jak metoda prob i błędów jak "wywalilem" petle WHILE:

  1. <?php
  2. $row = mysql_fetch_array($result);
  3. echo "" . $row["imie"] . "&nbsp" . $row["nazwisko"] . "";
  4. ?>


Teraz juz dokładnie wiem na jakiej zasadzie to działa z pętla i bez. smile.gif

Tak na marginesie do czego są te kropki między cudzyslowami?
Nie udalo mi sie skrocic tego w ten sposob:

  1. <?php
  2. echo "$row["imie"]" . "$row["nazwisko"]";
  3. ?>


ani:

  1. <?php
  2. echo ("$row["imie"]" . "$row["nazwisko"]");
  3. ?>


Czemu tego sie tak nieda zapisac?
erix
Bo echo" title="Zobacz w manualu PHP" target="_manual, to konstrukcja języka, a nie funkcja.
Tak nawiasem, to po co obejmujesz wyłącznie zmienne w cudzysłowy? Tylko spowalniasz parsowanie skryptu.
TomaszRag
Dzieki za uwage, a nauczył Mnie tak kurs php + mysql, no ale wiadomo, że człowiek uczy się na błędach.

Choc w sumie, watpie czy to ma jakies wieksze znaczenie, wkoncu najwieksze obciazenie dla procka stawiaja zapytania wysłane do bazy SQL, a i tak głównie spowolnienia są spowodowane komunikacja serwer + klient.
erix
Cytat
a nauczył Mnie tak kurs php + mysql

Zmień kurs. tongue.gif

Każdy skrypt musi być przeparsowany - wtedy wszystkie dane od użytkownika już są przesłane do serwera. User sobie grzecznie (tongue.gif) czeka na wygenerowanie strony.

Cytat
Choc w sumie, watpie czy to ma jakies wieksze znaczenie

Jak to mawiają, grosz do grosza, a będzie kokosza.
TomaszRag
Tak, ale ja mialem na mysli, ze czas generowania strony, nie ma wiekszego znaczenia przy czasie przesyłu danych.

To tak jak masa elektronu do neutronu, ma tak niewielka, ze sie nawet nie liczy. Za duzy stosunek. No troche maly offtopic.gif zawital.

W kadzym razie przy wiekszych serwisach, slabym serwerze i duzej licbie uzytkownikow, lepiej rozplanowac tak kod, aby parsowanie trwalo jak najkrocej. smile.gif

Kurs, nie zmienie go, bo jest to kurs praktyczny i sa dosc ciekawe przykłady. Nawyki złe i dobre zawsze mozna zmienic, wiec jakos dam rade.

Jeszcze tylko niewiem jak definiowac mam polecenia do mysql-a.

  1. <?php
  2. $choose_db = "USE mojabaza";
  3. $query = mysql_query ($choose_db);
  4. ?>


lub

  1. <?php
  2. $choose_db = mysql_query (USE mojabaza);
  3. ?>

a, moze tak?

  1. <?php
  2. $choose_db = mysql_select_db (mojabaza);
  3. ?>
erix
Cytat
Tak, ale ja mialem na mysli, ze czas generowania strony, nie ma wiekszego znaczenia przy czasie przesyłu danych.

Coś musi zostać wysłane. Przecież nie zaczniesz wysyłania przed generowaniem. :|

Cytat
Jeszcze tylko niewiem jak definiowac mam polecenia do mysql-a.

Zawsze funkcje wbudowane w PHP będą lepsze od klepania wszystkiego od nowa (w tym wypadku, mysql_select_db" title="Zobacz w manualu PHP" target="_manual.

PS. Pamiętaj, że
  1. <?php
  2. $choose_db = mysql_query (USE mojabaza);
  3. ?>

nie zadziała, bo nie ma cudzysłowów. smile.gif
TomaszRag
Cytat(erix @ 11.03.2007, 23:14:17 ) *
Coś musi zostać wysłane. Przecież nie zaczniesz wysyłania przed generowaniem. :|

My sie nadal nie rozumiemy. smile.gif
Siedzimy Sobie przed kompem klikamy na jakąś strone w php. Ile czekamy?

czas_oczekiwania = x + y + z

x - czas przesyłu zapytania od nas do serwera
y - czas generowania strony (zapytania do bazy etc.)
z - czas przesyłu odpowiedzi od serwera do nas

Gdzie "y" to wartości rzędu setnych i tysiącznych sekundy, a "x" i "z" to juz zalezy od tego przez ile routerow przechodzi połączenie i jaką mamy prędkość tego połączenia.

Czy teraz Mnie zrozumiales?
Tak, masz racje cos musi byc wysłane, ale czas generowania stron jest wartościa znikoma przy czasie przesyłu danych.

EDIT:
Tak, zapomniałem o cudzysłowach. smile.gif
Cienki1980
Cytat(TomaszRag @ 12.03.2007, 14:49:59 ) *
My sie nadal nie rozumiemy. smile.gif
Siedzimy Sobie przed kompem klikamy na jakąś strone w php. Ile czekamy?

czas_oczekiwania = x + y + z

x - czas przesyłu zapytania od nas do serwera
y - czas generowania strony (zapytania do bazy etc.)
z - czas przesyłu odpowiedzi od serwera do nas

Gdzie "y" to wartości rzędu setnych i tysiącznych sekundy, a "x" i "z" to juz zalezy od tego przez ile routerow przechodzi połączenie i jaką mamy prędkość tego połączenia.

Czy teraz Mnie zrozumiales?
Tak, masz racje cos musi byc wysłane, ale czas generowania stron jest wartościa znikoma przy czasie przsyłu danych.

Zrobię mały OT
A co powiesz na taki przypadek. Pracuje na localhoscie ... tworze portal, cały czas na lokalu ( czas przysyłania zapytania i odpowiedzi są znikome w tym przypadku .. nieprawdaż ).

W takim przypadku liczy się czas generowania strony. Im szybciej mi się wygeneruje tym lepiej. Więc taki mam cel. Jakbym tego nie brał pod uwagę, bo zakładałbym, że czas wysyłania zapytania i odpowiedzi i tak będzie większy .. to zrobię tak stronę która będzie mi się generowała 3 minuty.... a to chyba nie o to chodzi.
mike
Cytat(TomaszRag @ 12.03.2007, 14:49:59 ) *
Siedzimy Sobie przed kompem klikamy na jakąś strone w php. Ile czekamy?

czas_oczekiwania = x + y + z

x - czas przesyłu zapytania od nas do serwera
y - czas generowania strony (zapytania do bazy etc.)
z - czas przesyłu odpowiedzi od serwera do nas

Gdzie "y" to wartości rzędu setnych i tysiącznych sekundy, a "x" i "z" to juz zalezy od tego przez ile routerow przechodzi połączenie i jaką mamy prędkość tego połączenia.
Wszystko fajnie tylko, że to nieprawda tongue.gif
Najwidoczniej masz dość niewielkie doświadczenie.

Skrypty, to poza prostymi operacjami, często operacje na bazach danych. Nie rzadko zdarza się, że śmigają jakieś transakcje.
Bardzo często przecież operujemy na grafikach generowanych w PHP. Co powiesz na pdf'y?
Obsługa uploadu czy operacje na plikach.

A teraz do tego dołóż to, że stronę może przeglądać w danej chwili bardzo wiele osób. Co generuje bardzo duże obciążenie procesora i skryptu i w rezultacie spadek jego wydajności.

Najprościej mówiąc: bardzo sie mylisz, dlatego, że bagatelizujesz bardzo wiele czynników. Bądź po prostu ich nie znasz tongue.gif
Czas generowania strony nie jest tak mało ważny jak Ci się wydaje.
TomaszRag
Cytat(TomaszRag @ 11.03.2007, 22:33:00 ) *
Choc w sumie, watpie czy to ma jakies wieksze znaczenie, wkoncu najwieksze obciazenie dla procka stawiaja zapytania wysłane do bazy SQL.


Dokładnie. Nie wierze w to, że postawienie w jednym miejscu cudzysłowów spowolni nawet duży serwis, z duża ilością userów. Spowolnienie będzie napewno, ale nie zauważalne.

Cytat(TomaszRag @ 11.03.2007, 23:00:10 ) *
W kadzym razie przy wiekszych serwisach, slabym serwerze i duzej liczbie uzytkownikow, lepiej rozplanowac tak kod, aby parsowanie trwalo jak najkrocej.


Prosze czytac dokładnie. Przecież napisałem co sądze i jak najlepiej postępować, a teraz mnie negujecie.

Cytat(Cienki1980 @ 12.03.2007, 14:54:10 ) *
Zrobię mały OT
A co powiesz na taki przypadek. Pracuje na localhoscie ... tworze portal, cały czas na lokalu ( czas przysyłania zapytania i odpowiedzi są znikome w tym przypadku .. nieprawdaż ).
W takim przypadku liczy się czas generowania strony. Im szybciej mi się wygeneruje tym lepiej. Więc taki mam cel. Jakbym tego nie brał pod uwagę, bo zakładałbym, że czas wysyłania zapytania i odpowiedzi i tak będzie większy .. to zrobię tak stronę która będzie mi się generowała 3 minuty.... a to chyba nie o to chodzi.


Trudno nazwać to mały OT, może jakiś kontratak?
Jak ty zrobisz taką strone, która będzie Ci się generowała 3 minuty, to ja złoże Sobie serwer na miare komptera do obliczeń trzęsienia ziemii, z którego korzystają nasi wschodni dalecy znajomi.
I co ty na to?
Nawet pracując na localhoście masz opóźnienia tzw. delay. (Przecież dane przechodza przez pamięć i nie tylko...) Czyli krótko mówiąc czas na reakcje serwera od wysłania do niego zapytania. Jeżeli my tu rozmawiamy o prostym zastosowaniu cudzysłowów (więcej niz powinno być) to niewiem czy na gołe oko zauważysz, że strona wczytała się o 0,000001 sec wolniej niż powinna.

Cytat(mike_mech @ 12.03.2007, 14:54:10 ) *
Wszystko fajnie tylko, że to nieprawda
Najwidoczniej masz dość niewielkie doświadczenie.
Skrypty, to poza prostymi operacjami, często operacje na bazach danych. Nie rzadko zdarza się, że śmigają jakieś transakcje.
Bardzo często przecież operujemy na grafikach generowanych w PHP. Co powiesz na pdf'y?
Obsługa uploadu czy operacje na plikach.


Moc offtop-u jest wielka, pozatym czytacie wogóle co ja piszę i inni? Przecież sprawa chodzi o zwykłe zastosowanie cudzysłowów (za dużo), a nie generowanie pdf-ów.
Nie mów mi, że moje równanie x+y+z nie jest prawdziwe?? Hehe, ty masz neta bezpośrednio z routera brzegowego nie? haha.gif
"y" to wartości rzędu setnych i tysiącznych sekundy i NADAL SIE Z TYM ZGADZAM. Popatrzcie na większośc serwisów gdzie jest napisane ile czasu generuje się strona. I co widzicie?
Czas y jest zależny od kodu, jak i od maszyny fizycznej (serwera), która parsuje dany kod. Jeżeli y byłby rzędu 5 sec, to nie znak, że kod źle napisany (nie zawsze), tylko, że trzeba serwer lepszy kupić i tyle.
Podawanie przykładów, że napisze strone, tak, by wczytywała się 2 min, nie jest na miejscu, ponieważ takich działań nie podejmuje się w praktyce. Próbujecie się doszukać wyjątków reguły czy jak?

Może doświadczenie w PHP + MySQL mam niewielkie to fakt, beginner jestem w tych dziedzinach.
W każdym razie na serwerach znam się dość dobrze, jestem posiadaczem sieci osiedlowej 100 osób i troche znam życie TCP/IP
erix
Cytat
Może doświadczenie w PHP + MySQL mam niewielkie to fakt, beginner jestem w tych dziedzinach.
W każdym razie na serwerach znam się dość dobrze, jestem posiadaczem sieci osiedlowej 100 osób i troche znam życie TCP/IP

Bez urazy, ale co to ma do tematu? Przecież routowanie neta, a serwowanie stron, to chyba trochę inna (fakt, powiązana) para kaloszy.

Cytat
Czas y jest zależny od kodu, jak i od maszyny fizycznej (serwera), która parsuje dany kod.

Owszem, od kodu. Zrób sobie jednego prega na większą porcję danych (choćby 100KBx~10żądań/sek) i wtedy zobaczysz.

Cytat
Jeżeli y byłby rzędu 5 sec, to nie znak, że kod źle napisany (nie zawsze), tylko, że trzeba serwer lepszy kupić i tyle.

I to jest właśnie typowe, błędne podejście. Zamiast optymalizować kod, to kupić nową maszynę...
TomaszRag
Ja mam swoje racje, wy macie swoje.
Optymalizowac kodu nieda sie w nieskonczonosc.
Pozatym: offtopic.gif

Ta kłótnia nie prowadzi do niczego innego jak do zbędnej pracy serwera. tongue.gif
Tarcil
Witam!

Cóż... może i nie można w nieskończoność, ale dobrym zwyczajem jest optymalizowanie strony na tyle, na ile jest to możliwe.

Jest jeszcze kwestia użytkownika jako osoby. Strony piszemy zawsze dla kogoś, nie dla siebie. Ktoś z nich ma korzystać. Miłe dla użytkownika jest, kiedy twórca dba o to, żeby strona działała szybko. Twoje podejście jest czystym lekceważeniem wszystkich, którzy na Twoją stronę zawitają. Po prostu - trzeba być miłym dla ludzi. Ale nie po to piszę tego posta, żeby wsadzać kij w mrowisko, ale po to, żeby zadać pytanie.

Czy zna ktoś dobre artykuły dotyczące optymalizacji kodu php? NIe jestem w tym dobry, a chcę pisać maksymalnie zopytamilizowane skrypty. Może ktoś pomóc?


Pozdrawiam!
TomaszRag
OMG, sa granice optymalizacji kodu.
Nie da sie robic tego w nieskonczonosc.

Moje podejscie jest lekceważące?
Chyba tak jak Ty i Wy nie chce, zeby uzytkownicy mojej strony dlugo czekali, wiec niewiem w czym widzisz problem offtopic.gif

Co do optymalizacji to ja niestety nie pomoge, bo sie na tym nieznam. smile.gif
erix
Owszem, nie da się, ale my tu wałkujemy co innego: trzeba W OGÓLE optymalizować.
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.