Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]problem przy pobieraniu danych z bazy
kojot91
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.08.2008

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
rzymek01
post
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


jakiś dziwny ten kod w ogole (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
kojot91
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.08.2008

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


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 :/ 
Go to the top of the page
+Quote Post
Kicok
post
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual - szczególną uwagę zwracasz na pętlę while
Go to the top of the page
+Quote Post
kojot91
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 20.08.2008

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


ok dzięki działa jak trzeba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 23.08.2025 - 03:51