Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Licznik odwiedzin, problem z przekłamywaniem
redelek
post
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Witam,

Zrobiłem sobie taki licznik odwiedzin,
  1. <?php
  2. require_once('browser.php');
  3.  
  4. $db = mysql_connect("localhost", "user","pass");
  5. mysql_select_db("licznik",$db);
  6. $wynik = mysql_query ("SELECT * FROM licznik_odw");
  7.  
  8.  
  9. for ($count = 0; $row = mysql_fetch_row ($wynik); ++$count)
  10. {}
  11.  
  12. $now = getdate();
  13. $month = $now[mon];
  14. $mday = $now[mday];
  15. $year = $now[year];
  16. $hours = $now[hours];
  17. $min = $now[minutes];
  18. $sec = $now[seconds];
  19. $id = $count++;
  20. $ip = "$REMOTE_ADDR";
  21. $br = new Browser;
  22. $sys=$br->Platform;
  23. $przeg=$br->Name.' '.$br->Version;
  24. $time = "$year-$month-$mday $hours:$min:$sec";
  25.  
  26. for ($i=0; $i < strlen($id); $i++)
  27. {
  28. $sign = substr($id, $i, 1);
  29. print("<img src=\"image/$sign.gif\" border=\"0\" alt=\"$sign\">");
  30. }
  31. //print "$id";
  32. $wynik = mysql_query ("SELECT ip FROM licznik_odw ");
  33. list($ip_db) = mysql_fetch_array($wynik);
  34. //echo "<br>".$ip_db;
  35. //echo "<br>".$ip;
  36. If ($ip == $ip_db ){
  37. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  38. }else {
  39. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  40. $wynik = mysql_query($counter);
  41. }
  42. ?>


Problem jest w tym , że jak ktoś się łączy to ma nadal wyświetlaną starą cyferkę dopiero jak odświeży stronę cyfra się zmienia i pojawia się komunikat że jego IP jest już w bazie. Macie może pomysł gdzie zrobiłem błąd że tak się dzieje ?

Pozdrawiam
Redelek

Ten post edytował redelek 21.02.2008, 09:43:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
nospor
post
Post #2





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




No ale zastanow sie przez chwile...
najpierw wyswietlasz stan licznikow a dopiero potem wkladasz. No to sie nie dziw ze stan licznikow przed wlozeniem jest inny.

ps:
  1. <?php
  2. for ($count = 0; $row = mysql_fetch_row ($wynik); ++$count)
  3. {}
  4. ?>
(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) a czemu to ma niby sluzyc?
Go to the top of the page
+Quote Post
redelek
post
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 09:45:18 ) *
No ale zastanow sie przez chwile...
najpierw wyswietlasz stan licznikow a dopiero potem wkladasz. No to sie nie dziw ze stan licznikow przed wlozeniem jest inny.

ps:
  1. <?php
  2. for ($count = 0; $row = mysql_fetch_row ($wynik); ++$count)
  3. {}
  4. ?>
(IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif) a czemu to ma niby sluzyc?


A bo mi nie wyświetlał licznika i kolega mi podpowiedział że to powinno pomóc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Czyli mówisz że najpierw wyświetlić dane a potem dodać czy źle Cię zrozumiałem?
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Cytat
Czyli mówisz że najpierw wyświetlić dane a potem dodać
No to przeciez na odwrot! Najpierw dodac, potem wyswietlic. Mowilem przeciez: "zastanow sie przez chwile"

Jak moze wyswietlic sie cos, skoro to dodajesz dopiero po wyswietleniu?
Go to the top of the page
+Quote Post
redelek
post
Post #5





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 10:15:32 ) *
No to przeciez na odwrot! Najpierw dodac, potem wyswietlic. Mowilem przeciez: "zastanow sie przez chwile"

Jak moze wyswietlic sie cos, skoro to dodajesz dopiero po wyswietleniu?


Kurcze nie mogę sobie poradzić, problem chyba jest w tym moim zabezpieczeniu które ma uniemożliwić zwiększanie licznika jeśli jest ten sam IP.
Jak to wyłączę to licznik pięknie śmiga , ale za to liczny odświeżanie strony:(.

Patrzę jak sroka w gnat i nie widzę tego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) rozjaśnijcie proszę


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





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




bo źle podchodzisz do sprawdzania czy jest.

Sprawdzac masz tak:
  1. SELECT ip FROM tabela WHERE ip='twojeszukaneip'

