Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dodawanie kilku rekordów naraz
Stef@n
post 10.06.2005, 10:28:07
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


Witam
mam formularz:
  1. <form action=\"dodaj.php?submit=Dodaj\" method=\"post\">
  2. <?
  3. $liczba=3;
  4. for ($i=1; $i <= $liczba; $i++) {
  5.  
  6. echo &#092;"Odpowiedz $i:<br>
  7.  <input type=text name=odpowiedz id=odpowiedz size=60%>
  8.  <hr>&#092;";
  9. }
  10. ?>
  11. <input type=\"submit\" type=\"submit\" value=\"Dodaj\">
  12. </form>

W tej sutuacji mamy 3 pola input o takich samych nazwach! chce dodac te pola do 3 rekordów. Czyli Odpowiedz 1 to jeden rekord itd...
Jak zrobic zapytanie by cos takiego miało miejsce....

Baza wyglada tak:
id | id_ankiety | odpowiedz | glosy|
Go to the top of the page
+Quote Post
SongoQ
post 10.06.2005, 12:20:57
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


  1. <?php
  2. echo &#092;"Odpowiedz $i:<br>
  3.  <input type=text name=&#092;".odpowiedz[$i].\" id=odpowiedz size=60%>
  4.  <hr>&#092;";
  5. ?>


I potem petle z tego.


--------------------
Go to the top of the page
+Quote Post
Stef@n
post 10.06.2005, 13:05:39
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


chodzi o zapytanie bo zrobiłem je tak:
  1. <?
  2. $liczba_odpowiedzi=&#092;"$ankieta_dane[2]\";
  3.  
  4. $query = &#092;"INSERT INTO ankiety_odpowiedzi (id, id_ankiety, odpowiedz, glosy) VALUES\";
  5.  
  6. for ($i=1; $i <= $liczba_odpowiedzi; $i++)
  7.  {
  8. $query .= &#092;"('', '$id_ankiety', '$odpowiedz$i', '0'), \";
  9. }
  10. $wynik = mysql_query ($query);
  11. echo mysql_error(); //jak bedzie jakis blad w dodawaniu do MySQL to pokaze go
  12. ?>

i jest baład
Cytat
You have an error in your SQL syntax near '' at line 1
blink.gif
Go to the top of the page
+Quote Post
nospor
post 10.06.2005, 13:24:55
Post #4





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




generujesz o jeden przecinek za duzo: powinno byc mnie j wiecej tak:
  1. <?php
  2.  
  3.  $liczba_odpowiedzi=&#092;"$ankieta_dane[2]\";
  4.  
  5.               $query = &#092;"INSERT INTO ankiety_odpowiedzi (id, id_ankiety, odpowiedz, glosy) VALUES \";
  6.  
  7.   for ($i=1; $i <= $liczba_odpowiedzi; $i++)
  8.            {
  9.            if ($i>1) $query.=',';
  10.             $query .= &#092;"('', '$id_ankiety', '$odpowiedz$i', '0')\";
  11.             }
  12.               $wynik = mysql_query ($query);
  13.     echo mysql_error();
  14.  
  15. ?>


Ten post edytował nospor 10.06.2005, 13:25:39


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

"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
Stef@n
post 10.06.2005, 13:33:30
Post #5





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


wyskakuje ten sam bład worriedsmiley.gif
Go to the top of the page
+Quote Post
revyag
post 10.06.2005, 13:50:24
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


A pole głosy nie jest czasem typu integer ? Bo do bazy wstawiane jest to jako coś innego.


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

------
Go to the top of the page
+Quote Post
nospor
post 10.06.2005, 13:54:36
Post #7





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




ponadto powinieneś za id nie wstawiac '', a wstawic null


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

"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
Stef@n
post 10.06.2005, 14:16:45
Post #8





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


Cytat(revyag @ 2005-06-10 14:50:24)
A pole głosy nie jest czasem typu integer ? Bo do bazy wstawiane jest to jako coś innego.

tak wyglada baza
  1. CREATE TABLE ankiety_odpowiedzi (
  2. id int(11) NOT NULL AUTO_INCREMENT,
  3. id_ankiety int(11) NOT NULL DEFAULT '0',
  4. odpowiedz varchar(100) NOT NULL DEFAULT '',
  5. glosy int(11) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (id),
  7. KEY id (id)
  8. ) TYPE=MyISAM;
Go to the top of the page
+Quote Post
nospor
post 10.06.2005, 14:27:50
Post #9





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




jak już pisalem:
Cytat
ponadto powinieneś za id nie wstawiac '', a wstawic null


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

"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
Synaps
post 10.06.2005, 14:42:16
Post #10





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 1.12.2003
Skąd: Gdynia

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


SQL powinien wygladac tak :

  1. INSERT
  2. INTO ankiety_odpowiedzi (id_ankiety, odpowiedz, glosy)
  3. VALUES ($id_ankiety, $odpowiedz, $glosy )


jesli id jest typu autoinceremet pomijasz go przy deklaracji pól w INSERT.

Kod
id int(11) NOT NULL auto_increment


do tego id ma constraint NOT NULL exclamation.gif

Ten post edytował Synaps 10.06.2005, 14:44:21


--------------------
MySQL said:

You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL
Go to the top of the page
+Quote Post
nospor
post 10.06.2005, 14:47:43
Post #11





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




Cytat
do tego id ma constraint NOT NULL exclamation.gif
jesli piles do mnie - jak wstawi sie null to on automatycznie podbija o jeden. Można tak jak ty proponujesz totalnei olac to pole przy wstawianiu. Obbie metody dają ten sam efekt


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

"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
Stef@n
post 10.06.2005, 19:00:21
Post #12





Grupa: Zarejestrowani
Postów: 191
Pomógł: 3
Dołączył: 14.08.2003

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


hm nie chciałem o bazie sad.gif
Mam juz kod dodaje tyle rekordów ile chciałem ale... pierwsza odpowiedz daje na koniec i w polu odpowiedz jest pustka nie ma zadnej wartosci. dlaczego? Próbowałem dac $i=0 ale tez nic nie pomagało...

  1. <? for ($i=1; $i <= $liczba; $i++)
  2.  {
  3. $odp=&#092;"$odpowiedz[$i]\";
  4. mysql_query(&#092;"INSERT INTO ankiety_odpowiedzi VALUES('', '$id_ankiety', '$odp', '0');\");
  5. echo mysql_error(); //jak bedzie jakis blad w dodawaniu do MySQL to pokaze go
  6. ?>
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: 20.06.2025 - 18:31