Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie kilku rekordów naraz
Forum PHP.pl > Forum > Bazy danych > MySQL
Stef@n
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|
SongoQ
  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.
Stef@n
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
nospor
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. ?>
Stef@n
wyskakuje ten sam bład worriedsmiley.gif
revyag
A pole głosy nie jest czasem typu integer ? Bo do bazy wstawiane jest to jako coś innego.
nospor
ponadto powinieneś za id nie wstawiac '', a wstawic null
Stef@n
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;
nospor
jak już pisalem:
Cytat
ponadto powinieneś za id nie wstawiac '', a wstawic null
Synaps
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
nospor
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
Stef@n
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. ?>
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.