Strona 1 z 1

[php,myslq] formularz dodający wpisy do bazy

: ndz wrz 14, 2003 1:56 pm
autor: AO
Dla ułatwienia sobie pracy zrobiłam formularz za pomocą którego dokonuję wpisów do bazy do kilku tabel jednocześnie.
Ale okazało się, że jest jeden problem i nie wiem jak to ugryźć:


Gdy pozostawiam niektóre pola formularza puste (a różnie to przecież bywa - nie zawsze ma się wszystkie dane od razu), skrypt co prawda nie wpisuje mi niczego do bazy w tych polach, ale niweczy w nich defaultowe NULL, co jest katastrofalne w skutkach przy wyświetlaniu danych (skrypty wyszukujące bazują w klauzuli WHERE na wartości NULL)...

Jak to zrobić w skrypcie php, żeby - gdy pole w formularzu pozostawiam puste - skrypt nie dokonywał żadnych ingerencji w bazie w tych polach?

Teraz skrypt wygląda tak:

[php]<?php
$zapytanie = "INSERT INTO autorzy(autor_id, tytul_naukowy, imie, nazwisko, adres, email, oficjalki_nt_autora, data_wpisu) VALUES (NULL, '$tytul_naukowy', '$imie', '$nazwisko', '$adres', '$email', '$oficjalki_nt_autora', CURDATE())";
?>[/php]

No i nie wiem, co dalej...
Proszę o jakieś wskazówki...

Re: [php,myslq] formularz dodający wpisy do bazy

: ndz wrz 14, 2003 2:01 pm
autor: Wojciech Jurewicz
Użyj polecenia eregi_replace() na zapytaniu i podmień NULL na pusty ciąg.

Albo buduj zapytania w taki sposób, że jeżeli z formularza nie nadchodzą żadne dane do wpisania w danym polu, to wtedy je pomijaj (w zapytaniu)...

eregi_replace

: ndz wrz 14, 2003 3:01 pm
autor: AO
To pierwsze, to dobra myśl!

Co do budowania zapytań tak, by pomijały puste wpisy, to własnie próbowałam, ale mi nie wychodzi.
Nie wiem jak to zrobić...

Niestety funkcja ta niechce przyjąć pustego ciagu...
Przy zastosowaniu:
[php]<?php
eregi_replace('', 'NULL', $imie);
?>[/php]
dostaję komunikat:
function.eregi-replace]: REG_EMPTY in...
Skombinowałam cos takiego przed dokonaniem INSERT:
[php]<?php
if ($tytul=='')
$tytul='NULL';
?>[/php]

Działa, ale wyłacznie dla pól tekstowych.
To samo nie udaje się z polami daty, na przykład takie polecenie:

[php]<?php
if ($data_tekstu=='')
$data_tekstu='NULL';
?>[/php]

nic nie daje: do bazy dopisuje się 0000-00-00

Jak sobie poradzić z tą datą?

Re: [php,myslq] formularz dodający wpisy do bazy

: czw wrz 18, 2003 12:05 am
autor: BzikOS
Polecam prostsze rozwiązanie:

[php]<?php
$zapytanie = "INSERT INTO autorzy(autor_id, tytul_naukowy, imie, nazwisko, adres, email, oficjalki_nt_autora, data_wpisu) VALUES (NULL, '$tytul_naukowy', '$imie', '$nazwisko', '$adres', '$email', '$oficjalki_nt_autora', CURDATE())";

$zapytanie = str_replace("''", "NULL", $zapytanie);
?>[/php]