MaryonD
31.10.2012, 10:21:33
Witam. Mój formularz dopuszcza puste pola w formularzu. Jeśli takie wystąpią chciałbym aby do bazy dodawał rekord NULL.
Problem w tym, że kolumny są typu UNIQUE i za drugim razem już nie pozwala mi pozostawić pustego pola w formularzu. Z góry dziękuje!
..
$pole=$_POST['pole'];
$pole2=$_POST['pole2'];
$pole3=$_POST['pole3'];
..
$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( '$pole', '$pole2', '$pole3' )");
if($ins) echo "Rekord został dodany poprawnie";
else echo "Błąd nie udało się dodać nowego rekordu.";
mmmmmmm
31.10.2012, 10:47:52
Bo nie wstawiasz tam NULLi, tylko wartości puste.
if(isset($_POST['pole']))$pole="'".$_POST['pole']."'";else
$pole='Null'; if(isset($_POST['pole2']))$pole2="'".$_POST['pole2']."'";else
$pole2='Null'; if(isset($_POST['pole3']))$pole3="'".$_POST['pole3']."'";else
$pole3='Null';
//...
$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3 )"); if($ins) echo "Rekord został dodany poprawnie"; else echo "Błąd nie udało się dodać nowego rekordu.";
Poza tym nie ma typu UNIQUE
MaryonD
31.10.2012, 11:13:12
Zrobiłem według zaleceń, ale efekt mam ten sam. Czyli wstawia mi teraz puste pole do tabeli, ale drugi raz już na to nie pozwoli.
CO do typu UNIQUE to chodzi mi o to, że w tabeli nie mogą mi sie powtarzać dwa takie same rekordy z formularza, OPRÓCZ właśnie tych pól pustych czy NULL, które powstają z pustych niewypełnionych pól w formularzu.
Damonsson
31.10.2012, 12:03:30
Pamiętaj, że tego NULL'a musisz przesyłać bez cudzysłowów.
INSERT INTO towary (pole, pole2, pole3) VALUES ( 'wypelnione', 'wypelnioneinaczej', NULL )
MaryonD
31.10.2012, 12:26:23
Po zmianach mam coś takiego:
if(isset($_POST['pole'])) {
$pole=NULL;
}
else {
$pole=$_POST['pole'];
}
var_dump($pole); //Tutaj ładnie pokazuje mi NULL (nie jako string, tylko właściwie jako pusty rekord)
$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3)"); //Jeśli dam w ten sposób bez ' ' to skrypt nie działa.
Nie moge dać na sztywno VALUES ( NULL, $pole2, $pole3) ponieważ nie zawsze to pole jest puste, zależy to od wpełnienia formularza.
IProSoft
31.10.2012, 13:03:45
$ins = mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( ".( empty($pole) ?
'NULL' : "'".$pole."'" ).", $pole2, $pole3)");
I nie używaj @ przy czymkolwiek, jeśli jest błąd, napraw go.
MaryonD
31.10.2012, 13:38:31
Super! Dzięki
mmmmmmm
31.10.2012, 18:45:42
Cytat(MaryonD @ 31.10.2012, 12:26:23 )

$ins = @mysql_query("INSERT INTO towary (pole, pole2, pole3) VALUES ( $pole, $pole2, $pole3)"); //Jeśli dam w ten sposób bez ' ' to skrypt nie działa.
A teraz się cofnij i zobacz, co ci napisałem.
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.