Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Aktywność użytkownika i pobieranie z bazy
Forum PHP.pl > Forum > Przedszkole
smrodek11
Pierwszym moim problemem jest to, w jaki sposób monitorować aktywność użytkownika w bazie mysql. Chodzi mi o takie zdarzenia jak daty logowania, wykonywania czynnosci w serwisie itp. Jak mam zrobić tabele w bazie żeby to było najlepiej? Użytkownik mógłby przegladac swoja historię, więc musi być jakoś poukładane. Jedna tabela z wszystkimi zdarzeniami odpada bo za długo by w przyszłości szukało zdarzeń, wiele tabel z jedną dla każdego użytkownika też za bardzo by nie pasowała :/

Drugi problem to zarazem prośba, nie wiem jak zrobić aby na stronie wyświetało się tyle wpisów z bazy (jeden rekord, jeden wpis z data dodania, id i trescia) ile jest rekordów w bazie. Prosiłbym o jakiś przykład tego
Dzięki
IceManSpy
1. Po co aż taka historia jest potrzebna? No ale jeśli już jest, to może warto ją ograniczyć do np tygodnia czy miesiąca wstecz. Zależy jeszcze ile masz użytkowników. Pamiętaj, że nie ma nieskończonej liczby zasobów połączeń, więc przy większej ilości może to wszystko działać wolno. Ale do rzeczy, zrób jedną tabelę z indeksami. Po to są bazy danych, aby trzymać dane, wiec kilkanaście tysięcy wierszy to nie problem.

2. Nie rozumiem o co chodzi? Chodzi o pobranie wszystkich danych z bazy i wyświetlenie ich?
smrodek11
Cytat(IceManSpy @ 12.08.2012, 01:26:54 ) *
1. Po co aż taka historia jest potrzebna? No ale jeśli już jest, to może warto ją ograniczyć do np tygodnia czy miesiąca wstecz. Zależy jeszcze ile masz użytkowników. Pamiętaj, że nie ma nieskończonej liczby zasobów połączeń, więc przy większej ilości może to wszystko działać wolno. Ale do rzeczy, zrób jedną tabelę z indeksami. Po to są bazy danych, aby trzymać dane, wiec kilkanaście tysięcy wierszy to nie problem.

2. Nie rozumiem o co chodzi? Chodzi o pobranie wszystkich danych z bazy i wyświetlenie ich?


Co do drugiego, to tak o to mi chodzi, tylko że w każdym wyświetlonym wpisie będzie POST ktory bedzie przekazywal id i kwote wpisana przez uzytkownika
toaspzoo
...mysql_query("
  1. INSERT INTO tabela SET kwota = '$_POST[kwota]', user = '$uid'
...
Tylko filtruj wszystkie dane z inputów i nie tylko smile.gif

  1. <?
  2. function safe($tresc)
  3. {
  4.  
  5.  
  6.  
  7. $tresc = str_replace("<", '&lt;' , $tresc);
  8. $tresc = str_replace(">", '&gt;' , $tresc);
  9. $tresc = str_replace("<?", '&lt<?' , $tresc);
  10. $tresc = str_replace('"', '"', $tresc);
  11. $tresc = str_replace("'", ''', $tresc);
  12.  
  13. return $tresc;
  14. }
  15.  
  16. // ! function requires safe() function to work
  17. function safe_array($array,$exception="")
  18. {
  19.  
  20. $i = count($array);
  21. $k = array_keys($array);
  22.  
  23. for($a=0;$a<$i;$a++)
  24. {
  25. if($k[$a]!=$exception)
  26. {
  27. $array[$k[$a]] = safe($array[$k[$a]]);
  28. $array[$a] = safe($array[$a]);
  29. }
  30. }
  31.  
  32. return $array;
  33. }
  34.  
  35. ?>
smrodek11
Ok, żeby nie robić nowego tematu, co mam tu źle:
  1. <?php
  2. $query = mysql_query("select * from aukcje order by id desc limit 0,5");
  3. while($rekord = mysql_fetch_array($query))
  4. {
  5. $naz ="<div id=\"top\"> <div id=\"tabela\">$rekord[1]</div> <div id=\"prawa\">$rekord[3]</div> <form action=\"index.php?site=bid\" method=\"post\"> <div id=\"prawa\"><input name=\"bid\" type=\"text\"></div> <div id=\"prawa\"><input name=\"bid\" type=\"hidden\" value='$rekord[0]'></div> <div id=\"prawa\"><input type=\"submit\" value=\"Wyslij\"/></div>";
  6. }
  7. echo ''.$naz.'';
  8. ?>

Że jest wyświetlany tylko jeden, pierwszy rekord?
Tabela z której ma pobierać wygląda tak: http://screenshooter.net/0158681/qtatxaq
A pobiera tylko pierwszy rekord :/
IceManSpy
Cały czas nadpisujesz tą samą zmienną. Zrób tak:
  1. <?php
  2. $query = mysql_query("select * from aukcje order by id desc limit 0,5");
  3. $naz = "";
  4. while($rekord = mysql_fetch_array($query))
  5. {
  6. $naz .="<div id=\"top\"> <div id=\"tabela\">$rekord[1]</div> <div id=\"prawa\">$rekord[3]</div> <form action=\"index.php?site=bid\" method=\"post\"> <div id=\"prawa\"><input name=\"bid\" type=\"text\"></div> <div id=\"prawa\"><input name=\"bid\" type=\"hidden\" value='$rekord[0]'></div> <div id=\"prawa\"><input type=\"submit\" value=\"Wyslij\"/></div>";
  7. }
  8. echo ''.$naz.'';
  9. ?>
toaspzoo
axesmiley.png
  1. <?php
  2. $query = mysql_query("select * from aukcje order by id desc limit 0,5");
  3. while($rekord = mysql_fetch_array($query))
  4. {
  5. $naz ="<div id=\"top\"> <div id=\"tabela\">$rekord[1]</div> <div id=\"prawa\">$rekord[3]</div> <form action=\"index.php?site=bid\" method=\"post\"> <div id=\"prawa\"><input name=\"bid\" type=\"text\"></div> <div id=\"prawa\"><input name=\"bid\" type=\"hidden\" value='$rekord[0]'></div> <div id=\"prawa\"><input type=\"submit\" value=\"Wyslij\"/></div>";
  6. echo $naz;
  7. echo '<br>';
  8. }
  9.  
  10. ?>
smrodek11
Troche przerobiony kod zamierzałem użyć do wyświetlania logów, tylko coś mi nie idzie:
Kod
<?php
    $query = mysql_query("SELECT * FROM logi WHERE login = '$Login'");
    while($rekord = mysql_fetch_array($query))
    {
    $naz ="<div id=\"top\"> <div id=\"tabela\">$rekord[1]</div>";
    echo $naz;
    echo '<br>';
    }
    
    ?>


Bez "WHERE" w zapytaniu, wszystko działa :/
mmmmmmm
strzelam: $login, zamiast $Login
smrodek11
Nie, to nie to, raczej źle zbudoawane zapytanie ale w innych przykładach widziałem że ludzie również używali "Where" i to działało
Błąd jaki teraz wyskakuje: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /homez.379/timetopl/www/strona/logikonta.php on line 8
Odnosi się do linijki:
Kod
while($rekord = mysql_fetch_array($query))


Dałem coś takiego:
Kod
$logi = mysql_query("SELECT * FROM logi WHERE login= '$Login'");

I działa O.o
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.