Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z mysql_fetch_array
colinQ
post 15.09.2007, 21:34:27
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Mam kod, powinno gdy znajdzie rekord nierówny $data to napisac nowy a gdy znajdzie równy $data to dopisac do pola all cyfrę o 1 wyzsza od poprzedniaj a nie zapisuje czemu?? blinksmiley.gif


  1. <?php
  2.  
  3. include("mysql.php");
  4.  
  5. // sprawdzenie IP
  6. function IP_prawdziwe(){
  7.  
  8. if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
  9. $ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
  10. }
  11. else {
  12. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  13. }
  14.  
  15. return $ip_prawdziwe;
  16. }
  17.  
  18. ?>
  19.  
  20. <?
  21.  
  22. $ip = $_SERVER['REMOTE_ADDR'];
  23. $data = date("dmY");
  24. $wyszukaj_z_ip = mysql_query("select * from statystyki where ip='$ip'"); 
  25. $fetch_z_ip = mysql_fetch_assoc($wyszukaj_z_ip);
  26. $ile_z_ip = mysql_num_rows($wyszukaj_z_ip);
  27.  
  28. $all = mysql_num_rows(mysql_query("select * from statystyki"));
  29. $dzis = mysql_num_rows(mysql_query("select * from statystyki where data='$data'"));
  30.  
  31. if($fetch_z_ip['data'] !== $data) {
  32. mysql_query("insert into statystyki values('$ip', '$data', '1')");
  33. }
  34. else {
  35. $twoje_unikalne = $fetch_z_ip['all'];
  36. $uniksy_do_zapisu = $twoje_unikalne + 1;
  37. echo $uniksy_do_zapisu;
  38. mysql_query("update statystyki set all='$uniksy_do_zapisu' where ip='$ip'");
  39. }
  40.  
  41. echo 'twoje => '.$ile_z_ip.'<br>';
  42. echo 'unikalne => '.$all.'<br>';
  43. echo 'dzis => '.$dzis.'<br>';
  44.  
  45.  
  46. ?>


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
mild
post 16.09.2007, 00:15:49
Post #2





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 22.04.2007
Skąd: Wrocław

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


  1. <?php
  2. if($fetch_z_ip['data'] !== $data) {
  3. ?>


Po co !== ? Samo != powinno działać.
Go to the top of the page
+Quote Post
colinQ
post 16.09.2007, 09:33:21
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Tamto już zrobiłem teraz się nowy błąd narodził dry.gif :

Warning:
mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\usr\apache\httpd\html\homepage\stats.php on line 42

  1. <?php
  2.  
  3. include("mysql.php");
  4.  
  5. // sprawdzenie IP
  6. function IP_prawdziwe(){
  7.  
  8. if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
  9. $ip_prawdziwe = $_SERVER['HTTP_X_FORWARDED_FOR'];
  10. }
  11. else {
  12. $ip_prawdziwe = $_SERVER['REMOTE_ADDR'];
  13. }
  14.  
  15. return $ip_prawdziwe;
  16. }
  17.  
  18. ?>
  19.  
  20. <?
  21.  
  22. $ip = $_SERVER['REMOTE_ADDR'];
  23. $data = date("dmY");
  24. $wyszukaj_z_ip = mysql_query("select * from statystyki where ip='$ip' && data='$data'"); 
  25. $fetch_z_ip = mysql_fetch_assoc($wyszukaj_z_ip);
  26. $ile_z_ip = mysql_num_rows($wyszukaj_z_ip);
  27.  
  28.  
  29. if($ile_z_ip > 0) {
  30. $twoje_unikalne = $fetch_z_ip['all'];
  31. $uniksy_do_zapisu = $twoje_unikalne + 1;
  32. mysql_query("UPDATE `statystyki` SET `all` = '$uniksy_do_zapisu' WHERE `ip` = '$ip' AND `data` = '$data' AND `all` = '$twoje_unikalne' LIMIT 1 ;");
  33. }
  34. else {
  35. mysql_query("insert into statystyki values('$ip', '$data', '1')");
  36. }
  37.  
  38. $all = mysql_num_rows(mysql_query("select * from statystyki"));
  39. $dzis = mysql_num_rows(mysql_query("select * from statystyki where data='$data'"));
  40.  
  41. $aaaa = mysql_query("select all from statystyki");
  42. $wszystkie = 0;
  43.  
  44. for($i=1; $i<=$all; $i++) {
  45. $b = mysql_fetch_array($aaaa);
  46. $wszystkie = $wszystkie + $b[0];
  47.  
  48. }
  49.  
  50. echo 'twoje => '.$ile_z_ip.'<br>';
  51. echo 'unikalne => '.$all.'<br>';
  52. echo 'dzis => '.$dzis.'<br>';
  53. echo 'odslon => '.$wszystkie.'<br>';
  54.  
  55.  
  56. ?>


