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...
[php,myslq] formularz dodający wpisy do bazy
-
Wojciech Jurewicz
- Przelotem

- Posty: 274
- Rejestracja: wt lip 22, 2003 11:29 pm
- Lokalizacja: Mazury
- Kontakt:
Re: [php,myslq] formularz dodający wpisy do bazy
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)...
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
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:
[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ą?
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:
Skombinowałam cos takiego przed dokonaniem INSERT:function.eregi-replace]: REG_EMPTY in...
[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
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]
[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]