Skocz do zawartości

[php/mysql] dodawanie danych do bazy


camelleon

Rekomendowane odpowiedzi

Mam formularz, dosc duzy ktory pobiera dane. A nastepnie wprzucam te dane do bazy.

Wszystko jest fajnie dopoki wszystkie pola sa wypalnione.

I tu zaczynaja sie schody...

Jak dodawac do dane z formularza ktory nie zostal do konca wypelniony?

Tzn ja robie tak

if ($zm1 && $zm2 && ... $znN) {
$query = "INSERT INTO ....

i teraz jak nie mam podanej jednej ze zmiennych to nie zrobi inserta

muslalem ze jak zrobie

$zm1 == null;
$zm2 == null;

to pomoze ale niestety...

Jak Wy to rozwiązujecie?

[bilety lotnicze] [strony www poznań]

"No se ganó Zamora en una hora"

Masz wolne domeny? Zaparkuj je! i zarabiaj!

Odnośnik do komentarza
Udostępnij na innych stronach

Ja w swoich skryptach robię to tak. Gdy robię warunek przed dodaniem (if) to używam tam tylko niezbędnych zmiennych. Te, bez których mogę się obejść, wrzucam w INSERTA i jak nie są zdefiniowane, to poprostu powstaje puste pole w tabeli. Mam nadzieję, że nie zamieszałem za bardzo, pozdrawiam.

Dała matka rozum? To kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

Po co ci IF jesli i tak form moze byc nie pelny ?

niektore musza byc podane

czyli zrobic w if te zmienne ktore musza byc wypelnione w formularzy, a reszte juz w insercie i jak zmienna bedzie pusta to wstawi poprostu null

thx

:hello:

[bilety lotnicze] [strony www poznań]

"No se ganó Zamora en una hora"

Masz wolne domeny? Zaparkuj je! i zarabiaj!

Odnośnik do komentarza
Udostępnij na innych stronach

Moim zdaniem powinienes napisac funkcje ktora sprawdzi wszystkie dane wprowadzone do formularza. Dokladniej mowiac analizujesz po kolei kazda zmienna sprawdasz czy nie jest pusta jesli tak to albo wywalasz blad i cofasz usera do formularza (jesli to pole ma byc wypelnione) albo przypisujesz zmiennej wartosc domyslna, jesli pole nie jest puste to sprawdzasz poprawnosc danych (typ danych, zawartosc, ilosc znakow itd...), warto jeszcze przemielic to przez strip_tags i dopiero na sam koniec jak wszystko zweryfikujesz to dodajesz do bazy.

Internetowy System Reklamowy to połączenie katalogu stron, katalogu firm, katalogu sklepów oraz ogłoszeń drobnych i artykułów.
Odnośnik do komentarza
Udostępnij na innych stronach

mnie sie wydaje, ze powinieneś w bazie danych przy danych kolumnach, które mogą być puste usunąć warunek "NOT NULL"

w tym momencie mając puste te zmienne w bazie danych bedzie po prostu puste pole.

a jak nie to coś jest nie OK z kodem, bo taki kod:

$sql="INSERT INTO tabela SET zm1='".$zm1."',zm2='".$zm2."',...";
$res=mysql_query($sql);

powinien bez problemu przejsc.

Odnośnik do komentarza
Udostępnij na innych stronach

Insert do tabeli to rzecz moim zdaniem praktycznie nie zależna od formularza. Najbardziej skomplikowanym modułem jest zazwyczaj validator, czyli fragment skryptu odpowiedzialny za wypełnienie porawnych danych.

W dużym skrócie schemat wygląda tak:

+-----------+    / -------------------\  TAK   +---------------+
| formularz |-->< czy dane poprawne ?  >------>|INSERT DO BAZY |
+-----------+    \ ___________________/        +---------------+
    ^                     | NIE
    +---------------------

Trudno zmieścić mi tutaj prawidłowy przykład. Ale generalnie można skorzystać z półproduktów dostępnych w sieci. Potrzebujesz też dobrego template do formularza w stylu (to tylko fragment)

...
<input id="email" name="emial" value="<?php echo $email ?>">
<?php if ($error['email']) { ?><div class="error"> nieprawidłowo podany e-mial </div><?php } ?>
..

czyli takiego który w przypadku błedu zachowa dotychczas wprowadzone wartości i pokaże tam gdzie trzeba informację o błędzie.

Przykładów szukaj na www.phpfreaks.com polecam genialny dział tutorials i oczywiście gotowce w stylu: https://www.phpfreaks.com/script/view/654.php

Odnośnik do komentarza
Udostępnij na innych stronach

1. Tak jak inni pisali - sprawdzanie poprawności wypełnienia pól w formularzu

2. Jeżeli nie chcesz się w to bawić, to pole w bazie daje możliwość ustawienia parametru domyślnej wartości:

nazwa_pola TYP_POLA() DEFAULT 'domyślny tekst jeżeli nie wypełnione'

Mając zdefioniowaną wartość domyślną - zawsze przy nie wypełnionym polu będzie w bazie ta wartość.

kcs_kataloog_info.gif - katalog stron KCS promocja stron - dodaj ciekawą stronę

pks-katalog.gif - katalog stron PKS interesujące strony - dodaj interesującą stronę

Najlepsze miejsce dla e-mieszkańca powiatu piaseczyńskiego to serwis e-piaseczno i okolice

Odnośnik do komentarza
Udostępnij na innych stronach

wielkie dzieki za pomoc

po raz kolejny okazalo sie ze to najlepszejsze forum :placze: :lizus:

udalo mi sie zrobic calkiem fajny formularz ktory sprawdza poprawnosc danych

strip_taguje je

wyrzuca komunikaty o bledach

i zapisuje do bazy

thx

p.s. zastanwialem sie czy nie przepuscic danych przez strpislashes?

[bilety lotnicze] [strony www poznań]

"No se ganó Zamora en una hora"

Masz wolne domeny? Zaparkuj je! i zarabiaj!

Odnośnik do komentarza
Udostępnij na innych stronach

strpislashes zawsze jest przydatne - wtedy wiesz ze nikt ci glupot nie wrzuci do formularza :placze: zabezpieczysz sie bardziej.

kcs_kataloog_info.gif - katalog stron KCS promocja stron - dodaj ciekawą stronę

pks-katalog.gif - katalog stron PKS interesujące strony - dodaj interesującą stronę

Najlepsze miejsce dla e-mieszkańca powiatu piaseczyńskiego to serwis e-piaseczno i okolice

Odnośnik do komentarza
Udostępnij na innych stronach

A ja w jednej ksiażce wyczytałem fajną rzecz, a mianowicie:

// Funkcja usuwaj±ca znak '/' i obcinaj±ca dane wprowadzone w formularzu.
function escape_data ($data) { 
global $dbc;
if (ini_get('magic_quotes_gpc')) {
 $data = stripslashes($data);
}
return mysql_real_escape_string (trim ($data), $dbc);
} // Koniec sekcji funkcji escape_data().
?>

..a dane z formularza zawsze też można przepuścic przez wyrażenia regularne, ale to juz wyższa szkoła jazdy :]

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Aha i dla utrwalenia obecnie obowiązkowo przy danych zewnętrznych definujemy skąd są pobierane i jaką metadą

czyli w przypadku formularza jest to $_POST['nazwa_zmiennej'] lub $_GET['nazwa_zmiennej'] i nie chodzi tu o czystoś kodu tylko o konieczność.

Kto nie wierzy niech sprawdzi jak działająjego stare skrypty na PHP 5.0 !

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności