Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]formularz mysql php
Forum PHP.pl > Forum > Przedszkole
daniel2k
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ę.
Beniooo
  1. $ilosc_prob = POBRANA Z BAZY ILOSC;
  2. if($ilosc_prob == 0){
  3. //wyświetl info, że nie może użyć formularza
  4. }else{
  5. //wyświetl formularz
  6. }

Z bazy pobierasz połączeniem PDO, albo mysqli za pomocą SELECT
daniel2k
Cytat(Beniooo @ 14.02.2018, 10:44:11 ) *
  1. $ilosc_prob = POBRANA Z BAZY ILOSC;
  2. if($ilosc_prob == 0){
  3. //wyświetl info, że nie może użyć formularza
  4. }else{
  5. //wyświetl formularz
  6. }

Z bazy pobierasz połączeniem PDO, albo mysqli za pomocą SELECT

Bardzo Ci dziękuję za to, ostatnia rzecz... jak mogę zrobić tak żeby za każdym wysłaniem formularza odejmowało -1? :/
nospor
UPDATE tabela SET pole = pole -1 WHERE user=jakiesid czy inne id po czym indentyfikujesz uzytkownika
daniel2k
Cytat(nospor @ 14.02.2018, 15:44:28 ) *
UPDATE tabela SET pole = pole -1 WHERE user=jakiesid czy inne id po czym indentyfikujesz uzytkownika


Nie wiem dlaczego kompletnie nic nie działa, wywala całą stronę... coś jest nie tak w tym kodzie?


  1. $polaczenie = mysql_connect('localhost', 'root', '123', 'qqq');
  2. $ilosc_prob = mysql_query("SELECT pozostale FROM uzytkownicy WHERE id='.$_SESSION['id']'");
  3. if($ilosc_prob == 0){
  4. echo "Nie możesz"
  5. }else{
  6. echo "możesz"
  7. }


Kazdy uzytkownik ma unikalne ID generowane przy rejestracji, dlatego użyłem .$_SESSION['id']
pozostale - kolumna odpowiedzialna za ilosc prob
topcio
Wpisz tak
  1. '{$_SESSION['id']}'
daniel2k
Cytat(topcio @ 15.02.2018, 02:42:41 ) *
Wpisz tak
  1. '{$_SESSION['id']}'


Nadal wywala sad.gif Oczywiscie całość daje w

<?php

kod

?>
viking
Id nie jest stringiem. Poza tym używasz rozszerzenia mysql które wylecialo z php7.
daniel2k
Cytat(viking @ 15.02.2018, 06:52:41 ) *
Id nie jest stringiem. Poza tym używasz rozszerzenia mysql które wylecialo z php7.

Czyli co muszę zrobić aby całość działała? Co zmienić.

  1. <?php
  2. $polaczenie = @new mysqli('localhost', 'root', '123', 'qqq');
  3. if (mysqli_connect_errno() != 0){
  4. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  5. }
  6. else {
  7. $ilosc_prob = @$polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  8. if($ilosc_prob == 0){
  9. echo "Nie możesz";
  10. }else{
  11. echo "możesz";
  12. }
  13. }
  14. ?>
viking
Na początek usuń wszystkie @ z kodu
daniel2k
Cytat(viking @ 15.02.2018, 09:46:29 ) *
Na początek usuń wszystkie @ z kodu

  1. <?php
  2. $polaczenie = new mysqli('localhost', 'root', '123', 'qqq');
  3. if (mysqli_connect_errno() != 0){
  4. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  5. }
  6. else {
  7. $ilosc_prob = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  8. if($ilosc_prob == 0){
  9. echo "Nie możesz";
  10. }else{
  11. echo "możesz";
  12. }
  13. }
  14. ?>


Zrobiłem to o co prosiłeś, naprawdę nie wiem gdzie leży błąd...
nospor
Czyli co, nadal ten nowy kod wywala ci strone? To moze chociaz napisz na czym polega to wywalanie...
daniel2k
Cytat(nospor @ 15.02.2018, 10:04:28 ) *
Czyli co, nadal ten nowy kod wywala ci strone? To moze chociaz napisz na czym polega to wywalanie...


Nie, nie, już nie wywala... działa wszystko jeśli chodzi o łączenie, teraz ostatnim problemem jest to, że nie ważne czy w polu kamien (w bazie) wpisze 1 czy 0, tak czy siak wyswietla sie pozwolenie - mozesz.
nospor
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
daniel2k
Cytat(nospor @ 15.02.2018, 10:11:21 ) *
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


