TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Pytanie o php/mysql - jak wprowadzic dobrze date do bazy danych , kubazzz 26/01/07 20:35 W formularzu jest przekazywana data w formacie DD-MM-YYYY jako zmienna tekstowa.
Nie wiem jak poprawnie wprowadzic taka date do bazy mysql [tam jest format YYYY-MM-DD].
Potem przy odczycie z bady danych ta data musi znowu byc przeksztalcona na format DD-MM-YYYY.
mam takie zapytanie
INSERT INTO tabela (title, data) VALUES (' ". $_POST['tytul'] ." ' , <pustka> )
Nie rozumiem tego w ogole jak to przeksztalcic, a wszystkie kursy php sa do bani bo sie rozwodza po drodze na milion tematow ktore mnie nie interesuja.
Dlatego prosze o jakies wytlumaczenie co mam zrobic, jak i dlaczego wlasnie tak.SM-S908 - po pierwsze , Grocal 26/01/07 20:54
na Boga nigdy nie wrzucaj danych z $_POST $_GET bezposrednio do zapytan sql. Ktos moglby w te zmienna "wstrzyknac" kawalek kodu sql i dupa blada. Tak wiec zapamietaj swieta zasade programisty php - nie ufaj uzytkownikom i sprawdzaj wszystko co sie wprowadza z zewnatrz. W przypadku danych wpisywanych do zapytan - zawsze je "escape'uj".
Co do zamiany daty na format zgodny z mysql, to stworz sobie dwie funkcje np date_html2mysql($pDate) i date_mysql2html($pDate), gdzie pobierzesz dane, sprawdzisz, zamienisz i wyplujesz na wyjsciu w odpowiednim formacie, np tak:
function date_html2mysql($pDate)
{
if (ereg ("([0-9]{2})-([0-9]{2})-([0-9]{4})", $pDate, $regs))
{ return $regs[3].'-'.$regs[2].'-'.$regs[1]; } else
return '';
}Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - hmm , kubazzz 26/01/07 21:08
dokladniej to ja mam to zapisane tak :
$add = "INSERT INTO $tabela ...."
a potem
mysql_query ($add)
zasadniczo skrypt ma wczesniej weryfikacje hasla, ktore znam tylko ja.
oczywiscie strzezonego Pan Bog strzeze wiec i chetnie bym to ulepszyl, ale nie do konca rozumiem co znaczy escapeowac:DSM-S908 - hmm , _oLo_1984 26/01/07 21:18
zapewne grocalowi chodzi, o filtrowanie zmiennych z $_POST i $_GET. Warto sie zapoznać z tematem, bo chodzi o bezpieczeństwo. Proponuje poczytać na temat mysql_escape_string(), addslashes() oraz co to magic_quotes.awake
- hmm , _oLo_1984 26/01/07 20:57
można to zrobić na kilka sposobów - 2 najprostrze to zmień format daty w formularzu lub jezeli chodzi o bierząca date to ustaw sobie date("Y-m-d"); mozesz też mienić typ pola w bazie na varchar i tam trzymać datę w formacie, który cie interesuje.
Kup sobie jakaś porządną ksiązke do php&mysql ! Nie zaczaisz czytając jedynie darmowe kursy na necie. Zresztą tu potrzebna jest logika programowania - na pałe nic nie zrobisz.
Proponuje zaczac odwiedzac forum.php.pl
pozdrawiamawake - hmm , kubazzz 26/01/07 21:04
mam ksiazke calkiem porzadna, ale kurde 80% rzeczy mnie nie interesuje i sie mecze analizujac przyklady.
ogolnie jestem bystry, mialem stycznosc z programowaniem, ale z php niewiele, mysql tez dopiero poznaje.
Nie mam czasu przerobic calej ksiazki ktora ma 800 stron. Bede sie w to stopniowo zaglebial, ale chwilowo potrzebuje prostych rozwiazan.
Mam problemy ze skladnia i z pewnymi niansami.SM-S908 - aha , kubazzz 26/01/07 21:32
varchar w bazie nie bardzo mi pasuje.SM-S908 - ... , _oLo_1984 26/01/07 21:44
ciekawym rozwiązaniem jest funkcja, którą kolega wyżej ci napisał - wykorzystaj ją.
ps. czemu varchar w bazie niebardzo pasuje ?awake - sortowanie mu siadzie , Grocal 26/01/07 21:47
DD-MM-YYYY ciezko jest posortowac, juz latwiej varchar YYYY-MM-DDNa pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - sorry , Grocal 26/01/07 21:48
sortowanie kubazzowi siadzie... przepraszam, ze mowienie w 3 osobie...Na pewno, na razie, w ogóle...
Naprawdę, naprzeciwko, stąd...
Ortografia nie gryzie! - wlasnie , kubazzz 26/01/07 22:02
ja zasadniczo mam inne pole kluczowe, ale potrzebuje tez sortowania po dacie.
dlatego wole juz trzymac to jako date w bazie danych.SM-S908 - No kurde , pachura 27/01/07 00:03
"Miałeś styczność z programowaniem" a nie umiesz napisać prostej funkcji przekształcającej string YYYY-MM-DD na DD-MM-YYYY i odwrotnie? No to porywasz się z motyką na słońce.
W tabeli trzymaj pole typu date, zaś samą wartość przekształcaj przed wysłaniem i po odczytaniu z bazy, tak jak napisał Grocal. Dla ułatwienia, możesz zastosować zwykłe substr (wycinanie fragmentu stringa) zamiast wyrażeń regularnych.- juz wiem , kubazzz 27/01/07 00:17
jak to zrobic.
algorytm nie jest problemem, tylko probleme jest skladnia php i mysql. sie okazalo, ze nie ma wiekszego problemu. format wpisywania w formularzy jest mi obojetny wiec zostanie taki jaki przyjumje mysql YYYY-MM-DD, a odczyt z bazy danych to juz jest DATE_FORMAT i po klopocie.
Ale to nie wisi w powietrzu, trzeba sie tego dowiedziec:D A ksiazka nie odpowie dopoki jej calej nie przeczytasz;)SM-S908
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|