Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Problem z zapytaniem
Forum PHP.pl > Forum > Przedszkole
Ulysess
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 questionmark.gif dodam tylko że obydwie tabele na tą chwile są puste
nospor
for($w = 0; $l <= 1;++$w)
Przeciez ta petla nigdy się nie konczy.....
poli25
czemu w petli masz 2 zmienne?
$w=0; $l<=1; questionmark.gif
poza tym powinno wygldac
to tak ($w=0; $w<=1; $w++)
Ulysess
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)
nospor
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.
Ulysess
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.
nospor
No to moze dla 10-tego wyniki wartosc pola RESULT wynosi 0 tongue.gif
Ulysess


Uploaded with ImageShack.us

chyba ne za bardzo.. ;p
nospor
  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? tongue.gif
Ulysess
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" }

nospor
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ą
Ulysess
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..
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.