Hej, jak mogę zrobić takie coś, ze w bazie danych uzytkownicy jest uzystkownik Darek i posiada on w kolumnie ilość liczbę 4 i on tylko 4 razy może użyć formularza.
Skrypt sprawdzający przy wysyłce ile dany użytkownik ma już prób w kolumnie np. ilość: 3 to jak wysyła formularz to robi -1 i sprawdza też ile jest, jak będzie 0 to nie zapisuje i wywala informację.
$ilosc_prob = POBRANA Z BAZY ILOSC; if($ilosc_prob == 0){ //wyświetl info, że nie może użyć formularza }else{ //wyświetl formularz }
$ilosc_prob = POBRANA Z BAZY ILOSC; if($ilosc_prob == 0){ //wyświetl info, że nie może użyć formularza }else{ //wyświetl formularz }
UPDATE tabela SET pole = pole -1 WHERE user=jakiesid czy inne id po czym indentyfikujesz uzytkownika
$polaczenie = http://www.php.net/mysql_connect('localhost', 'root', '123', 'qqq'); $ilosc_prob = http://www.php.net/mysql_query("SELECT pozostale FROM uzytkownicy WHERE id='.$_SESSION['id']'"); if($ilosc_prob == 0){ http://www.php.net/echo "Nie możesz" }else{ http://www.php.net/echo "możesz" }
Wpisz tak
'{$_SESSION['id']}'
Id nie jest stringiem. Poza tym używasz rozszerzenia mysql które wylecialo z php7.
<?php $polaczenie = @new mysqli('localhost', 'root', '123', 'qqq'); if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $ilosc_prob = @$polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); if($ilosc_prob == 0){ http://www.php.net/echo "Nie możesz"; }else{ http://www.php.net/echo "możesz"; } } ?>
Na początek usuń wszystkie @ z kodu
<?php $polaczenie = new mysqli('localhost', 'root', '123', 'qqq'); if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $ilosc_prob = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); if($ilosc_prob == 0){ http://www.php.net/echo "Nie możesz"; }else{ http://www.php.net/echo "możesz"; } } ?>
Czyli co, nadal ten nowy kod wywala ci strone? To moze chociaz napisz na czym polega to wywalanie...
Ciezko bylo od razu tak napisac?
Przeciez query teraz zwraca ci zawsze TRUE (czy tam resource) niewazne czy znalazlo rekord czy nie wiec nic dziwnego ze twoj IF ELSE zachowuje sie tak jak sie zachowuje... Doczytaj w manualu jak pobrac rekord a nie wynik wykonania zapytania
<?php $polaczenie = new mysqli('localhost', 'root', '123', 'qqq'); if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $ilosc_prob = http://www.php.net/mysql_result("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); if($ilosc_prob == 0){ http://www.php.net/echo "Nie możesz"; }else{ http://www.php.net/echo "możesz"; } } ?>
MIeszasz styl proceduralny z obiektowym... nie mieszaj. Trzymaj sie obiektowego To raz
A dwa: gdzie ja pisalem ze masz usuwac query() ? TO mialo zostac. Procz tego miales jeszcze odebrac dane
<?php if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); $ilosc_prob = http://www.php.net/mysql_result($query,"{$_SESSION['user']}","id"); if($ilosc_prob == 0){ http://www.php.net/echo "$ilosc_prob"; } else{ http://www.php.net/echo "możesz"; } } ?>
O to
$ilosc_prob = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
mialo zostac. To jest dobrze. TO wykonuje zapytanie. Teraz masz jeszcze odebrac rekord z tego zapytania:
http://php.net/manual/en/mysqli-result.fetch-assoc.php
$polaczenie = new mysqli('localhost', 'root', '123', 'qqq'); if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $query = ("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); $result = mysqli_query($query); if($result == 0){ http://www.php.net/echo "nie mozesz"; } else{ http://www.php.net/echo "możesz"; } }
Ty w ogóle patrzysz na dokumentację? Masz tam pełne przykłady.
Co tam dokumentacja jak on nie rozumie co mu pisze po polsku w temacie.
Wyraznie ci napisalem ze o to:
$ilosc_prob = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
ma zostac. A ty co? A ty radosnie to usunales poraz kolejny. Dalsze dyskusja nie ma sensu jak ty prostych polecen nie rozumiesz.
else { $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); $result = mysqli_query($query); if($result = 0){ http://www.php.net/echo "nie mozesz"; }else{ http://www.php.net/echo "mozesz"; } }
Kazde moje zadanie po kolei mam ci w kazdym kolejnym poscie wyjasniac? Bawi cie to?
Napisalem wyraznie, ze masz zostawic query i odpalic fetch. A ty co? Wywaliles co miales zostawic i cos tam kombinowales. Napisalem ci o tym to w koncu raczyles zostawic co prosilem bys zostawil ale fetch jak nie robiles tak nadal nie robisz. Przeciez wszystko masz napisane ode mnie, jakbym ci podal przepis na ciasto a ty sobie ogladasz TV i w miedzyczasie wrzucasz cos co uslyszales w TV.
Czego tu nie ruzumiesz:
1) zostaw query jak miales - podalem ci ktore
2) nastepnie zastosuj FETCH - podalem ci nawet linka o jaki fetch mi chodzi
Co w tych dwoch krokach jest niezrozumialesgo? Czemu uparcie od ilus tam postow nie uzywasz FETCH jak ci podalem? Ty nie masz problemow z programowaniem ale generalnie z paroma innymi rzeczami :/
if (mysqli_connect_errno() != 0){ http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>'; } else { $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); if ($result = $mysqli->query($query)) { while ($row = $result->fetch_assoc()) { if ($row = 0) http://www.php.net/echo "nie mozesz"; } } else { http://www.php.net/echo "mozesz" } $result->free(); $mysqli->close();
Po kiego dwa razy wywołujesz funkcję query?
Drugie wywołanie jest kompletnie bezsensowne, bo jako argument nie podajesz mu zapytania a coś kompletnie innego.
Spróbuj przeanalizować linijka po linijce co gdzie masz (np. var_dump) i co tam być powinno.
Wykonanie zapytania(query('Twoje zapytanie')) -> Odczytanie wyniku zapytanie(fetch_assoc()) -> sprawdzenie if'em
else { $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'"); while ($row = $query->fetch_assoc()) { if ($row = 0) http://www.php.net/echo "nie mozesz"; } }
Co według Ciebie robi konstrukcja $row = 0? A gdyby to nawet było == to dalej jest głupota. Zrób var_dump po każdym kroku.
Dziękuję wszystkim za pomoc, głównie za cierpliwość, udało się
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)