Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Problem z zapytaniem
Ulysess
post
Post #1





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


dzień dobry. Potrzebuje napisać skypt rekordy..
tzn mam ranking dzienny (4 kategorie) i chciałbym zrobić dodatkowo rekordy w których będą przechowywane 10 najlepszych rekordów z każdej kategorii więc chciałem zrobić na zasadzie że o godzinie 00:00 będzie sie wykonywać zadanie które będzie pobierać z tabeli rekordy 10(najsłabszy wynik) a następnie z tabeli ranking dzienny pobierane rekordy które są większe bądz równe temu z rekordów a na końcu kasowane w rekordach są te które są hmm słabsze niż top10

problem juz jest na samym początku O.o..

  1. for($w = 0; $l <= 1;++$w)
  2. {
  3.  
  4. if($w == 0){$type = 1;}
  5. if($w == 1){$type = 2;}
  6.  
  7. $zapytanie['rekordy'] = "SELECT `result` FROM `records` WHERE `type`='".mysql_real_escape_string($type)."' LIMIT 10,1";
  8. $wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());
  9. $rekordy = mysql_fetch_assoc($wykonano_zapytanie['rekordy']);
  10.  
  11. }


po uruchomieniu tego pliku po xx sekundach wywala:
Fatal error: Maximum execution time of 30 seconds exceeded in E:\VertrigoServ\www\p\test.php on line 24
24 linia to -> "$wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());"
w czym tkwi problem (IMG:style_emoticons/default/questionmark.gif) dodam tylko że obydwie tabele na tą chwile są puste

Ten post edytował Ulysess 8.10.2010, 09:54:16
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




for($w = 0; $l <= 1;++$w)
Przeciez ta petla nigdy się nie konczy.....
Go to the top of the page
+Quote Post
poli25
post
Post #3





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

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


czemu w petli masz 2 zmienne?
$w=0; $l<=1; (IMG:style_emoticons/default/questionmark.gif)
poza tym powinno wygldac
to tak ($w=0; $w<=1; $w++)

Ten post edytował poli25 8.10.2010, 10:26:39
Go to the top of the page
+Quote Post
Ulysess
post
Post #4





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


fakt niedopatrzenie........

hmm napotkałem się na kolejny problem..

  1. ffor($w = 0; $w <= 1;++$w)
  2. {
  3.  
  4. if($w == 0){$type = 1;}
  5. if($w == 1){$type = 2;}
  6.  
  7. $zapytanie['rekordy'] = "SELECT `result` FROM `records` WHERE `type`='".mysql_real_escape_string($type)."' LIMIT 10,1";
  8. $wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());
  9. $rekordy = mysql_fetch_assoc($wykonano_zapytanie['rekordy']);
  10.  
  11. echo $rekordy['result'],'<br>';
  12.  
  13. $zapytanie['nw'] = "SELECT `id_char`,`".$nazwa_pola[$w]."` FROM `acc_ranking` WHERE `".$nazwa_pola[$w]."` >= '".$rekordy['result']."'";
  14. $wykonano_zapytanie['nw'] = mysql_query($zapytanie['nw']) or die(mysql_error());
  15.  
  16. while($nw = mysql_fetch_assoc($wykonano_zapytanie['nw']))
  17. {
  18. echo $nw['id_char'],' / ',$nw[$nazwa_pola[$w]],'<br>';
  19. }
  20.  
  21.  
  22. }
hmm potrzebuje jeszcze napisać zapytanie które będzie kasować z tabeli records dane które są po za 'top 10' (z 1 i 2 kategorii)

Ten post edytował Ulysess 8.10.2010, 11:20:23
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
e nie działa dlatego że nie ma w tabeli records jeszcze żadnych danych więc pytanie jest jak zrobić że w przypadku gdy nie ma jeszcze rekordów zmienna miała wartość
No to jak nie ma to ją ustaw.
Go to the top of the page
+Quote Post
Ulysess
post
Post #6





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


z tym jest wszystko ok , po prostu z 2 zapytanie nie potrzebnie dawałem LIMIT .. (edytowałem post)

