Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ile razy użytkownik logował się?
Forum PHP.pl > Forum > Przedszkole
aceout
Witam wszystkich.

Na początek kilka słów - jestem absolutnie początkującym w tematach PHP i MySQL. Stworzyłem prostą stronę, na której można się logować, a strona, która uruchamia się po zalogowaniu, wyświetla
spersonalizowane dane. Do tej pory wszystko szło jak po maśle, ale... pojawiła się ściana.

Bardzo mi zależy na tym, abym miał pełną informację jako "administrator strony" o tym ile razy dany użytkownik się logował - niby banalne.
Wymyśliłem to tak:
1) w bazie danych, w kolumnie 'log', przechowuję INT, a więc liczbę naturalną odzwierciedlającą ilość logowań.
2) w pliku php, którego zadaniem jest logować użytkownika (działa bezbłędnie) dodałem fragment kodu, który zgodnie z tym co poniżej, dokonuje aktualizacji tej kolumny u zalogowanego użytkownika.

.....
$ilu_userow = $rezultat->num_rows;
if ($ilu_userow>0)
{
$_SESSION['zalogowany'] = true;
$wiersz = $rezultat->fetch_assoc();
$_SESSION['id'] = $wiersz['id'];
$_SESSION['username'] = $wiersz['username'];
$_SESSION['imie'] = $wiersz['imie'];
$_SESSION['nazwisko'] = $wiersz['nazwisko'];
$_SESSION['e-mail'] = $wiersz['e-mail'];
$_SESSION['password'] = $wiersz['password'];
$_SESSION['log'] = $wiersz['log'];

$numer = $_SESSION['id'];
$logowanie = $_SESSION['log'];
$log2 = $logowanie++;
mysqli_query("UPDATE users SET log = $log2 WHERE id = $numer");

unset($_SESSION['blad']);
$rezultat->free_result();

header('Location: strona.php');
}
else
{
$_SESSION['blad'] = '<span style="color:red"> Nieproawidłowy login lub hasło.</span>';
header('Location: login.php');
}
.....


3) Z niewiadomego mi powodu, ten mechanizm nie działa.

Nie mam pojęcia co robię źle... Czy kod jest w złym miejscu, czy w ogóle jest poprawny... Podkreślam, że raczkuję w temacie i mimo, że tak dużo udało mi się zrobić, to pewnie robię jeszcze śmieszne błędy (chciałbym, żeby
okazało się, że to jakiś średnik albo coś w tym stylu).
Męczę się z tym już kilka dni, przeglądam różne miejsca w sieci, kursy i inne fora, ale niczego nie znalazłem co naprowadziłoby mnie na rozwiązanie... Mówiąc szczerze jestem strasznie zniesmaczony swoją nieporadnością.
Liczę na wsparcie i pomoc w rozwiązaniu problemu.


Pozdrawiam,
Marcin.
viking
Kolumna log niech ma domyślną wartość 0. Przy każdym poprawnym zalogowaniu dawaj zapytanie UPDATE users SET log = log+1 i tyle.
aceout
Od tego zacząłem... gdyby to było tak proste... smile.gif Mam trochę wiedzy ogólnej z programowania, uczyłem się języka C.
Stąd może takie naleciałości. Wydawać by się mogło, że jest ok, ale pytanie moje brzmi. Czy ten kod, jest we właściwym miejscu i czy jest poprawny składniowo? Jeśli tak, to dlaczego to nie działa? smile.gif

Dodam jeszcze tyle, że polecenie UPDATE mi nie działa. Odczyt przez SELECT jest ok, wszystkie zapytania są w porządku, ale nie mogę zmienić wartości w tabeli.

Nawet na sztywno kiedy piszę log = 1 WHERE id=1. Po prostu nie reaguje...
Tomplus
Próbowałeś przetestować bezpośrednio w konsoli MySQL?

W ogóle... wykomentuj najpierw: header('Location: strona.php');

A potem spróbuj testować. Pewnie pojawi się informacja z błędem.
nospor
http://php.net/manual/es/mysqli.query.php
I sie przyjrzyj jak nalezy wykonywac mysqli_query. czemu ostatnio jest moda na unikanie manuala oraz nie zagladanie do logow bledow?!
aceout
TOMPLUS - to był dobry pomysł - okazało się, że pojawił się błąd:

mysqli_query() expects at least 2 parameters, 1 given in /home/xxxxxxxxxx/public_html/zaloguj.php on line 39

Staram się znaleźć co to oznacza, ale jeśli komuś by się chciało pomóc to będę bardzo wdzięczny!
Jeśli chodzi o testowanie - sprawdzałem komendę UPDATE z poziomu PHPmyAdmin - działa bezbłędnie. TO i błąd, który podałem wyżej ewidentnie dowodzi, że to mój problem z php...

NOSPOR, to nie moda, to brak wiedzy i doświadczenia. Gdybym wiedział jak korzystać z manuali, to bym nie szukał pomocy na forum - nie ma tu żadnej złośliwości - dziękuję, że napisałeś, ale wierz mi, że to jeszcze nie mój poziom.
Nie bez powodu stworzyłem ten post w "przedszkolu"...
nospor
Podalem ci linka z opisem funkcji, ktora odpalasz zle. W linku tym masz podane jak nalezy ja odpalac poprawnie. Nie trzeba miec doktoratu z php by przeczytac opis dzialania z dokumentacji. Zamykam, by cie bardziej zmotywowac do mycia mniejszym leniem smile.gif
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.