ugrás a tartalomhoz

Mi a hiba? (Egyszerű kérdés)

codefreak · 2008. Nov. 19. (Sze), 23.07
Sziasztok!

Most kezdtem a php-zást és Date-ként szeretnék bevinni az adatbázisba egy dátumot.
A lecsupaszított kód:

$birthyear = $_POST["birthyear"];
$birthmonth = $_POST["birthmonth"];
$birthday = $_POST["birthyear"];
$birthdate = $birthyear . "-" . $birthmonth . "-" . $birthday;

$sql = "INSERT INTO users(BirthDate)
VALUES ('$birthdate')";

Erre folyamatosan 0000-00-00 értéket ír a db-be. Ha konkrét dátumot adok meg, akkor műxik. Meg lehet valahogy oldani, vagy csináljak külön oszlopot minden értéknek?
 
4

Több sebből vérzik

Poetro · 2008. Nov. 20. (Cs), 14.03
Legelőször is rakj bele valami védelmet, különben valaki majd szépen kipucolja a tábláidat, vagy akár még rosszabbat csinál.
A felhasználótól kapott adatokról mindig feltételezzük, hogy veszélyes, ezért ennek megfelelően kezeljük, mondjuk megnézzük hogy szám-e, vagy alapból számmá konvertáljuk.
A másik dolog, hogy nem árt megvizsgálni pontosan mit is küld el a form, lehet hogy nem is számot küld, pedig te számot vársz. Próbáld meg vhogy debuggolni, hogy mit küldött el a form, lehet ott van a probléma.

// sprintf-el (%d) számmá alakítjuk a bejövő adatokat, mint minimális védelem
$sql = sprintf("INSERT INTO users (BirthDate) VALUES ('%d-%d-%d')", 
  $_POST["birthyear"], $_POST["birthmonth"], $_POST["birthyear"]);
szerk:
$sql = sprintf("INSERT INTO users (BirthDate) VALUES ('%d-%d-%d')", 
  $_POST["birthyear"], $_POST["birthmonth"], $_POST["birthday"]);
1

adattípus

safipeti · 2008. Nov. 20. (Cs), 02.09
Szia!

Én is kezdőnek titulálom magam, szerintem nézdd meg, hogy az adatbázisban a BirthDate oszlop milyen adattípus. Szerintem, timestamp vagy date (bocsánat a pontatlanságomért) a formájából ítélve, te pedig gyakorlatilag stringet próbálsz bevinni. Nem teszteltem, de ez az ötletem.
2

logikaazvajonmi

efpe · 2008. Nov. 20. (Cs), 02.46
Hmm, ha a $birthday erteke a szuletesi ev, ami 4 karakter, akkor ugye ertelmezheto a hiba. Irasd ki a $birthdate valtozot, mielott dbbe tenned. Amugy sql log es tarsai. A vizsgalathoz a fent emlitetten kivul meg valami regexp vagy is_numeric() es strlen() is jo lehet. Kinek mi...
3

((: 3.sor

szabo.b.gabor · 2008. Nov. 20. (Cs), 11.34
valamint az sem baj, ha a napnak nem az év értékét adod meg, de ez már csak formaság :D
5

Ezer köszönet

codefreak · 2008. Nov. 22. (Szo), 21.25
Helló

Nagyon köszönöm a helpet, már így este 11kor nem láttam a $birtday = $_POST['birthYEAR'] sort.

Köszönöm Poetro, hogy felhívtad a figyelmemet! Később akartam foglalkozni a validálással, de mégiscsak jobb előre gondolkozni.

Még1Xer köszönöm mindenkinek!

CodeFreak