Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]problem przy pobieraniu danych z bazy
Forum PHP.pl > Forum > Przedszkole
kojot91
Wiele problemów udało mi się samemu rozwiacać przy pomocy google'ów, ale tego nie :/Przejde do rzeczy, mam kod w stylu:

  1. <?php
  2. $query1 = "SELECT * FROM `xxx` WHERE `data` = '".$x."'
  3. ";
  4. $result1 = mysql_query($query1); 
  5. $num_results1 = mysql_num_rows($result1); 
  6.  
  7. for ($i=0; $i < $num_results1; $i++) {
  8.   
  9. $query = "SELECT * FROM `xxx` WHERE `data` = '".$x."'";
  10.  
  11. $result = mysql_query($query);  
  12. $row = mysql_fetch_array($result);
  13. $cos1 = stripslashes($row["cos1"]);
  14. $cos2 = stripslashes($row["cos2"]);
  15.  
  16. $query2 = "SELECT * FROM `x` WHERE `xx` = '".$cos1."'";
  17.  
  18. $result2 = mysql_query($query2);  
  19. $row2 = mysql_fetch_array($result2);
  20. $dana = stripslashes($row2["dana"]);
  21. // ...  
  22.  
  23. $query3 = "SELECT * FROM `x` WHERE `xx` = '".$cos2."'";
  24.  
  25. $result3 = mysql_query($query3);  
  26. $row3 = mysql_fetch_array($result3);
  27. $dana2 = stripslashes($row3["dana"]);
  28. // ...  
  29.  
  30.  
  31.  
  32. // ... to co tu było, jest nie jest potrzebne  
  33.  
  34.  
  35. }
  36. ?>


i chciałbym aby pętla pobierała zmienne cos1 i cos2 z nastepnych rekordów... teraz wykonuje to co ma wykonywać ale tylko dla pierwszej pary tych zmiennych, pobiera z pierwszego rekordu z tabeli który zgadza sie z warunkiem i konczy swoją prace na tych samych danych, jesli nie bedziecie mieli pomyslu albo jak cos skopalem to pozostaje mi rozpisanie pętli (normalnie powinna leciec minimum 200 razy... a tak bym musial dowalic jeszcze jeden warunek przy zapytaniu do bazy zrobic 20 (pewnie plików bo jesli dalbym do 1 to duzo KB wyjdzie) razy po 10 kodu z petli przy innych nazwach query result row chociaz teraz jak tak mysle to znów miałbym pewnie tam gdzies problem... musialbym w warunku dodać jeszcze id...(niechce narazie o tym myslec... ) ehh i to wszystko jeszcze ma lecieć do crona... mam nadzieje, że ktoś mi pomoże
rzymek01
jakiś dziwny ten kod w ogole tongue.gif
pełno zapytań, nie wiadomo o co chodzi, i nieoptymalność tych zapytań

w pierwszym zapytaniu zrób sobie count i nie bedziesz musiał uzywac już funkcji mysql_num_rows, która jest nieoptymalna,

jesli chodzi o zapamiętanie zmiennych $cos1 i $cos2, to zrób z nich tablicę (przed pętlą zadekraluj $cos1 = array(); i tak samo z dwójką)
a potem w kodzie $cos1[] = ............; itd.
kojot91
tyle zapytan ponieważ to ma być skrypt który wybiera z bazy danych "terminarz" rekordy równe teraźniejszej dacie (bo gdy uruchomie cronem, aby pobrał dane do odpowiednich meczy) potem z danych pobranych z terminarza (rekord = mecz a w nim dane gospodarz i gosc) w tych danych znajdują sie ID drużyn które posługują do wybrania z tabel odpowiednich danych dotyczących tych druzyn

zastosowalem count zamiast mysql_num_rows w postaci:



  1. <?php
  2. $dzisiaj= date("Y-m-d, H");
  3. echo $dzisiaj;
  4.  
  5. $query1 = "SELECT * FROM `terminarz` WHERE `data` = '".$dzisiaj."'
  6. ";
  7. $result1 = mysql_query($query1); 
  8. $row1 = mysql_fetch_array($result1); 
  9. $num_results1 = count($row1); 
  10.  
  11. // zamiast row1 wstawilem dla pewnosci result1 ale wtedy wywala ze jest 1 rekord (czytalem o count i zlicza elementy tablicy to ztego wnioskuje ze chodzi o r
    ow1)
  12.  
  13.  
  14. echo $num_results1; // aby sprawdzić czy dobrze liczy rekordy niestety wywala 10 a jest 2...
  15. ?>


