Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [HTML][MySQL][PHP]formularz mysql php

Napisany przez: daniel2k 13.02.2018, 23:30:36

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ę.

Napisany przez: 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

Napisany przez: daniel2k 14.02.2018, 15:26:01

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? :/

Napisany przez: nospor 14.02.2018, 15:44:28

UPDATE tabela SET pole = pole -1 WHERE user=jakiesid czy inne id po czym indentyfikujesz uzytkownika

Napisany przez: daniel2k 15.02.2018, 01:26:40

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 = http://www.php.net/mysql_connect('localhost', 'root', '123', 'qqq');
  2. $ilosc_prob = http://www.php.net/mysql_query("SELECT pozostale FROM uzytkownicy WHERE id='.$_SESSION['id']'");
  3. if($ilosc_prob == 0){
  4. http://www.php.net/echo "Nie możesz"
  5. }else{
  6. http://www.php.net/echo "możesz"
  7. }


Kazdy uzytkownik ma unikalne ID generowane przy rejestracji, dlatego użyłem .$_SESSION['id']
pozostale - kolumna odpowiedzialna za ilosc prob

Napisany przez: topcio 15.02.2018, 02:42:41

Wpisz tak

  1. '{$_SESSION['id']}'

Napisany przez: daniel2k 15.02.2018, 03:47:31

Cytat(topcio @ 15.02.2018, 02:42:41 ) *
Wpisz tak
  1. '{$_SESSION['id']}'


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

<?php

kod

?>

Napisany przez: viking 15.02.2018, 06:52:41

Id nie jest stringiem. Poza tym używasz rozszerzenia mysql które wylecialo z php7.

Napisany przez: daniel2k 15.02.2018, 07:33:59

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. http://www.php.net/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. http://www.php.net/echo "Nie możesz";
  10. }else{
  11. http://www.php.net/echo "możesz";
  12. }
  13. }
  14. ?>

Napisany przez: viking 15.02.2018, 09:46:29

Na początek usuń wszystkie @ z kodu

Napisany przez: daniel2k 15.02.2018, 09:51:07

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. http://www.php.net/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. http://www.php.net/echo "Nie możesz";
  10. }else{
  11. http://www.php.net/echo "możesz";
  12. }
  13. }
  14. ?>


Zrobiłem to o co prosiłeś, naprawdę nie wiem gdzie leży błąd...

Napisany przez: 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...

Napisany przez: daniel2k 15.02.2018, 10:10:01

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.

Napisany przez: 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

Napisany przez: daniel2k 15.02.2018, 10:26:22

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. http://www.php.net/echo '<p>Wystąpił błąd połączenia: ' . mysqli_connect_error() . '</p>';
  5. }
  6. else {
  7. $ilosc_prob = http://www.php.net/mysql_result("SELECT kamien FROM uzytkownicy WHERE user = '{$_SESSION['user']}'");
  8. if($ilosc_prob == 0){
  9. http://www.php.net/echo "Nie możesz";
  10. }else{
  11. http://www.php.net/echo "możesz";
  12. }
  13. }
  14. ?>

Napisany przez: 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

Napisany przez: daniel2k 15.02.2018, 10:44:53

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. http://www.php.net/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 = http://www.php.net/mysql_result($query,"{$_SESSION['user']}","id");
  10. if($ilosc_prob == 0){
  11. http://www.php.net/echo "$ilosc_prob";
  12. }
  13. else{
  14. http://www.php.net/echo "możesz";
  15. }
  16. }
  17. ?>

Napisany przez: 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

Napisany przez: daniel2k 15.02.2018, 11:02:16

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. http://www.php.net/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. http://www.php.net/echo "nie mozesz";
  11. }
  12. else{
  13. http://www.php.net/echo "możesz";
  14. }
  15. }


Ehh, czuje, ze jestem juz tak blisko...

Napisany przez: viking 15.02.2018, 11:06:32

Ty w ogóle patrzysz na dokumentację? Masz tam pełne przykłady.

Napisany przez: daniel2k 15.02.2018, 11:09:53

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ąć...

Napisany przez: 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.

Napisany przez: daniel2k 15.02.2018, 11:29:28

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. http://www.php.net/echo "nie mozesz";
  7. }else{
  8. http://www.php.net/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ć...

Napisany przez: 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 :/

Napisany przez: daniel2k 15.02.2018, 12:25:23

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. http://www.php.net/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. http://www.php.net/echo "nie mozesz";
  10. }
  11. }
  12. else {
  13. http://www.php.net/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...

Napisany przez: 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

Napisany przez: daniel2k 15.02.2018, 12:44:38

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. http://www.php.net/echo "nie mozesz";
  6. }
  7. }

Napisany przez: viking 15.02.2018, 13:11:55

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.

Napisany przez: daniel2k 15.02.2018, 14:17:45

Dziękuję wszystkim za pomoc, głównie za cierpliwość, udało się zakochany.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)