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

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
AO
Posty: 17
Rejestracja: ndz mar 02, 2003 11:17 am

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

Post 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...
Wojciech Jurewicz
Przelotem
Przelotem
Posty: 274
Rejestracja: wt lip 22, 2003 11:29 pm
Lokalizacja: Mazury
Kontakt:

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

Post 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)...
AO
Posty: 17
Rejestracja: ndz mar 02, 2003 11:17 am

eregi_replace

Post 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ą?
BzikOS
Posty: 2
Rejestracja: pt wrz 05, 2003 11:07 pm
Lokalizacja: Starachowice

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

Post 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]
ODPOWIEDZ