hmm mam jeszcze problem z tym O.o...

  1. $zapytanie['rekordy'] = "SELECT `result` FROM `records` WHERE `type`='".mysql_real_escape_string($type)."' ORDER by `result` LIMIT 10,1";
  2. $wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());
  3. $rekordy = mysql_fetch_assoc($wykonano_zapytanie['rekordy']);
  4.  
  5. echo $rekordy['result'],'<br>';


celem tego zapytania jest pobranie 10 wyniku = result dla type 1 oraz 2

w tabeli są rekordy a i tak zwraca wartość 0 O.o.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to moze dla 10-tego wyniki wartosc pola RESULT wynosi 0 (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Ulysess
post
Post #8





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


(IMG:http://img409.imageshack.us/img409/5116/47150257.jpg)

Uploaded with ImageShack.us

chyba ne za bardzo.. ;p
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. ini_set('display_errors','1');
  2. $zapytanie['rekordy'] = "SELECT `result` FROM `records` WHERE `type`='".mysql_real_escape_string($type)."' ORDER by `result` LIMIT 10,1";
  3. $wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());
  4. var_dump($wykonano_zapytanie['rekordy']);
  5. $rekordy = mysql_fetch_assoc($wykonano_zapytanie['rekordy']);
  6. var_dump($rekordy);
  7.  

Jak teraz? (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Ulysess
post
Post #10





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


taki jest efekt -> resource(12) of type (mysql result) array(1) { ["result"]=> string(1) "0" } resource(14) of type (mysql result) array(1) { ["result"]=> string(1) "0" }

Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




skoro baza zwraca ci ze masz w tym rekordzie wartosc 0 to tak jest. Baza sama sobie nie wymysla danych. Pewnie z PMA patrzyles na zle dane.

Ostatnio mialem klienta co w PMA patrzyl na inną baze a w skrypcie łączyl się do zupelnie innej. A potem plakal ze mu sie dane nie zgadzają
Go to the top of the page
+Quote Post
Ulysess
post
Post #12





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


coś jest nie halo..

skrypt wygląda tak:
  1. for($w = 0; $w <= 1;++$w)
  2. {
  3. if($w == 0){$type = 1;}
  4. if($w == 1){$type = 2;}
  5.  
  6. $zapytanie['rekordy'] = "SELECT `score` FROM `records` WHERE `type`='".mysql_real_escape_string($type)."' ORDER BY `score` LIMIT 10,1";
  7. $wykonano_zapytanie['rekordy'] = mysql_query($zapytanie['rekordy']) or die(mysql_error());
  8. $rekordy = mysql_fetch_assoc($wykonano_zapytanie['rekordy']);
  9.  
  10. echo $rekordy['score'];
  11. echo '<br>';
  12.  
  13. $zapytanie['nw'] = "SELECT `id_char`,`".$nazwa_pola[$w]."` FROM `acc_ranking` WHERE `".$nazwa_pola[$w]."` >= '".$rekordy['score']."'";
  14. $wykonano_zapytanie['nw'] = mysql_query($zapytanie['nw']) or die(mysql_error());
  15.  
  16. while($nw = mysql_fetch_assoc($wykonano_zapytanie['nw']))
  17. {
  18. //echo $nw['id_char'],' / ',$nw[$nazwa_pola[$w]],'<br>';
  19. //$zapytanie['add'] = "INSERT INTO `records` (`type`,`score`,`id_char`,`date`) VALUES ('".mysql_real_escape_string($type)."','".mysql_real_escape_string($nw[$nazwa_pola[$w]])."','".mysql_real_escape_string($nw['id_char'])."','".time()."')";
  20. //$wykonano_zapytanie['add'] = mysql_query($zapytanie['add']);
  21. }
  22.  
  23.  
  24. }

w pętli dodawanie wył bo dodaje te same rekordy ..

cały czas jest problem z tym 1 zapytaniem i na pewno z dobrą tabelą się łączy / dobrze patrze. mam 100% pewność dlatego że INSERT dodaje do tej tabeli.. problem jest z tym 1 zapytaniem O.o....

hmm błąd polegał w złym myśleniu moim... cały czas było dobrze ALE na odwrót.. sortowanie było według od najmniejszego do największego a sporo rekordów przyjmowąło wartość 0.. ;p Ale dalej mam problem z usunięciem rekordów które są w rankingu powyżej 10 miejsca..
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 - 16:07