Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pętla for i mysql
Forum PHP.pl > Forum > PHP
olszam
mam skrypt w pętli for z bazą wyświetla się tak jak powinno ale czy można coś zrobić by to trochę szybciej się wyświetlało?


  1. <?php
  2. require 'polacz.php';
  3. $poczatek = 0; $koniec = 3; $koniec2 = 1;
  4. $ile2=mysql_query("SELECT *
  5. FROM zdjecia
  6. INNER JOIN zawodnik ON zdjecia.idzawodnik = zawodnik.idzawodnik
  7. INNER JOIN danezdjecia ON zdjecia.iddanezdjecia = danezdjecia.iddanezdjecia
  8. INNER JOIN danezawody ON danezdjecia.iddanezawody = danezawody.iddanezawody
  9. WHERE danezdjecia.nazwapliku LIKE 'podium/%'");
  10. $ile=mysql_num_rows($ile2);
  11. $ile=ceil($ile/$koniec);
  12.  
  13. for($koniec2;$koniec2<=$ile;$koniec2++){
  14. $poczateka = 2; $koniecb = 1; $koniec2c = 5;
  15. $ile2d=mysql_query("SELECT *
  16. FROM zdjecia
  17. INNER JOIN zawodnik ON zdjecia.idzawodnik = zawodnik.idzawodnik
  18. INNER JOIN danezdjecia ON zdjecia.iddanezdjecia = danezdjecia.iddanezdjecia
  19. INNER JOIN danezawody ON danezdjecia.iddanezawody = danezawody.iddanezawody
  20. WHERE danezdjecia.nazwapliku LIKE 'podium/%'");
  21. $ilee=mysql_num_rows($ile2d);
  22. $ilee=ceil($ilee/$koniecb);
  23. for($koniec2c;$koniec2c=$ilee;$koniec2c++){
  24.  
  25. $rezultatg = mysql_query("SELECT *
  26. FROM zdjecia
  27. INNER JOIN zawodnik ON zdjecia.idzawodnik = zawodnik.idzawodnik
  28. INNER JOIN danezdjecia ON zdjecia.iddanezdjecia = danezdjecia.iddanezdjecia
  29. INNER JOIN danezawody ON danezdjecia.iddanezawody = danezawody.iddanezawody
  30. WHERE danezdjecia.nazwapliku LIKE 'podium/%' LIMIT ".$poczateka.", ".$koniecb);
  31. while($wynikf = mysql_fetch_array($rezultatg)){
  32. echo $wynikf['nazwapliku'].'<br/>';
  33. }
  34. $rezultat = mysql_query("SELECT *
  35. FROM zdjecia
  36. INNER JOIN zawodnik ON zdjecia.idzawodnik = zawodnik.idzawodnik
  37. INNER JOIN danezdjecia ON zdjecia.iddanezdjecia = danezdjecia.iddanezdjecia
  38. INNER JOIN danezawody ON danezdjecia.iddanezawody = danezawody.iddanezawody
  39. WHERE danezdjecia.nazwapliku LIKE 'podium/%' LIMIT ".$poczatek.", ".$koniec);
  40. while($wynik = mysql_fetch_array($rezultat)){
  41. echo $wynik['imiezawodnik'].' '.$wynik['nazwiskozawodnik'].'<br/>';
  42.  
  43. }
  44.  
  45. echo '<br/><br/>';
  46. $poczatek = $koniec;
  47. $koniec += 3;
  48. $koniecb = $koniecb + 3;
  49. $poczateka = $poczateka + 3;
  50. }
  51. }
  52. ?>

po włączeniu skrytpu tak to wygląda

Cytat
podium/Ragna_the_Bloodedge_(Emblem,_Crest).png
Mike Powell
Larry Myricks
Ivan Pedroso


podium/Nu-13_(Emblem,_Crest).png
Ivan Pedroso
Mike Powell
Robert Emmijan
230005
Nie obraź się, ale dokładnie w taki sposób nie powinno się pisać kodu (w żadnym języku, nie tylko php).
A żeby działało szybciej to może nie rób selectów w pętli (i do tego zagnieżdzonej)? Z tego co widzę, to chyba da się to załatwić tylko jednym zapytaniem poza pętlą. No i jeśli coś liczysz, to nie rób select * from tabela i potem na tym mysql_num_rows tylko np select COUNT(id) from tabela. Poleciłbym też żebyś zapoznał się z rozszerzeniem PDO, ale tak w oderwaniu od powyższego i jak powyższe zacznie działać wink.gif.

EDIT:
Tak po namyśle stwierdzam, że naprawienie tego kodu byłoby całkiem dobrym zadaniem na test z programowania...
r4xz
Cytat(230005 @ 20.03.2012, 19:59:22 ) *
EDIT:
Tak po namyśle stwierdzam, że naprawienie tego kodu byłoby całkiem dobrym zadaniem na test z programowania...


tylko pojawia się jeden problem... "co autor miał na myśli?" smile.gif
olszam
kod by i może lepiej wyglądał gdyby nie baza którą mam zbudowaną bo profesor będzie się czepiał na zmiany w bazie, jemu trudno coś powiedzieć że ktoś może mieć racje a on się myli np jak mu pokazywałem że jak się wpisze tam daną odległość skoku i wybierze się operator porównania np. mniejsze. to sprawdza czy skok1>$wartosc or skok2>$wartosc or skok3>$wartosc i jeśli jedno z nich będzie prawdziwe to wyświetli dane które chce a on mi wysuwa z jakąś teorią że sprawdza to po najdłuższym skoku i weź tu się z kim takim dogadaj.

sorka że tak na forum się wyżalam ale już mnie korci by mu przywalić i zaczął słuchać co inni mówią a nie bujać we własnym świecie mad.gif
nospor
Cytat
kod by i może lepiej wyglądał gdyby nie baza którą mam zbudowaną bo profesor będzie się czepiał na zmiany w bazie, jemu trudno coś powiedzieć że ktoś może mieć racje
Ty przestań narzekać na profesora a przyjrzyj się sobie.... Nikt tu ci nie karze zmieniać bazy. Tu ci mówią o kodzie PHP, który jest totalnie beznadziejny. Za takie coś pała się należy z miejsca. I jeszcze te narzekania bezsensowne....

Jako przykład sam początek:
  1. $ile2=mysql_query("zapytanie....");
  2. $ile=mysql_num_rows($ile2);
  3. $ile=ceil($ile/$koniec);
  4.  
  5. for($koniec2;$koniec2<=$ile;$koniec2++){
  6. $poczateka = 2; $koniecb = 1; $koniec2c = 5;
  7. $ile2d=mysql_query("zapytanie.....");

Najpierw zliczasz liczbę rekordów z zapytania.
Potem to samo zapytanie wkładasz do pętli i w petli za każadym razem wyliczasz to, co już wyliczyłeś przed pętlą. Totalna bzdura.

Na dodatek te nieszczęsne mysql_num_rows o którym już pisano.
Brakuje ci elementarnej wiedzy więc się trochę doszkól a nie zwalasz winę na profesora.
cudny
biggrin.gif A jak Pan Profesor Ci zaliczy coś takiego to sami damy mu pałę wink.gif taki dżołk sytuacyjny wink.gif
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.