Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] inny zapis do db
lnn
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


Witam!
Dane z formularzy odbieram za pomocą serialize($_POST), zapisuje w sesji (bo jest pare krokow) i pozniej odserializowywuje i chce to zapisac do bazy, wiem jakie pola chce zapisac wiec wszystko klepie recznie, czy jest jakas inna metoda niz to co wklepalem ponizej??
Jakas petla z tego serialize albo cos? :/

  1. // odebranie danych z formularza i zapis do sesji
  2. $_SESSION['etap_1'] = serialize($_POST);
  3.  
  4. // odserializowanie danych
  5. $etap_1 = unserialize($_SESSION['etap_1']);
  6.  
  7. // zapis do bazy
  8. mysql_query("INSERT INTO `dane1` SET
  9. nazwa = '".$etap_1['nazwa']."',
  10. adres1 = '".$etap_1['adres1']."',
  11. adres1_nr = '".$etap_1['adres1_nr']."',
  12. adres2 = '".$etap_1['adres2']."',
  13. adres2_kod = '".$etap_1['adres2_kod']."',
  14. wojewodztwo = '".$etap_1['wojewodztwo']."',
  15. tel1 = '".$etap_1['tel1']."',
  16. tel2 = '".$etap_1['tel2']."',
  17. fax = '".$etap_1['fax']."',
  18. www = '".$etap_1['www']."',
  19. typ_obiektu = '".$etap_1['typ_obiektu']."',
  20. opis = '".$etap_1['opis']."',
  21. user_id = '".$_SESSION['id']."',
  22. spis_id = '".$last_insert."' ")
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Zrób z tego: 'nazwa', 'adres1' tablicę i przejedź po niej na zasadzie:
  1. $tab = array('nazwa', 'adres1', 'adres1_nr'); // <-- itd.
  2. $query = "INSERT INTO dane1 VALUES (";
  3. foreach($tab as $t) {
  4. $query.= $etap_1['nazwa'].",";
  5. }
  6. // później usuwamy ostatni niepotrzebny przecinek:
  7. $query = substr($query, 0, strlen($query) -1);
  8. // domykamy nawias w zapytaniu
  9. $query.=")";
  10. // i w końcu


Ten post edytował darko 28.01.2010, 16:45:52
Go to the top of the page
+Quote Post
lnn
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


cos mi nie dziala, zrobilem tak:
  1. $tab = array('nazwa', 'adres1', 'adres1_nr', 'adres2', 'adres2_kod', 'wojewodztwo',
  2. 'tel1', 'tel2', 'fax', 'www', 'typ_obiektu', 'opis'); // <-- itd.
  3.  
  4. $query = "INSERT INTO dane1 VALUES (";
  5. foreach($tab as $t) {
  6. $query.= $etap_1['nazwa'].",".$etap_1['nazwa'].",".$etap_1['adres1'].","
  7. .$etap_1['adres1_nr'].",".$etap_1['adres2'].",".$etap_1['adres2_kod'].","
  8. .$etap_1['wojewodztwo'].",".$etap_1['tel1'].",".$etap_1['tel2'].","
  9. .$etap_1['fax'].",".$etap_1['www'].",".$etap_1['typ_obiektu'].",".$etap_1['opis'].",";
  10. }
  11. // później usuwamy ostatni niepotrzebny przecinek:
  12. $query = substr($query, 0, strlen($query) -1);
  13. // domykamy nawias w zapytaniu
  14. $query.=")";
  15. // i w końcu
  16. mysql_query($query);
  17. echo mysql_error()."<br />";


i wyskakuje
  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near 'Agro,Gospo Agro,Wieś,102,Pole,10-102,śląskie,101010,29803,900707,http://localhos' at line 1


struktura tabeli
  1. CREATE TABLE IF NOT EXISTS `dane1` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(60) NOT NULL,
  4. `adres1` varchar(40) NOT NULL,
  5. `adres1_nr` varchar(10) NOT NULL,
  6. `adres2` varchar(30) NOT NULL,
  7. `adres2_kod` varchar(6) NOT NULL,
  8. `wojewodztwo` varchar(19) NOT NULL,
  9. `tel1` varchar(30) NOT NULL,
  10. `tel2` varchar(30) DEFAULT NULL,
  11. `fax` varchar(30) DEFAULT NULL,
  12. `www` varchar(120) DEFAULT NULL,
  13. `typ_obiektu` varchar(10) DEFAULT NULL,
  14. `opis` text,
  15. `user_id` int(10) NOT NULL,
  16. `spis_id` int(10) NOT NULL,
  17. PRIMARY KEY (`id`),
  18. KEY `user_id` (`user_id`),
  19. KEY `spis_id` (`spis_id`)
  20. ) ENGINE=MyISAM DEFAULT CHARSET=ucs2 AUTO_INCREMENT=3 ;
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


To spróbuj z apostrofami:
  1. $tab = array('nazwa', 'adres1', 'adres1_nr'); // <-- itd.
  2. $query = "INSERT INTO dane1 VALUES (";
  3. foreach($tab as $t) {
  4. $query.= "'".$etap_1['nazwa']."',";
  5. }
  6. // później usuwamy ostatni niepotrzebny przecinek:
  7. $query = substr($query, 0, strlen($query) -1);
  8. // domykamy nawias w zapytaniu
  9. $query.=")";
  10. // i w końcu
Go to the top of the page
+Quote Post
lnn
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

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


a wlasnie mialem zapytac, w tej linijce mam wszystko powypisywac tak jak robilem? (IMG:style_emoticons/default/winksmiley.jpg)
  1. $query.= "'".$etap_1['nazwa']."',";


EDIT

kurde nadal cos nie dziala , wiec chyba zostane przy starym sposobie a to kiedys przetestuje..

Ten post edytował lnn 28.01.2010, 19:44:40
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 17:36