ďťż
Podstrony
|
telcocafeWitam wszystkich przychodząc po prośbie ;)Od pewnego czasu piszę sobie stronę zintegrowana z bazą MySQL (obecnie całość jest jeszcze na zboczonym serwerze -WAMP). Wszystko właściwie działa już przyzwoicie, mogę edytować uprzednio wykonane wpisy (phpMyAdmin), mogę je usuwać, mogę dowolnie odpytywać bazę. Niestety nie mogę ze skryptu dodać nowego rekordu. Właściwie to mogę dodać rekord, ale za każdym razem przyjmuje on taką samą formę, w której część pól ma wartość NULL a część 0. Jest to o tyle dziwne, że przecież nie mam problemu z edycją krotek!!! Moje przypuszczenia padają tu na wiecznie zielone drzewo świata php/mySQL czyli kodowanie znaków (w pobranych komórkach mam ? zamiast polskich znaków). Aby nie wyjść na nieroba, który przy pierwszym problemie leci z płaczem do innych od razu podam, że: - strona jak i wszelkie skrypty powstały w notepad++ portable z kodowaniem utf-8 - baza m ustawiony charset na utf8 i nazwy na ten sam typ - porównanie są na utf8_polish_ci - ostatnio w akcie desperacji dodałem po każdym połączeniu z serwerem a przed wybraniem bazy: mysql_query("SET NAMES utf8"); mysql_query("SET CHARSET SET utf8"); - w php.ini odblokowałem default charset i ustawiłem na utf-8 niestety to wszystko na nic. Jak się wykrzakczało tak się wykrzacza. poniżej podam część kodu skryptu tak na wszelki wypadek, ale nie sądzę by to tu leżał problem. Aha i raczej nie leży po stronie przeglądarki bo to Opera 10 choć i ff (jak to ff a więc trochę od tyłu i do góry nogam i) sobie radzi. Tworzenie zapytania: $query="INSERT INTO ".$Name[2]." VALUES (NULL, "; for ($i=1 ; $i < count ($Table) ; $i++) { if ($i!=14) { $query.=$Table[$i][0]." = '".$_POST[$Table[$i][0].$_POST['IDb'] ]."', "; } else { if ($_POST[$Table[$i][0].$_POST['IDb']]==" Tak") { $query.=$Table[$i][0]." = '1', "; } else { $query.=$Table[$i][0]." = '0', "; }; } }; $query=substr($query,0,-2); $query.=")"; sendeditquery ($query, $Name); wysyłanie zapytania: $sql=dbconnect ($Client_DBData[0],$Client_DBData[4],$Client_DBData[1],$Client_DBData[ 5]) or die ("Wystąpił błąd w trakcie łączenia z bazą: ".(mysql_error())); mysql_query("SET NAMES utf8"); mysql_query("SET CHARSET SET utf8"); mysql_select_db ("$Client_DBData[1]",$sql); $Result=mysql_query($query) or die ("Wystąpił błąd w trakcie aktualizacji wiersza: ".(mysql_error())); dbdisconnect ($sql); gdy zastosowałem wywołanie echo $query przed wysłaniem danych, wszystko było w należytym porządku. Mam nadzieję, że ktoś z Was podpowie mi gdzie spsprałem sprawę. z góry dzęki. Nie wiem jaką masz strukturę tabeli oraz jakie dane wprowadzasz, więc trudno Ci pomóc. Jeśli pole przyjmuje wartość 0, to prawdopodobnie umieszczasz wartość tekstową w polu numerycznym. A puste pola... Kto wie. Musiałbyś pokazać strukturę tabeli i przykład zapytania z echo $query. Może mijasz jedno pole, które jest domyślnie NULL, ale patrząc na sposób dodawania (choć dziwny), to nie powinno być problemów. Użytkownik andrzej_aa edytował ten post 30 grudzień 2009, 17:11 eksport tabeli w phpmyadmin: CREATE TABLE IF NOT EXISTS `tab1` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Główny klucz ofert', `Own` varchar(128) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Address` varchar(128) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Nr1` varchar(15) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Nr2` varchar(4) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Tel` varchar(20) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Mail` varchar(128) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Loc` varchar(128) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Type1` varchar(64) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Typ2` varchar(32) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Pr` varchar(12) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, `Height` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Width` varchar(10) CHARACTER SET utf8 COLLATE utf8_polish_ci DEFAULT NULL, `Standard` tinyint(4) NOT NULL DEFAULT '1', `Super` tinyint(1) NOT NULL, `Descr` varchar(1024) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=25 ; zaś wywołanie echo wygląda następująco: INSERT INTO tab1 VALUES (NULL, Own = 'aaa', Address = 'aaa', Nr1 = 'aaa', Nr2 = 'aaa', Tel = 'aaa', Mail = 'aaa', Loc = 'aaa', Type1 = 'w4', Type2 = 'Buy', Pr = 'aaa', Height = 'aaa', Width = 'aaa', Standard = '1', Super = '0', Descr = 'aaa') Dodatkowo próbowałem: - usunąć nawiasy z pół standard i super - dodać nawiasy dla nazw pól - połączyć obie metody powyżej Niestety jedynym efektem było zapisanie do wszystkich pół wartości 0 po zdjęciu nawiasów z pół Standard i Super To tak. Nie wiem czemu, ale w tabeli masz pole `Typ2`, a w zapytaniu używasz `Type2`, ale mniejsza z tym. Problem tutaj jest w konstrukcji. Chyba nie sprawdziłeś tego, czy się dodaje prze PMA, bo się nie ma prawa poprawnie dodać. Masz do wyboru dwie wersje zapytania. AlboINSERT INTO tab1 SET ID = NULL, Own = 'aaa', Address = 'aaa', Nr1 = 'aaa', Nr2 = 'aaa', Tel = 'aaa', Mail = 'aaa', Loc = 'aaa', Type1 = 'w4', Type2 = 'Buy', Pr = 'aaa', Height = 'aaa', Width = 'aaa', Standard = 1, Super = 0, Descr = 'aaa'alboINSERT INTO tab1 VALUE (NULL, 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'w4', 'Buy', 'aaa', 'aaa', 'aaa', 1, 0, 'aaa')A Ty połączyłeś je i parser myśli, że są to zmienne, a nie wartości, stąd wstawia wartości domyślne. P.S. Zaktualizuj całą tabelę na utf8_polish_ci, a nie poszczególne pola:ALTER TABLE `tab1` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci Użytkownik andrzej_aa edytował ten post 30 grudzień 2009, 19:46 no przecież że tak!!! ;) to wyjaśnia, dlaczego padło mi po zintegrowaniu edycji i dodawania -> użyłem pętli edycji zapominając o tym, że nazwy są tu niepotrzebne. Wielkie dzięki za wyprowadzenie z otchłani nicości ;) . Type i Typ to zwykły byk przy przepisywaniu do jednego rzędu. a tak swoją drogą to jak zmienić codebox z php do np sql? co do "ALTER TABLE `tab1` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci", to niestety ale już robiłem a że nie skutkowało to drążyłem po prostu dalej. na razie sobie to odpuszczę i zobaczę jak będzie na docelowym serwerze. mimo wszystko wielkie dzięki za pomoc. Użytkownik qqrykq edytował ten post 30 grudzień 2009, 22:27 |
|||
Sitedesign by AltusUmbrae. |