Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Baza danaych nie wczytuje kodu pocztowego
Endure
post 22.10.2012, 17:52:31
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Endure 22.10.2012, 17:56:36
Go to the top of the page
+Quote Post
szalek01
post 22.10.2012, 17:54:26
Post #2





Grupa: Zarejestrowani
Postów: 129
Pomógł: 17
Dołączył: 17.09.2012

Ostrzeżenie: (0%)
-----


21-150 = varchar

Ten post edytował szalek01 22.10.2012, 17:54:52


--------------------
PDO nie gryzie....
Go to the top of the page
+Quote Post
Endure
post 22.10.2012, 18:07:35
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

Ostrzeżenie: (0%)
-----


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 :/

Ten post edytował Endure 22.10.2012, 18:13:06
Go to the top of the page
+Quote Post
nospor
post 22.10.2012, 18:11:37
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Endure
post 22.10.2012, 18:16:09
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Endure 22.10.2012, 18:17:19
Go to the top of the page
+Quote Post
nospor
post 22.10.2012, 18:19:31
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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',.....)....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
b4rt3kk
post 22.10.2012, 18:47:37
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Endure
post 22.10.2012, 20:34:34
Post #8





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 19.05.2011

Ostrzeżenie: (0%)
-----


b4rt3kk dzięki wielkie pomogło smile.gif zrobiłem tak powiedziałeś
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:42