Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/MySQL]bład w bazie
Forum PHP.pl > Forum > Przedszkole
sazian
Wykonałem stronę w taki sposób jak opisano to tutaj http://szabloniki.com/licznik_gosci_online.html
Jednak po włączeniu strony nie wyświetlało się żadne IP więc dodałem zapytania o błędy MySQL’a i efekt jest taki http://sazian1.goin.pl/ip/ip.php
Co oznacza ten błąd i jak go usunąć??
UDAT
A nie łaska poszukać: Google
sazian
Noo to wiem co to znaczy tylko ciągle brak pomysłów jak się tego pozbyć
skowron-line
Kod
Column count doesn't match value count at row 1

liczba kolumn w bazie niezgadza sie z liczba danych do niej zapisywanych

jak nie kumasz to pokaz kawalek kodu
sazian
pokazałem nawet cały kod snitch.gif

  1. <?php
  2.  
  3. /* Laczymy sie z serwerem mysql */
  4. $db = mysql_connect('localhost','root','');
  5.  
  6. /* i wybieramy baze danych */
  7. mysql_select_db('webstuff',$db);
  8.  
  9. /*
  10. Ustalamy czas od ostatniego polaczenia
  11. po ktorym zostaniemy uznani za bycie on-line.
  12. Tutaj 3*60 sek a wiec 3 minuty
  13. */
  14. $old=date('H:i:s',time()-1*60);
  15.  
  16. /* Usuwamy wszystkie wpisy starsze niz 3 minuty - pozwoli to uniknac zasmiecania bazy */
  17. mysql_query("DELETE FROM online WHERE date<'$old'");
  18.  
  19. /* Ustalamy adres komputera ktory wszedl na strone */
  20. $_SERVER=$HTTP_SERVER_VARS; $REMOTE_ADDR=$_SERVER['REMOTE_ADDR'];
  21.  
  22. /* Terazniejszosc ;) */
  23. $now=date('H:i:s',time());
  24.  
  25. /* Dodajemy nowego hosta do bazy wraz bierzaca godzina wizyty */
  26. mysql_query("INSERT INTO online VALUES('','$REMOTE_ADDR','$now')");
  27.  
  28. /* Liczymy tych ktorzy zostali zapisani w ciagu ostatnich 3 minut */
  29. $res=mysql_query("SELECT * FROM online WHERE date>'$old'");
  30.  
  31. /* i wyswietlamy ich liczbe na ekranie */
  32. echo 'On-line: <a href="?show">'.mysql_numrows($res).'</a><br>';
  33.  
  34. /* Dodatkowo mozemy wyswietlic liste osob aktualnie przegladajacych strone */
  35. if (isset($_GET['show'])){
  36. echo '<br><table cellspacing=0 cellpadding=0 ><tr><td>Lista gosci<br><br></td><td></td></tr>';
  37. echo '<tr><td><b>IP</b></td><td><b>Data</b></td></tr>';
  38.  
  39. /* Kozystajac z faktu ze $res przechowuje ID wyniku wczesniejszego zapytania, wys
    wietlamy szczegolowe dane */
  40. while($iplist=mysql_fetch_assoc($res)){
  41. echo '<tr>';
  42. echo '<td>'.$iplist['ip'].'</td>';
  43. echo '<td>'.$iplist['date'].'</td>';
  44. echo '</tr>';
  45. }
  46. echo '</table>';
  47. echo '<br><a href="index.php">Ukryj</a>';
  48. }
  49.  
  50. /* Zamykamy polaczenie z baza */
  51.  
  52. ?>


i baza

  1. CREATE TABLE `online` (
  2. `ip` varchar(15) NOT NULL DEFAULT '',
  3. `date` time NOT NULL DEFAULT '00:00:00',
  4. PRIMARY KEY (`ip`)
  5. ) TYPE=MyISAM;

z tą różnicą że podałem moje dane do logowania na serwer



widze że to nie tylko dla mnie problem
enteh
Jest błąd w 26 linijce. Robi się insert z trzema pozycjami do tablicy o dwóch kolumnach winksmiley.jpg
Zamień ją na poniższą i będzie ok.

  1. <?php
  2. mysql_query("INSERT INTO online VALUES('$REMOTE_ADDR','$now')");
  3. ?>
sazian
hmmm teraz wywala
Cytat
Duplicate entry '83.26.132.54' for key 1
enteh
Bo to prosta wersja liczniczka. Odświeżasz stronę w czasie krótszym niż 3 minuty a więc zanim wpis zdąży być usunięty, a IP jest kluczem tej tabeli.Nie zmienia to faktu że Twoja obecność została odnotowana. Przestań więc wyswietlać błedy i będzie ok tongue.gif
sazian
Mam jeszcze jedno pytanie trochę poza tematem
Dlaczego zapis
  1. <?php
  2. $old=date('H:i:s',time()-1*60);
  3. ?>
oznacza 3 minuty
enteh
Jakby nie patrzeć oznacza 1 minutę do tyłu tongue.gif
time() zwróci aktualny czas, - 1*60 odejmie od niego minutę.
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.