Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wstawianie kilku rekordów jednym insert'em ?
Forum PHP.pl > Forum > Przedszkole
tr86
Mam pytanie odnośnie wstawiania kilku rekordów do bazy za pomocą jednego INSERT'a.
Nie wiem dlaczego, ale poniższe zapytanie nie wykonuje się...dlaczego?questionmark.gif

  1. $query = "INSERT INTO plan SET
  2. (id_konf='$wynik', data='$data01', godz_rozp='$godz_rozp01', godz_zak='$godz_zak01', prelegent='$prelegent01', nazwa_tem='$nazwa_tem01'),
  3. (id_konf='$wynik', data='$data02', godz_rozp='$godz_rozp02', godz_zak='$godz_zak02', prelegent='$prelegent02', nazwa_tem='$nazwa_tem02')";


Formularz wysyłający dane wygląda następująco:

  1. <form method=post action="organizowane_konf.php?co=nowy_plan&wynik='.$wynik.'">
  2. <table border="1" bgcolor=#C0C0C0 align="left">
  3. <tr>
  4. <td width="170"><center>Data</center></td>
  5. <td width="110">Godzina rozpoczęcia</td>
  6. <td width="110">Godzina zakończenia</td>
  7. <td><center>Prelegent</center></td>
  8. <td><center>Nazwa tematu</center></td>
  9. </tr>
  10. <tr bgcolor="red">
  11. <td>
  12. <select name=rok01 style="width:50px;">
  13. <option value="">r</option>
  14. <option value="2009">2009</option>
  15. <option value="2010">2010</option><option value="2011">2011</option>
  16. <option value="2012">2012</option>
  17. </select>
  18. <select name=miesiac01 style="width:60px;">
  19. <option value="">m</option>
  20. <option value="01">styczeń</option>
  21. <option value="02">luty</option><option value="03">marzec</option>
  22. <option value="04">kwiecień</option><option value="05">maj</option>
  23. <option value="06">czerwiec</option><option value="07">lipiec</option>
  24. <option value="08">sierpień</option><option value="09">wrzesień</option>
  25. <option value="10">październik</option><option value="11">listopad</option>
  26. <option value="12">grudzień</option>
  27. </select>
  28. <select name=dzien01 style="width:50px;">
  29. <option value="">d</option>
  30. <option value="01">01</option>
  31. <option value="02">02</option><option value="03">03</option>
  32. <option value="04">04</option><option value="05">05</option>
  33. <option value="06">06</option><option value="07">07</option>
  34. <option value="08">08</option><option value="09">09</option>
  35. <option value="10">10</option><option value="11">11</option>
  36. <option value="12">12</option><option value="13">13</option>
  37. <option value="14">14</option><option value="15">15</option>
  38. <option value="16">16</option><option value="17">17</option>
  39. <option value="18">18</option><option value="19">19</option>
  40. <option value="20">20</option><option value="21">21</option>
  41. <option value="22">22</option><option value="23">23</option>
  42. <option value="24">24</option><option value="25">25</option>
  43. <option value="26">26</option><option value="27">27</option>
  44. <option value="28">28</option><option value="29">29</option>
  45. <option value="30">30</option><option value="31">31</option>
  46. </select>
  47. </td>
  48. <td>
  49. <select name=godz01 style="width:60px;">
  50. <option value="">godz</option>
  51. <option value="00">00</option><option value="01">01</option>
  52. <option value="02">02</option><option value="03">03</option>
  53. <option value="04">04</option><option value="05">05</option>
  54. <option value="06">06</option><option value="07">07</option>
  55. <option value="08">08</option><option value="09">09</option>
  56. <option value="10">10</option><option value="11">11</option>
  57. <option value="12">12</option><option value="13">13</option>
  58. <option value="14">14</option><option value="15">15</option>
  59. <option value="16">16</option><option value="17">17</option>
  60. <option value="18">18</option><option value="19">19</option>
  61. <option value="20">20</option><option value="21">21</option>
  62. <option value="22">22</option><option value="23">23</option>
  63. </select>
  64. <select name=min01 style="width:45px;">
  65. <option value="">min</option>
  66. <option value="00">00</option><option value="05">05</option>
  67. <option value="10">10</option><option value="15">15</option>
  68. <option value="20">20</option><option value="25">25</option>
  69. <option value="30">30</option><option value="35">35</option>
  70. <option value="40">40</option><option value="45">45</option>
  71. <option value="50">50</option><option value="55">55</option>
  72. </select>
  73. </td>
  74. <td>
  75. <select name=godz012 style="width:60px;">
  76. <option value="">godz</option>
  77. <option value="00">00</option><option value="01">01</option>
  78. <option value="02">02</option><option value="03">03</option>
  79. <option value="04">04</option><option value="05">05</option>
  80. <option value="06">06</option><option value="07">07</option>
  81. <option value="08">08</option><option value="09">09</option>
  82. <option value="10">10</option><option value="11">11</option>
  83. <option value="12">12</option><option value="13">13</option>
  84. <option value="14">14</option><option value="15">15</option>
  85. <option value="16">16</option><option value="17">17</option>
  86. <option value="18">18</option><option value="19">19</option>
  87. <option value="20">20</option><option value="21">21</option>
  88. <option value="22">22</option><option value="23">23</option>
  89. </select>
  90. <select name=min012 style="width:45px;">
  91. <option value="">min</option>
  92. <option value="00">00</option><option value="05">05</option>
  93. <option value="10">10</option><option value="15">15</option>
  94. <option value="20">20</option><option value="25">25</option>
  95. <option value="30">30</option><option value="35">35</option>
  96. <option value="40">40</option><option value="45">45</option>
  97. <option value="50">50</option><option value="55">55</option>
  98. </select>
  99. </td>
  100. <td>
  101. <input type=text name=prelegent01 size=20 maxlength=20></td>
  102. </td>
  103. <td>
  104. <input type=text name=nazwa_tem01 size=40 maxlength=40></td>
  105. </tr> [b]([size="4"]to samo pola dla rok02,miesiac02,dzien02,godz02,min02,godz022,min022,prelegent02,nazwa_tem02[/size])[/b]
  106. </table>
  107. <center><input type=submit value="Stwórz plan konferencji">
  108. <input type=reset value="Wyczyść"></center><br><br>
  109. </form>

