Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Baza danaych nie wczytuje kodu pocztowego
Forum PHP.pl > Forum > Przedszkole
Endure
PHP Version: 5.2.17
MySQL 5.1.65
Apache 2.2.22

strona stoi na serwerze firmy Serveradmin.pl ale to już chyba nie istotne.

Witam,

Mam utworzoną tabelę klientów w bazie danych MySQL:

CREATE TABLE IF NOT EXISTS `customers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(80) NOT NULL,
`first_name` varchar(20) NOT NULL,
`last_name` varchar(40) NOT NULL,
`address1` varchar(80) NOT NULL,
`address2` varchar(80) DEFAULT NULL,
`city` varchar(60) NOT NULL,
`state` char(2) NOT NULL,
`zip` mediumint(5) unsigned zerofill NOT NULL,
`phone` int(10) NOT NULL,
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;


Wszystkie dane wpisane w formularzu na stronie przez klienta są dodawane do bazy danych, problem jest tylko z kodem pocztowym 'zip'. Mianowicie baza danych w ogóle nie zapisuje kodu pocztowego, np zamiast 21-150 automatycznie mi daje 0000 :/

Fragment kodu dotyczący pobierania kodu pocztowego podczas wypełniania formularza kontaktowego:

CODE
if (preg_match ('/^(^\d{2}-\d{3})$/', $_POST['cc_zip'])) {
$cc_zip = $_POST['cc_zip'];
} else {
$billing_errors['cc_zip'] = 'Wpisz kod pocztowy!';
}



Gdzie mogę szukać błędu? Proszę o pomoc.
szalek01
21-150 = varchar
Endure
Usunąłem tabelę i od nowa ją stworzyłem zrobiłem `zip` varchar (5) unsigned zerofill NOT NULL, ale nie przyjmuje wywala error: #1064 - Something is wrong in your syntax obok 'unsigned zerofill NOT NULL, `phone` int(10) NOT NULL, `date_created` times' w linii 10

CODE
CREATE TABLE `customers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(80) NOT NULL,
`first_name` varchar(20) NOT NULL,
`last_name` varchar(40) NOT NULL,
`address1` varchar(80) NOT NULL,
`address2` varchar(80) DEFAULT NULL,
`city` varchar(60) NOT NULL,
`state` char(2) NOT NULL,
`zip` varchar (5) unsigned zerofill NOT NULL,
`phone` int(10) NOT NULL,
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;



usunąłem unsigned zerofill zostawiłem samo `zip` varchar (5) NOT NULL, w bazie mi zapisało wartość21-150 jako -129 :/
nospor
No ale kurcze.... mysl troche.... od kiedy VARCHAR moze byc unsigned czy zerofill?

I już tak na marginesie: od kiedy 21-150 to 5 znaków? Ja rozumiem, że jest już 7 wieczór no ale bez przesady...
Endure
ehh no nie wiem wiem że wykraczam już poza prawa logiki ale próbuje już wszystkiego kiedy najlepsze rozwiązania zawodzą :/ a tak to 6 znaków już zmieniam.
nospor
Ty nie strzelaj a poprostu pomyśl chwilkę...

Cytat
w bazie mi zapisało wartość21-150 jako -129
Bo tekst wkłada się jak tekst a nie jak liczbę.

Nie:
....VALUES(.....,12-250,.....)....
a:
....VALUES(.....,'12-250',.....)....
b4rt3kk
Cytat(Endure @ 22.10.2012, 19:16:09 ) *
ehh no nie wiem wiem że wykraczam już poza prawa logiki ale próbuje już wszystkiego kiedy najlepsze rozwiązania zawodzą :/ a tak to 6 znaków już zmieniam.


Zostaw 5 znaków, zostaw int, tylko przed przesłaniem zmiennej do zapytania pozbądź się myślnika, poza walorem estetycznym posiada jeszcze jakiś? Możesz równie dobrze go dodawać przy samym wyświetlaniu. W bazie przechowuj samą liczbę. Mniej zajmie. Albo zmień to przy wpisywaniu kodu pocztowego, albo automatycznie przez skrypt PHP.
Endure
b4rt3kk dzięki wielkie pomogło smile.gif zrobiłem tak powiedziałeś
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.