Jesli to zapytanie zwroci ci rekord, znaczy ze ip jest juz w bazie i masz wyswietlic komunikat: JESTES
Jesli nie zwroci ci rekordu, masz wowczas dodac i wyswietlic: DODALEM CIE DO BAZY. JAK WEJDZIESZ NASTEPNYM RAZEM TO ZOBACZYSZ "JESTES"
Go to the top of the page
+Quote Post
redelek
post
Post #7





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 11:35:06 ) *
bo źle podchodzisz do sprawdzania czy jest.

Sprawdzac masz tak:
  1. SELECT ip FROM tabela WHERE ip='twojeszukaneip'

Jesli to zapytanie zwroci ci rekord, znaczy ze ip jest juz w bazie i masz wyswietlic komunikat: JESTES
Jesli nie zwroci ci rekordu, masz wowczas dodac i wyswietlic: DODALEM CIE DO BAZY. JAK WEJDZIESZ NASTEPNYM RAZEM TO ZOBACZYSZ "JESTES"


No to ja mam to tu
  1. <?php $wynik = mysql_query ("SELECT ip FROM licznik_odw");
  2. list($ip_db) = mysql_fetch_array($wynik);
  3. //echo "<br>".$ip_db;
  4. If ($ip == $ip_db ){
  5. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  6. }else {
  7. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  8. $wynik = mysql_query($counter);?>


Jeśli jest to nie zmienia , ale jeśli nie ma to też nie zwiększa cyferki dopiero za drugim razem ? źle myślę ?(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował redelek 21.02.2008, 11:49:01
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




no nie. ty masz inaczej. naprawde nie widzisz roznicy miedzy moim zapytaniem a twoim? Moje pobiera maksymalnie jeden rekord i to ten rekord ktorego szukamy. Twoje leci po wszystkich rekordach i dopiero w petli sprawdza czy jest czy nie ma. Ale zle to zrobiles to masz kwiatki. A ze mi sie nie chce ci tlumaczyc na podstawie twojego zlego kodu, to podalem ci inne (lepszze) rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
redelek
post
Post #9





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 11:59:22 ) *
no nie. ty masz inaczej. naprawde nie widzisz roznicy miedzy moim zapytaniem a twoim? Moje pobiera maksymalnie jeden rekord i to ten rekord ktorego szukamy. Twoje leci po wszystkich rekordach i dopiero w petli sprawdza czy jest czy nie ma. Ale zle to zrobiles to masz kwiatki. A ze mi sie nie chce ci tlumaczyc na podstawie twojego zlego kodu, to podalem ci inne (lepszze) rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Wiem , że kombinuję, ale inaczej się nie nauczę. Nie chcę gotowca , nie liczę na to. Chcę skromnej pomocy która mnie naprowadzi w moim projekcie i zakręceniu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Poprawiłem na Twoje zapytanie hmmm ale jest to samo z czym walczę

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





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




Cytat
Poprawiłem na Twoje zapytanie hmmm
Miej litosc... pokaz nowy kod ktory napisales...
Go to the top of the page
+Quote Post
redelek
post
Post #11





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 12:22:02 ) *
Miej litosc... pokaz nowy kod ktory napisales...