Ten post edytował colinQ 16.09.2007, 09:34:07


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
Cienki1980
post 16.09.2007, 10:28:06
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Masz kolumnę 'all' w tabeli statystyki questionmark.gif Błąd się generuje, bo masz złe zapytanie do bazy. Sprawdź czy na pewno zapytanie jest poprawne.


--------------------
404
Go to the top of the page
+Quote Post
colinQ
post 16.09.2007, 12:55:48
Post #5





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Mam kolumnę all, a zapytanie jest raczej dobre bo kilka linijek wyżej jest to samo (podobne).


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
mild
post 16.09.2007, 13:26:06
Post #6





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 22.04.2007
Skąd: Wrocław

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


$b = mysql_fetch_array($aaaa);
Nie ma sensu umieszczać tego w pętli. Przerzuć to przed for.
W linii 32 masz zapytanie, zmienne uniksy_do_zapisu i twoje_unikalne nie musza być w ' ', skoro to liczby.
Poza tym, łatwiej w zapytaniu skorzystać z funkcji mysql SUM(), żeby otrzymać sumę wszystkich rekordów. Tak jest wygodniej niż wykorzystywać do tego pętlę...
Go to the top of the page
+Quote Post
colinQ
post 16.09.2007, 14:06:09
Post #7





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Cytat(mild @ 16.09.2007, 14:26:06 ) *
$b = mysql_fetch_array($aaaa);
Nie ma sensu umieszczać tego w pętli. Przerzuć to przed for.


Jest bo po odczytaniu w każdym rekordzie pola all ma jego wartość dodać do zmiennej wszystko. winksmiley.jpg

Cytat
Poza tym, łatwiej w zapytaniu skorzystać z funkcji mysql SUM(), żeby otrzymać sumę wszystkich rekordów. Tak jest wygodniej niż wykorzystywać do tego pętlę...


Odpowiedź jest wyżej...


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
Cienki1980
post 16.09.2007, 15:41:13
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(colinQ @ 16.09.2007, 15:06:09 ) *
Jest bo po odczytaniu w każdym rekordzie pola all ma jego wartość dodać do zmiennej wszystko. winksmiley.jpg
Odpowiedź jest wyżej...

No to może powiesz mi jaka jest różnica w kodzie :
  1. <?php
  2. $query=mysql_query("select sum(all) as suma from statystyki");
  3. $row=mysql_fetch_array($query);
  4. echo $row['suma'];
  5. ?>

a kodem
  1. <?php
  2. $query=mysql_query("select all from statystyki");
  3. $wszystko=0;
  4. //korzystam z while , ale to bez różnicy .. no może poza tą, że nie muszę odpytywa
    ć bazy o ilość rekordów
  5. //bądź też używać count();
  6. while($row=mysql_fetch_array($query))
  7.  $wszystko+=$row['all'];
  8.  
  9. echo $wszystko;
  10. ?>



A co do błędu jak dla mnie to ta część kodu gdzie jest mysql_fetch_array() jest poprawna ... pokaż dokładnie która to jest linijka numer 42 w pliku stats.php


--------------------
404
Go to the top of the page
+Quote Post
soomal
post 16.09.2007, 19:15:30
Post #9





Grupa: Zarejestrowani
Postów: 38
Pomógł: 1
Dołączył: 4.03.2007

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


Cytat(Cienki1980 @ 16.09.2007, 16:41:13 ) *
No to może powiesz mi jaka jest różnica w kodzie :
  1. <?php
  2. $query=mysql_query("select sum(all) as suma from statystyki");
  3. $row=mysql_fetch_array($query);
  4. echo $row['suma'];
  5. ?>

a kodem
  1. <?php
  2. $query=mysql_query("select all from statystyki");
  3. $wszystko=0;
  4. //korzystam z while , ale to bez różnicy .. no może poza tą, że nie muszę odpytywa
  5.  bazy o ilość rekordów
  6. //bądź też używać count();
  7. while($row=mysql_fetch_array($query))
  8.  $wszystko+=$row['all'];
  9.  
  10. echo $wszystko;
  11. ?>


Jaka różnica?
1. wersja jest bardziej elegancka i szybsza.
Go to the top of the page
+Quote Post
colinQ
post 17.09.2007, 20:20:14
Post #10





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Ni niestety to nie pomogło... :/


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
mild
post 17.09.2007, 20:39:04
Post #11





Grupa: Zarejestrowani
Postów: 78
Pomógł: 0
Dołączył: 22.04.2007
Skąd: Wrocław

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


Zamien zapytanie na
$aaaa = mysql_query("select all from statystyki") or die(mysql_error());

Albo wrzuc w phpmyadminie, musi zwracac jakis blad.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 19:08