Gdzie tym razem jest błąd, przepraszam, że tak pytam o wszystko ale nadal pomimo mysql_result nie działa...

  1. <?php
  2. $polaczenie = new mysqli('localhost', 'root', '123', 'qqq');
  3. if (mysqli_connect_errno() != 0){
  4. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  5. }
  6. else {
  7. $ilosc_prob = mysql_result("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  8. if($ilosc_prob == 0){
  9. echo "Nie możesz";
  10. }else{
  11. echo "możesz";
  12. }
  13. }
  14. ?>
nospor
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
daniel2k
Cytat(nospor @ 15.02.2018, 10:32:06 ) *
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


Poddaje się, to nie jest na moją głowę, pomimo szukania, próbowania i tak nic nie wychodzi.
Nie potrafię znaleźć błędów które mi wskazujesz...

Zrobiłem jeszcze coś takiego... ale nadal w marnych skutkach

  1. <?php
  2.  
  3. if (mysqli_connect_errno() != 0){
  4. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  5. }
  6. else {
  7.  
  8. $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  9. $ilosc_prob = mysql_result($query,"{$_SESSION['user']}","id");
  10. if($ilosc_prob == 0){
  11. echo "$ilosc_prob";
  12. }
  13. else{
  14. echo "możesz";
  15. }
  16. }
  17. ?>
nospor
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
daniel2k
Cytat(nospor @ 15.02.2018, 10:48:44 ) *
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


  1. $polaczenie = new mysqli('localhost', 'root', '123', 'qqq');
  2. if (mysqli_connect_errno() != 0){
  3. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  4. }
  5. else {
  6.  
  7. $query = ("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  8. $result = mysqli_query($query);
  9. if($result == 0){
  10. echo "nie mozesz";
  11. }
  12. else{
  13. echo "możesz";
  14. }
  15. }


Ehh, czuje, ze jestem juz tak blisko...
viking
Ty w ogóle patrzysz na dokumentację? Masz tam pełne przykłady.
daniel2k
Cytat(viking @ 15.02.2018, 11:06:32 ) *
Ty w ogóle patrzysz na dokumentację? Masz tam pełne przykłady.


Patrzę... naprawdę się staram to wszystko pojąć...
nospor
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.
daniel2k
Cytat(nospor @ 15.02.2018, 11:18:03 ) *
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.


Przepraszam... Wiem, ze z waszego punktu widzenia wygląda to zapewne jakbym robił z siebie idiotę, lecz siedzę nad tym problemem już 3 dzień po kilka godzin, szukając rozwiązania...
  1. else {
  2.  
  3. $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  4. $result = mysqli_query($query);
  5. if($result = 0){
  6. echo "nie mozesz";
  7. }else{
  8. echo "mozesz";
  9. }
  10. }


Teraz zastosowałem polecenie query tak jak było to poprzednio wskazane, pobrałem wynik z tego zapytania za pomocą mysqli_query... Nadal kod posiada błąd którego oczywiście ja nie potrafię zobaczyć...
nospor
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 :/
daniel2k
Cytat(nospor @ 15.02.2018, 11:48:50 ) *
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 :/


  1. if (mysqli_connect_errno() != 0){
  2. echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  3. }
  4. else {
  5. $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  6. if ($result = $mysqli->query($query)) {
  7. while ($row = $result->fetch_assoc()) {
  8. if ($row = 0)
  9. echo "nie mozesz";
  10. }
  11. }
  12. else {
  13. echo "mozesz"
  14. }
  15. $result->free();
  16. $mysqli->close();


Po zostosowaniu fetch strona już kompletnie się nie ładuje... Przepraszam, że tyle sprawiam problemów, lecz naprawdę nie potrafię tego pojąć, a zależy mi strasznie... to ostatni skrypt który jest mi potrzebny...
Toshikatsu
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
daniel2k
Cytat(Toshikatsu @ 15.02.2018, 12:34:10 ) *
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

Ehh, usunąłem 2 wywołanie, kolejność jest zachowana... ponownie strona nawet się nie ładuje. Widać, że jestem zbyt głupi na to i będę musiał komuś za to zapłacić bo samemu nigdy nie dojdę do zamierzonego celu.

  1. else {
  2. $query = $polaczenie -> query("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  3. while ($row = $query->fetch_assoc()) {
  4. if ($row = 0)
  5. echo "nie mozesz";
  6. }
  7. }
viking
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.
daniel2k
Dziękuję wszystkim za pomoc, głównie za cierpliwość, udało się zakochany.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.