Wstydzę się bo będziesz krzyczała zaraz (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)

  1. <?php
  2. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'");
  3. list($ip_db) = mysql_fetch_array($wynik);
  4. echo $ip_db;
  5. If ($ip_db == $ip ){
  6. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  7. }else {
  8. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  9. $wynik = mysql_query($counter);
  10. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Cytat
Wstydzę się bo będziesz krzyczała zaraz
Nie taki nospor straszny jak go maluja (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

No i git. Zakladam ze zmienna $ip wypelniasz wczesniej? Jesli tak to co ci teraz nie dziala?

Wyswietlaj tez ewewntualne bledy:
  1. <?php
  2. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'") or die(mysql_error());
  3. ?>

I tak z kazdym mysql_query()

edit: zmien ten kod na:
  1. <?php
  2. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'") or die(mysql_error());
  3.  
  4.  
  5. If (mysql_num_rows($wynik) > 0 ){
  6. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  7. }else {
  8. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  9. $wynik = mysql_query($counter) or die(mysql_error());
  10. }
  11. ?>
Go to the top of the page
+Quote Post
redelek
post
Post #13





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Całość wygląda tak i jest nadal to samo:(

  1. <?php 
  2.  
  3. require_once('browser.php');
  4.  
  5. $db = mysql_connect("localhost", "predel","niuniek2");
  6. mysql_select_db("licznik",$db);
  7. $wynik = mysql_query ("SELECT * FROM licznik_odw");
  8.  
  9.  
  10. for ($count = 1; $row = mysql_fetch_row ($wynik); ++$count)
  11. {}
  12.  
  13. $now = getdate();
  14. $month = $now[mon];
  15. $mday = $now[mday];
  16. $year = $now[year];
  17. $hours = $now[hours];
  18. $min = $now[minutes];
  19. $sec = $now[seconds];
  20. $id = $count++;
  21. $ip = "$REMOTE_ADDR";
  22. $br = new Browser;
  23. $sys=$br->Platform;
  24. $przeg=$br->Name.' '.$br->Version;
  25. $time = "$year-$month-$mday $hours:$min:$sec";
  26.  
  27. for ($i=0; $i < strlen($id); $i++)
  28. {
  29. $sign = substr($id, $i, 1);
  30. print("<img src=\"image/$sign.gif\" border=\"0\" alt=\"$sign\">");
  31. }
  32. //print "$id";
  33.  
  34. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'") or die(mysql_error());
  35.  
  36.  
  37. If (mysql_num_rows($wynik) > 0 ){
  38. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  39. }else {
  40. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  41. $wynik = mysql_query($counter) or die(mysql_error());
  42. }
  43. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




No ale te wyswietlanie tych cyferek zrob po dodaniu usera. Czyli po tym kodzie co zmieniles.
Go to the top of the page
+Quote Post
redelek
post
Post #15





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(nospor @ 21.02.2008, 12:49:24 ) *
No ale te wyswietlanie tych cyferek zrob po dodaniu usera. Czyli po tym kodzie co zmieniles.


To jest to samo (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

  1. <?php
  2. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'") or die(mysql_error());
  3. If (mysql_num_rows($wynik) > 0 ){
  4. echo "<br><b>IP już odnotowany :</b> ".$ip_db."";
  5. }else {
  6. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  7. $wynik = mysql_query($counter) or die(mysql_error());
  8.  
  9.  
  10. }
  11. for ($i=0; $i < strlen($id); $i++)
  12. {
  13. $sign = substr($id, $i, 1);
  14. print("<img src=\"image/$sign.gif\" border=\"0\" alt=\"$sign\">");
  15. }
  16. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




ale musisz caly kod przeniesc na dół, włącznie z zapytaniem, włącznie z pętla co sie pytalem o nia, itd.

a tak na marginesie to liczbe rekordow tez sie liczy inaczej. Ty teraz przelatujesz po wszystkich rekordach i zwiekszasz $count o 1. tak sie nie robi. nalezy wykonac zapytanie:
  1. SELECT count(*) FROM tabela

Ono zwraca liczbe rekordow. I juz. zadnych petli ani innych cudakow co u ciebie sa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
redelek
post
Post #17





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


To zrobiłem tak i chyba działa, ale jeśli IP jest w bazie to wyświetla tylko napis a jak wyświetlić poprzedni stan licznika ?
  1. <?php
  2. require_once('browser.php');
  3.  
  4. $db = mysql_connect("localhost", "predel","niuniek2");
  5. mysql_select_db("licznik",$db);
  6. $wynik = mysql_query ("SELECT * FROM licznik_odw");
  7.  
  8.  
  9. for ($count = 1; $row = mysql_fetch_row ($wynik); ++$count)
  10. {}
  11.  
  12. $now = getdate();
  13. $month = $now[mon];
  14. $mday = $now[mday];
  15. $year = $now[year];
  16. $hours = $now[hours];
  17. $min = $now[minutes];
  18. $sec = $now[seconds];
  19. $id = $count++;
  20. $ip = "$REMOTE_ADDR";
  21. $br = new Browser;
  22. $sys=$br->Platform;
  23. $przeg=$br->Name.' '.$br->Version;
  24. $time = "$year-$month-$mday $hours:$min:$sec";
  25.  
  26. If (mysql_num_rows($wynik) > 0 ){
  27. echo "<br><b>IP już odnotowany :</b> ".$ip."";
  28.  
  29. }else {
  30. $counter = "INSERT INTO licznik_odw (ID, przegladarka, IP, system, time) VALUES ('$id','$przeg','$ip','$sys','$time')";
  31. $wynik = mysql_query($counter) or die(mysql_error());
  32.  
  33. for ($i=0; $i < strlen($id); $i++)
  34. {
  35. $sign = substr($id, $i, 1);
  36. print("<img src=\"image/$sign.gif\" border=\"0\" alt=\"$sign\">");
  37. }
  38. //print "$id";
  39.  
  40. $wynik = mysql_query ("select ip from licznik_odw where ip='$ip'") or die(mysql_error());
  41.  
  42.  
  43.  
  44. }
  45. ?>
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: 20.12.2025 - 20:13