logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PHP/MySQL - formularz nie zapisuje do bazy - co robię nie tak?

Hemikalny 02 Mar 2016 09:23 2256 22
REKLAMA
  • #1 15487062
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Witam,

    co robię nie tak ??

    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 15487379
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Nie odbierasz danych z formularza.
    Od razu sprawdzasz wartość ['send'] ale nie bardzo jest deklaracja, co to oznacza. Może miałeś się odwoływać do tablicy $_POST?
    Masz:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod
    a powinieneś mieć :
    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #3 15487437
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    No ok ale jak mam $_POST to dostaje komunikat

    Undefined index: send in C:\xampp\htdocs\CDR\register.php on line 7

    Używam PHP 5.6
  • #4 15487478
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    A co jest obecnie w 7-ej linii twojego kodu?
  • #5 15487484
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    if ($_POST['send'] == 1) {
  • #6 15487495
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    To zmień to na :
    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #7 15487525
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    teraz to dopiero wypluł błędów ...

    PHP/MySQL - formularz nie zapisuje do bazy - co robię nie tak?

    Błęd w kody.

    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #8 15487559
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Jakby kolega czytał, co się do kolegi pisze, to uniknęlibyśmy tej całej niepotrzebnej konwersacji.
    Dla ułatwienia, zaznaczyłem na czerwono, coś co koledze umknęło w poprzednich postach:
    PHP/MySQL - formularz nie zapisuje do bazy - co robię nie tak?
  • #9 15487572
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Oj pardom ...

    Ale i tak są dwa błędy w :

    Notice: Undefined index: login in C:\xampp\htdocs\CDR\register.php on line 9

    Notice: Undefined index: pass in C:\xampp\htdocs\CDR\register.php on line 10

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CDR\register.php on line 16

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\CDR\register.php on line 17


    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #10 15487604
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    Notice: Undefined index: login in C:\xampp\htdocs\CDR\register.php on line 9
    Notice: Undefined index: pass in C:\xampp\htdocs\CDR\register.php on line 10

    te błędy wynikają z tego, że nie przekazujesz z formularza zawartości opisanej jaki 'login' i 'pass'.

    W pierwszym poście i kodzie tam zawartym, pokazałeś taki formularz:
    Kod: HTML, XML
    Zaloguj się, aby zobaczyć kod

    A nigdzie nie pobierasz danych do pól, które generują w/w błędy; stąd problem.
    Możesz użyć isset jak w przypadku ukrytej wartości 'send', ale to nie zmieni faktu, że zapytania które używają wartości 'login' i 'pass' (mówię o zapytaniach SQL) nie wykonają się poprawnie, ponieważ zmienna $login, zawsze będzie pusta.
  • #11 15487624
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Nie rozumiem dlaczego zmienna $login zawsze będzie pusta? Przecież wybieram login z listy ... No i dlaczego nie definiuje tylko dwóch pierwszych zmiennych a resztę tak ?
    Jak ma wyglądać zapis tej zmiennej

    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));

    Z użyciem isset ?? Bo nie ogarniam.


    Czyli muszę nadać nazwę imput'owi i przyporządkować ją do każdej zmiennej ?
  • REKLAMA
  • #12 15487636
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    Nie rozumiem dlaczego zmienna $login zawsze będzie pusta? Przecież wybieram login z listy ... No i dlaczego nie definiuje tylko dwóch pierwszych zmiennych a resztę tak ?
    Zmienna $login zawsze będzie pusta, bo nie przekazujesz takiej zmiennej za pomocą formularza. Masz w formularzu przekazywane pola o nazwach : pass_v, email, email_v oraz send.
    Nie ma natomiast nic na temat 'login' i 'pass'.
    Hemikalny napisał:
    jak ma wyglądać zapis tej zmiennej
    $login = mysql_real_escape_string(htmlspecialchars($_POST['login']));
    Z użyciem isset ?? Bo nie ogarniam.

    Możesz zrobić coś podobnego do tego co zrobiliśmy z 'send';
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    Dodano po 7 [minuty]:

    Hemikalny napisał:
    Czyli muszę nadać nazwę imput'owi i przyporządkować ją do każdej zmiennej ?
    Musisz te dane przekazać do skryptu z "wnętrza" formularza. Albo jako input-y, albo, jeżeli już je gdzieś wcześniej pobrałeś, jako hidden (podobnie jak 'send').
  • #13 15487655
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    arnoldziq napisał:
    Kod: php [rozwiń] [zaznacz wszystko]
    if ( isset($_Post["login"]) ){
    $login = mysql_real_escape_string(htmlspecialchars($_POST["login"]));
    } else {
    $login='';
    }


    A w cudzysłów zmiennej $login mogę wstawić zmienną odpowiadającą za listę rozwijaną ?
  • #14 15487659
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    A w cudzysłów zmiennej $login mogę wstawić zmienną odpowiadającą za listę rozwijaną ?
    Oczywiście, jeżeli ta lista będzie się zawierała w formularzu i będzie przybierała jako odpowiednie wartości dane, które są zapisane w bazie, to jak najbardziej.
  • #15 15487667
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Okey bo mam jeszcze drugi plik gdzie znajduje się ta lista rozwijana wygląda to tak :
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    Czyli kod wyglądał by tak ???

    if ( isset($_POST["login"]) ){
    $login = mysql_real_escape_string(htmlspecialchars($_POST["login"]));
    } else {
    $login='$statementw';
    }
  • REKLAMA
  • #16 15487710
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    Czyli kod wyglądał by tak ???
    No nie do końca. Ten 'select' musi się znajdować wewnątrz formularza, jeżeli chcesz go przekazać do skryptu. No i przy takim zapisie, to będziesz przekazywał wartość ID a nie LOGIN z bazy. Także, brakuje identyfikatora tego 'select-a' jako pola przekazującego dane do zmiennej 'login'.

    Poza tym, nie jestem przekonany, czy udostępnianie w ten sposób, otwartym tekstem, loginów użytkowników tej strony, to jest dobry pomysł :/
    Czemu użytkownicy nie mogą wprowadzać swojego loginu ręcznie, przecież i tak 90% używa "auto wypełniania".
  • #17 15487744
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    No tak sobie zażyczył administrator danych żeby tylko on mógł wprowadzać informacje do bazy a oni tylko mieli wybór możliwych loginów... No tylko ta lista rozwijana jest zaciągana z innego pliku.
  • #18 15487807
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    No tak sobie zażyczył administrator danych żeby tylko on mógł wprowadzać informacje do bazy a oni tylko mieli wybór możliwych loginów... No tylko ta lista rozwijana jest zaciągana z innego pliku.
    No dobra, bo teraz się pogubiłem.
    To albo tworzysz formularz rejestracyjny, dla administratora danych, ale wtedy koniecznie trzeba dać możliwość dodania nowego użytkownika (co za tym idzie lista jest bez sensu).
    Albo tworzysz formularz logowania z pre-definiowaną listą użytkowników. Musisz się zdecydować. Nie ma możliwości zawrzeć tych dwóch opcji w jednym formularzu.
  • #19 15487822
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Tworzę formularz logowania z rozwijaną listą użytkowników. Gdzie będzie jedno puste pole w loginie na które Administrator będzie wpisywał swój login i w polu hasło, hasło. Po zalogowaniu przekieruje go do formularza wprowadzenia danych nowego użytkownika. Na tym formularzu po wprowadzeniu loginu czyli imienia i nazwiska hasła oraz opcjionalnie email'a i kliknięciu zapisz zostaną wprowadzone nowe dane do bazy.
  • #20 15487889
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Hemikalny napisał:
    formularz logowania z rozwijaną listą użytkowników. Gdzie będzie jedno puste pole w loginie na które Administrator będzie wpisywał swój login i w polu hasło, hasło.
    Ciekaw jestem, jak kolega chce to zrealizować ? :/
  • #21 15487893
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    No ewentualnie może być login "Administrator" do wyboru i po wpisaniu hasła przeniesie go do innego panelu niż zwykłego użytkownika.

    Teraz mi zależy na tym żeby wprowadzone dane w tym formularzy zapisywał w odpowiednim polu w bazie.

    Bazę zgodną z oznaczeniami mam , mam też kod zapisujący do bazy tylko napisałem go w PDO i ciężko mi to połączyć ze zwykłym PHP i z ochroną. Jak widać.
  • #22 15487901
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    No, to to jest bardzo prosto zrobić.
    1. Formularz
    2. Login z listy + administrator
    3. Miejsce na hasło
    4. Przycisk 'logowanie'
    5. Koniec formularza.

    Można wykorzystać dużą część tego skryptu który zamieściłeś, żeby sprawdzić czy hasło się zgadza dla użytkowników i dla admina. Jeżeli to admin i hasło pasuje, to przekierowanie na stronę z formularzem rejestracyjnym.
  • #23 15487907
    Hemikalny
    Poziom 9  
    Posty: 144
    Ocena: 5
    Okey tak czy owak jutro podejmuję dalszą walkę. Na dziś już mi wystarczy....

    No ja mam już wszystkie pod strony porobione tylko cześć przeszczepów część swoja własna inwencja, dlatego próbuję to wszystko zgrać i scalić. Nie mam aż takiej wiedzy żeby taki kod napisać samemu i radzę sobie jak mogę dużo się ucząc przy okazji. Dopasowuje wszystko po kolei i zacząłem od podstrony




    register.php
    Kod: PHP
    Zaloguj się, aby zobaczyć kod


    I jak to teraz widzisz ?

Podsumowanie tematu

✨ Użytkownik ma problem z zapisywaniem danych z formularza do bazy danych w PHP/MySQL. W kodzie występują błędy związane z nieprawidłowym odwołaniem do tablicy $_POST oraz brakiem odpowiednich pól w formularzu. Użytkownicy sugerują poprawki, takie jak użycie isset() do sprawdzenia, czy zmienne są ustawione, oraz dodanie odpowiednich pól do formularza, aby uniknąć błędów "Undefined index". Wskazówki obejmują również konieczność umieszczenia listy rozwijanej w formularzu oraz zapewnienie, że wszystkie wymagane dane są przekazywane do skryptu. Użytkownik planuje stworzyć formularz logowania z rozwijaną listą użytkowników oraz polem dla administratora.
Wygenerowane przez model językowy.
REKLAMA