nospor
alc.... weź popraw tego posta
tr86
I 2 plik do którego odwołuje się formularz:

  1. $connect = mysql_connect("mysql2.yoyo.pl","user","haslo")
  2. or die ("Nie można nawiązać połączenia.");
  3. or die ("Nie ma takiej bazy danych.");
  4.  
  5. $zapytanie = mysql_query ("select * from konferencje where id='$wynik';")
  6. or die('błąd: '.mysql_error());
  7.  
  8. // utworzenie krótkich nazw zmiennych
  9.  
  10. $rok01=$_POST['rok01'];
  11. $miesiac01=$_POST['miesiac01'];
  12. $dzien01=$_POST['dzien01'];
  13.  
  14. $data01=$rok01."-".$miesiac01."-".$dzien01;
  15.  
  16. $godz01=$_POST['godz01'];
  17. $min01=$_POST['min01'];
  18.  
  19. $godz012=$_POST['godz012'];
  20. $min012=$_POST['min012'];
  21.  
  22. $godz_rozp01=$godz01.":".$min01;
  23. $godz_zak01=$godz012.":".$min012;
  24.  
  25. $prelegent01=$_POST['prelegent01'];
  26. $nazwa_tem01=$_POST['nazwa_tem01'];
  27.  
  28.  
  29. $rok02=$_POST['rok02'];
  30. $miesiac02=$_POST['miesiac02'];
  31. $dzien02=$_POST['dzien02'];
  32.  
  33. $data02=$rok02."-".$miesiac02."-".$dzien02;
  34.  
  35. $godz02=$_POST['godz02'];
  36. $min02=$_POST['min02'];
  37.  
  38. $godz022=$_POST['godz022'];
  39. $min022=$_POST['min022'];
  40.  
  41. $godz_rozp02=$godz02.":".$min02;
  42. $godz_zak02=$godz022.":".$min022;
  43.  
  44. $prelegent02=$_POST['prelegent02'];
  45. $nazwa_tem02=$_POST['nazwa_tem02'];
  46.  
  47. // sprawdzenie czy pola sa puste (zalozmy ze wymagana tylko 1 pozycja)
  48.  
  49. if (empty($_POST['rok01']) or empty($_POST['miesiac01']) or empty($_POST['dzien01'])
  50. or empty($_POST['godz01']) or empty($_POST['min01']) or empty($_POST['godz012']) or empty($_POST['min012'])
  51. or empty($_POST['prelegent01']) or empty($_POST['nazwa_tem01']))
  52.  
  53. {
  54. echo('<div id="TRESC"><center><font color="red">Uzupełnij wszystkie wymagane pola!</font><br><br>');
  55. echo('<br><a href=organizowane_konf.php?co=stworz_plan&wynik='.$wynik.'> Proszę spróbować ponownie.</a></center></div>');
  56. }
  57.  
  58. if ($godz_rozp01>=$godz_zak01)
  59. {
  60. echo('<div id="TRESC"><center><font color="red">Godzina zakończenia nie może być wcześniejsza od godziny rozpoczęcia!</font>');
  61. echo('<br><br><a href=organizowane_konf.php?co=stworz_plan&wynik='.$wynik.'> Proszę spróbować ponownie.</a></center></div>');
  62. }
  63.  
  64. if (ereg ("[0-9]", $prelegent01)){
  65. echo('<div id="TRESC"><center><font color="red">W polu "prelegent" nie możesz użyć wartości liczbowych.</font>');
  66. echo('<br><br><a href=organizowane_konf.php?co=stworz_plan&wynik='.$wynik.'> Proszę spróbować ponownie.</a></center></div>');
  67. }
  68.  
  69. if (!empty($_POST['rok01']) && !empty($_POST['miesiac01']) && !empty($_POST['dzien01'])
  70. && !empty($_POST['godz01']) && !empty($_POST['min01']) && !empty($_POST['godz012']) && !empty($_POST['min012'])
  71. && !empty($_POST['prelegent01']) && !empty($_POST['nazwa_tem01']))
  72.  
  73.  
  74. if (!$db_lnk = mysql_connect("mysql2.yoyo.pl", "user", "haslo"))
  75. {
  76. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd podczas proby połączenia z serwerem MySQL...</font></center></div><br>');
  77. return;
  78. }
  79. if(!mysql_select_db('baza'))
  80. {
  81. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd podczas wyboru bazy danych.</font></center></div><br>');
  82. return;
  83. }
  84.  
  85. $query = "INSERT INTO plan SET
  86. (id_konf='$wynik', data='$data01', godz_rozp='$godz_rozp01', godz_zak='$godz_zak01', prelegent='$prelegent01', nazwa_tem='$nazwa_tem01'),
  87. (id_konf='$wynik', data='$data02', godz_rozp='$godz_rozp02', godz_zak='$godz_zak02', prelegent='$prelegent02', nazwa_tem='$nazwa_tem02')";
  88.  
  89.  
  90.  
  91. if(!mysql_query($query, $db_lnk))
  92. {
  93. echo("Wystapil blad zapytanie zostalo odrzucone...<br>");
  94. return;
  95. }
  96.  
  97. if(!mysql_close())
  98. {
  99. echo("Wystapil blad podczas zamykania polaczenia z serwerem MySQL...<br>");
  100. }
  101. echo ('<div id="TRESC"><center><font color="green">Stworzenie planu konferencji przebiegło pomyślnie.</font></center><br><br>');
  102. echo ('<center><a href="organizowane_konf.php?co=pokaz_plan&wynik='.$wynik.'">Przeglądaj plan.</a><br></center><br><br></div>');
  103. echo ('<center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik.'>Wróć do strony konferencji</a></center><br></div>');


Z wstawieniem jednego rekordu:
  1. $query = "INSERT INTO plan SET
  2. id_konf='$wynik',
  3. data='$data01',
  4. godz_rozp='$godz_rozp01',
  5. godz_zak='$godz_zak01',
  6. prelegent='$prelegent01',
  7. nazwa_tem='$nazwa_tem01'";

nie ma problemu, natomiast złożone zapytanie już się nie chce wykonać...
Może ktoś wie w czym tutaj jest błąd?
Dziękuję za wszelką pomoc.
nospor
w manualu masz wyraźnie napisane ze SET moze dodac tylko jeden rekord. Kilka dodajesz przez VALUES
http://dev.mysql.com/doc/refman/5.1/en/insert.html

ps: na przyszlosc staraj sie zastanowic czy masa kodu HTML jest nam potrzebna do rozwiązania twojego problemu
tr86
  1. $query = "INSERT INTO plan ('id', 'id_konf', 'data', 'godz_rozp', 'godz_zak','prelegent', 'nazwa_tem') VALUES
  2. ('auto', '$wynik', '$data01', '$godz_rozp01', '$godz_zak01', '$prelegent01', '$nazwa_tem01'),
  3. ('auto', '$wynik', '$data02', '$godz_rozp02', '$godz_zak02', '$prelegent02', '$nazwa_tem02')";



Zrobiłem tak, ale też nie działa...
Błąd: wystąpił błąd, zapytanie zostało odrzucone...


Nie mam pojęcia co może być źle, hmm?
nospor
zeby sprawdzic jaki jest blad zapytania nalezy wykonac to:
http://nospor.pl/php-faq-n29.html#faq-6
stosuj to zawsze a bedziesz wiedzial co masz nie tak z zapytaniem.

nazw kolumn nie bierze sie w ciapki ' tylko w `
nie: 'id'
a: `id`
lub: id

analogicznie reszta.

'auto' - a to zes skad wytrzasnal? Od kiedy ID przyjmuje tekst 'auto' ? Chyba miales na mysli wartosc NULL
tr86
Dziękuje za pomoc smile.gif Zadziałało smile.gif

Nie wiedziałem, że ` i ' to jakaś różnica, bo w pojedynczym zapytaniu akceptuje znak '.
Jeszcze raz dziękuje.
nospor
Cytat
Nie wiedziałem, że ` i ' to jakaś różnica, bo w pojedynczym zapytaniu akceptuje znak '.
W pojedynczym zapytaniu stosowales ' do podania wartosci. Podanie wartosci a okreslenie nazwy kolumny to dwie różne sprawy. W pojedynczym zapytaniu dla określenia kolumn nie uzywales ani ' ani `
tr86
Tak, masz racje, chyba z wrażenia, że zadziałało, coś mi się pomyliło smile.gif
Jeszcze raz dziękuje za pomoc i pozdrawiam.
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.