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

MySQL + PHP: dodawanie rekordu przez formularz – rekord pusty, brak danych z POST

09 Gru 2007 21:12 1665 11
REKLAMA
  • #1 4570767
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #2 4571220
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    dwie sprawy:
    - zamiast bezposrednio nazw danych uzywaj tablic $_GET['nazwa'] lub $_POST['nazwa']
    
    $imie=$_POST['imie']
    $nazwisko=$_POST['nazwisko']
    $adres=$_POST['adres']
    $telefon=$_POST['telefon']
    $email=$_POST['email']
    $result= mysql_query("insert into dane values ('', '$imie', '$nazwisko', '$adres', '$telefon', '$email')"); 

    - nazwy pol w formularzu musza byc takie same jak nazwy komorek tych tablic
  • #3 4574380
    Konto nie istnieje
    Konto nie istnieje  
  • #4 4575538
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    ty chyba nie zastanowiles sie nad moja poprzednia porada, co? :p
    odpowiednie uzycie tablic $_GET['nazwa'] lub $_POST['nazwa'] powinno rozaiwac problem ;)
  • REKLAMA
  • #5 4575719
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 4576507
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    podaj:
    - w jaki spsosob przekazujesz parametry z formualrza zmiany/wyszukiwania czyli method=post/get - ktore z tych dwoch uzywasz
    - adres strony do ktorej sie odwolujesz w formularzy czyli action=cos tam - jakie to cos tam jest
    - nazwy zmiennych w formularzu
    ewentualnie wklej kody html tych formularzy to sie sprawdzi samemu ;)
    wtedy postaram sie pomoc
  • REKLAMA
  • #7 4577990
    mdx
    Poziom 12  
    Posty: 23
    Pomógł: 2
    Witam. Co zwróci wykonanie poniższego kodu?

    
    $query = "SELECT * FROM dane WHERE imie LIKE '%".$wartosc."%'";
    $result = mysql_query($query, $conn) or die($query);
    echo 'no_rows: '.mysql_num_rows($result).'<br />';
    while ($record = mysql_fetch_array($result, MYSQL_ASSOC)) {
      print_r($record);
    }
    
  • #8 4578356
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    pobierze z bazy danych wiersze z tabeli 'dane', gdzie w pole 'imie' mozna wpsaowac 'wartosc'
    wysiwetli na ekranie ilosc zwroconych wierszy w pierwszej lini
    w drugiej lini wyswietli tyle napisow "Array" ile jest zwroconych wierszy
    jezeli chcesz zeby wyswietlio zawartosc tych wierszy to mosisz odwolac sie do pol tablicy $record
  • #9 4578519
    mdx
    Poziom 12  
    Posty: 23
    Pomógł: 2
    RhinoRace nie zrozumiałeś mnie. To było pytanie do autora tematu. Ja wiem co ten kod powinien zwrócić. Randmax pisze, że:
    Cytat:
    W takiej jak teraz postaci niby wyszukuje, ale wyświetlają wszystkie dane z bazy a powinno tylko te, ktore spełniają kryteria.
    Wybieram krytreium wyszukiwania imie, adres, lub nazwisko.
    Niestety nie działa zgodnie z zamierzeniem.


    Przykład, który podałem powinien zadziałać dla powyższego przypadku. Jeśli wciąż zwracane byłyby wszystkie rekordy a nie tylko te, które spełniają założone "imie LIKE $wartosc" to w następnej kolejności chciałem zapytać o strukturę tabeli, w szczególności komórek imie, adres, nazwisko.

    Gwoli ścisłości: print_r nie zwróci samych napisów Array, lecz wraz z zawartością, np:
    
    Array ( [imie] => Imie1, [nawisko] => Nazwisko1 )
    

    dla każdego odczytanego wiersza. Źródło:
    http://pl.php.net/manual/pl/function.print-r.php
  • #10 4579088
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    sorki - myslalem, ze potrzebujesz pomocy i sie podpioles pod temat ;) - odnosnie print_r nie wiedzialem, bo nigdy nie uzywalem tej funkcji
    patrzac na jego kod do edycji i wyszukiwania wszystko powinno dzialac, o ile uzyje tablic $_POST lub $_GET ;) - ale i tak najlepiej by bylo jakby wkleil kod :)
  • #11 4580368
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #12 4581649
    RhinoRace
    Poziom 17  
    Posty: 127
    Pomógł: 21
    Ocena: 1
    w obu przypadkach zapomniales o tablicy $_POST
    sprobuj dolaczyc kod w plikach php, w ktorych korzystasz z tych zmiennych:
    $kryterium=$_POST['kryterium'];
    $wartosc=$_POST['wartosc'];
    

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z dodawaniem rekordów do bazy MySQL za pomocą formularza PHP, gdzie wstawiane rekordy są puste, mimo wypełnienia formularza. Główną przyczyną jest brak użycia superglobalnych tablic $_POST lub $_GET do pobierania danych z formularza. Zalecane jest przypisanie wartości z formularza do zmiennych PHP poprzez $_POST['nazwa_pola'], a następnie wstawienie ich do zapytania SQL. Ponadto, nazwy pól w formularzu HTML muszą odpowiadać nazwom używanym w tablicach $_POST lub $_GET. W dalszej części dyskusji pojawia się problem z edycją i wyszukiwaniem rekordów, gdzie również brak jest prawidłowego pobierania parametrów z formularza przez $_POST. Wskazano konieczność poprawnego przekazywania parametrów metodą POST lub GET oraz odpowiedniego ustawienia atrybutu action w formularzu. Przykładowe zapytania SQL do aktualizacji i wyszukiwania zostały omówione, a także zwrócono uwagę na poprawne wyświetlanie wyników zapytań. Podsumowując, kluczowe jest stosowanie superglobalnych tablic do obsługi danych formularza oraz poprawne mapowanie nazw pól formularza na zmienne PHP, co rozwiązuje problem pustych rekordów oraz umożliwia prawidłową edycję i wyszukiwanie w bazie danych.
Wygenerowane przez model językowy.
REKLAMA