ale nie o to mi chodzi, zastosowalem tablice jak proponowałeś oto co mi wyszlo(zacytuje oryginał):


  1. <?php
  2. $dzisiaj= date("Y-m-d, H");
  3.  
  4. $query1 = "SELECT * FROM `terminarz` WHERE `data` = '".$dzisiaj."'
  5. ";
  6. $result1 = mysql_query($query1); 
  7. $row1 = mysql_fetch_array($result1);
  8. $num_results1 = mysql_num_rows($result1);  
  9. echo $num_results1;
  10.  
  11. $gospodarz = array();
  12. $gosc = array();
  13.  
  14. for ($i=0; $i < $num_results1; $i++) {
  15.   
  16. $query = "SELECT * FROM `terminarz` WHERE `data` = '".$dzisiaj."'";
  17.  
  18. $result = mysql_query($query);  
  19. $row = mysql_fetch_array($result);
  20. $liga_id = stripslashes($row["liga_id"]);
  21. $gospodarz[] = stripslashes($row["gospodarz"]);
  22. $gosc[] = stripslashes($row["gosc"]);
  23.  
  24. echo $gosc["".$i.""]." ".$gospodarz["".$i.""]; // sprawdzam czy zmienia dane - niestety pozostają takie jak wczesniej dziesiec razy wywala te same  dane a ma 
    wyswietlic 10 razy inne...  
  25.  
  26. $query2 = "SELECT * FROM `taktyka` WHERE `kluby_id` = '".$gospodarz["".$i.""]."'";
  27.  
  28. $result2 = mysql_query($query2);  
  29. $row2 = mysql_fetch_array($result2);
  30. $taktyka = stripslashes($row2["taktyka"]);  
  31. $tempo = stripslashes($row2["tempo"]);  
  32. $graprzyprzeciwniku = stripslashes($row2["graprzyprzeciwniku"]);  
  33. $liniaobrony = stripslashes($row2["liniaobrony"]);  
  34. $odbior = stripslashes($row2["odbior"]);  
  35. $krycie = stripslashes($row2["krycie"]);  
  36. $kontrataki = stripslashes($row2["kontrataki"]);  
  37.  
  38. $query3 = "SELECT * FROM `taktyka` WHERE `kluby_id` = '".$gosc["".$i.""]."'";
  39.  
  40. $result3 = mysql_query($query3);  
  41. $row3 = mysql_fetch_array($result3);
  42. $taktyka2 = stripslashes($row3["taktyka"]);  
  43. $tempo2 = stripslashes($row3["tempo"]);  
  44. $graprzyprzeciwniku2 = stripslashes($row3["graprzyprzeciwniku"]);  
  45. $liniaobrony2 = stripslashes($row3["liniaobrony"]);  
  46. $odbior2 = stripslashes($row3["odbior"]);  
  47. $krycie2 = stripslashes($row3["krycie"]);  
  48. $kontrataki2 = stripslashes($row3["kontrataki"]);  
  49.  
  50. // tutaj znajdują się zapytania do innych tabel z wykorzystaniem $gospodarz i $gos
    c, ale nie ma sesu tego wlejać - tylko zmniejszylo by czytelnosc
  51.  
  52. }
  53. ?>





myśle, że o takie zastosowanie Ci chodziło, ale nie działa :/ 
Kicok
mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual - szczególną uwagę zwracasz na pętlę while
kojot91
ok dzięki działa jak trzeba smile.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.