Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza
wojtek1988
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.02.2013

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


Pierwsze koty za płoty. Drugi problem jaki mam to dodanie kilku wierszy do bazy damych mysql poprzez wypełnienia formularza post.
Wyświetlić 4 formularzepotrafie ale chyba źle formułuje zapytanie do bazy danych. Pomożcie mistrzowie (IMG:style_emoticons/default/smile.gif)

Zamieszczam kod jaki mam do tej pory :






  1. <form action='' method="post">
  2. <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
  3. <tr><h5>Obowiązkowe pola oznaczone *</h5>
  4. <th style="text-align:center">NR </th>
  5. <th style="text-align:center">Nazwa* </th>
  6. <th style="text-align:center" >Adres internetowy </th>
  7. <th style="text-align:center" size="69">Adres</th>
  8. <th style="text-align:center">Telefon </th>
  9.  
  10. <th style="text-align:center">Uwagi </th>
  11.  
  12.  
  13.  
  14. </tr>
  15. </thead>
  16. <tr>


  1. for($i = 1; $i <=4; $i++) {


  1. <th style="text-align:center"><input type="text" size="3" value='' name="form[]"></th>
  2. <th style="text-align:center"><input type="text" value='' name="form[]"></th>
  3. <th style="text-align:center"><input type="text" value='' name="form[]"></th>
  4. <th style="text-align:center"><input type="text" value='' name="form[]"></th>
  5. <th style="text-align:center"><input type="text" value='' name="form[]"></th>
  6. <th style="text-align:center"><input type="text" value='' name="form[]"></th>
  7. </tr>

  1. }


  1. </br>
  2. <input type="hidden" value='1' name="send">
  3. <input type="submit" value='Dodaj producenta'>
  4. </form>

  1. }




  1. if(isset($_POST['send']) && $_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
  2.  
  3. // ustanawiamy poł&plusmn;czenie z serwerem baz danych
  4. // wybieramy bazę danych
  5. // konstruujemy zapytanie
  6. $zapytanie = "INSERT INTO producenci VALUES ";
  7. for($i = 0; $i < 6; $i++) {
  8. $zapytanie .= "('" . $_POST['form'][$i] . "')";
  9. if($i < 6 - 1)
  10. $zapytanie .= ", ";
  11. }
  12. // cała reszta kodu
  13. echo $zapytanie;
  14.  
  15.  
  16. echo "Producent został poprawnie dodany!<br />Za chwilę nastąpi przekierowanie kontaktów. Proszę czekać.";
  17. header("refresh: 12; url=kontakty.php");
  18. }
  19.  
  20. echo ShowForm();



Podzieliłem cały kod odpowiednimi znacznikami ale nie wiem czy jest to czytelne....? (IMG:style_emoticons/default/ohno-smiley.gif)




A może w inny sposób należy to zrobić(IMG:style_emoticons/default/questionmark.gif)

posidam tabele producenci która ma kolumny id, nazwa,adres www, adres, telefon, uwagi

Przekazanie tych danych poprzez tablice post . Następnie jak sformułowac zapytanie do bazy aby dodac np 4 wiersze jednoścześnie (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował wojtek1988 8.02.2013, 23:42:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojtek1988
post
Post #2





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 8.02.2013

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


Dodaje mi jedynie "produkty" w reszcie zapytań do tabeli "pz" oraz "zamowienie_pz" wyświetla else " niepowodzenie"
@Michasko mógłbyś poprawić, spojrzeć (IMG:style_emoticons/default/smile.gif)

  1. insertuje 1 rekord ale nie wszystkie elementy na raz
  2. <div id="wrapper" class="panel">
  3. ORYGINAŁ / KOPIA
  4. <section id="opcje" class="ramka2">
  5. <?php
  6.  
  7. require_once('include/database.php');
  8.  
  9.  
  10.  
  11.  
  12. include ("include/wyswietl_dane_firmy.php");
  13.  
  14. ?>
  15.  
  16.  
  17.  
  18. </section>
  19. <script>
  20. <!--
  21. function doit(){
  22. if (!window.print){
  23. alert("Musisz mieć NS4.x lub IE5,\naby użyć przycisku drukowania!")
  24. return
  25. }
  26. window.print()
  27. }
  28. //-->
  29. </script>
  30. <section id="opcje" class="ramka3">
  31. <div id="button">
  32. <a href="java script:doit()" ><img src="gfx/print.gif" border="0"></a>
  33. </div>
  34.  
  35. </section> <?php
  36.  
  37. $wynik = mysql_query('SELECT * FROM produkty')
  38. or die('Błąd zapytania');
  39.  
  40. echo "<form action='dodaj_towar_pz.php' method=post>";
  41.  
  42. function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz dodania towaru
  43. echo "$komunikat<br>";
  44.  
  45. echo "<table boder=\"1\"><tr style=\"cursor: pointer\">";
  46. for($i = 1; $i <=4; $i++) {
  47. echo"<tr>";
  48. echo "<td>Nr produktu </td>";
  49. ECHO "<td>Nazwa </td>";
  50. ?>
  51. <td>Magazyn: </td>
  52. <td>Jednostka: </td>
  53. <td>Ilość </td>
  54.  
  55.  
  56. <td>Cena netto</td>
  57. <td>Wartość netto</td>
  58.  
  59.  
  60. <td>Stawka VAT</td>
  61. <td> Kwota VAT </td>
  62. <td> Wartość brutto </td>
  63. </tr><tr>
  64. <td><input type="text" size="3" name="id_produkt[]"></td>
  65. <td><input type="text" name="nazwa[]"></td>
  66. <td><select name="id_magazyn[]">
  67. <?
  68.  
  69. $res = mysql_query ("SELECT * FROM magazyny ");
  70. while($row = mysql_fetch_array($res))
  71. {
  72.  
  73. $id_magazyn= $row["id_magazyn"];
  74. $nazwa= $row["nazwa"];
  75. ?>
  76. <option value="<? echo "$id_magazyn"; ?>"><? echo " $nazwa ";
  77. ?></option>
  78. <?
  79. }
  80. ?>
  81. </select></td><input type="hidden" name="data" value="<?php echo date("Y-m-d");?>">
  82.  
  83. <td>
  84. <select name="jednostka[]">
  85. <?
  86.  
  87. $res = mysql_query ("SELECT * FROM jednostki ");
  88. while($row = mysql_fetch_array($res))
  89. {
  90.  
  91. $nazwa= $row["nazwa"];
  92.  
  93. ?>
  94. <option value="<? echo "$nazwa"; ?>"><? echo " $nazwa ";
  95. ?></option>
  96. <?
  97. }
  98. ?>
  99. </select></td>
  100.  
  101. <td><input type='text' size='5' id='sztuk[]' name='sztuk[]' value='' onkeyup='podlicz();'></td>
  102.  
  103. <td><input size="5" MAXLENGTH="12" id="k_cena_netto[]" name="k_cena_netto[]" type="text" value="" onkeyup="podlicz();"></td>
  104. <td><span id="wynikk[]"></span></td>
  105. <td><select id="podatek[]" name="k_stawka_vat[]" onchange="podlicz();">
  106. <option VALUE="23">23 %</option>
  107. <option VALUE="7">7 %</option>
  108. <option VALUE="33">33 %</option>
  109. </select></td>
  110. <td><span id="wynik[]" ></span></td>
  111.  
  112. <td>
  113. <span id="wynikkk[]" name="kwota_brutto[]"></span></td>
  114. <?php
  115.  
  116. echo "</tr>";
  117. }
  118. echo "<input type=hidden value='1' name=zapisz>";
  119. echo "<input type=submit value='Potwierdź'>";
  120.  
  121.  
  122.  
  123. echo "</table>";
  124. echo "</form>";
  125.  
  126. }
  127.  
  128. if(isset($_POST['zapisz']) && $_POST["zapisz"]==1){
  129. //dodawanie pz
  130. $lastID = 0;
  131. $query = 'INSERT INTO pz VALUES ("id_pz", "nr_dok", "id_magazyn" , "dostawca" , "przyjal" , "uwagi");';
  132. $res = mysql_query($query);
  133. if($res) // jesli dodawanie się powiodło
  134. $lastID = mysql_insert_id();
  135. else
  136. {
  137. echo"błąd";
  138. //komunikat o błędzie;
  139. }
  140.  
  141. //dodawanie produktów
  142. $iloscDodanychProduktow = count($_POST['nazwa']); // zakladam, ze formularz zawiera pola o nazwach Produkt[] oraz pola o nazwach Ilosc[] (tablice wartosci)
  143. $iloscPoszczegolnychProduktow = $_POST['sztuk'];
  144.  
  145. // tutaj zapytanie dodaj&plusmn;ce produkty (kilka na raz - w ilo&para;ci równej $ilosc); - to umiesz zrobić, więc zrobisz sam
  146.  
  147. $zapytanie = 'INSERT INTO produkty VALUES ';
  148. for($i = 0; $i < count($_POST['nazwa']); $i++){
  149. if(empty($_POST['nazwa'][$i])) {//oraz czy uzupełniono wszystkie dane
  150. echo "Pole \"nazwa\" nie może być puste!";
  151.  
  152. }
  153.  
  154.  
  155.  
  156. else{
  157. // je&para;li pola s&plusmn; poprawne, to dodajesz je do zapytania:
  158. $zapytanie .= '("'.$_POST['id_produkt'][$i].'", "'.$_POST['data'][$i].'", "'.$_POST['id_magazyn'][$i].'", "'.$_POST['nazwa'][$i].'" , "'.$_POST['symbol'][$i].'" , "'.$_POST['producent'][$i].'" , "'.$_POST['typ'][$i].'" , "'.$_POST['jednostka'][$i].'" , "'.$_POST['k_cena_netto'][$i].'" , "'.$_POST['k_stawka_vat'][$i].'" , "'.$_POST['k_cena_brutto'][$i].'" , "'.$_POST['marza'][$i].'" , "'.$_POST['cena_netto'][$i].'" , "'.$_POST['stawka_vat'][$i].'" , "'.$_POST['cena_brutto'][$i].'" , "'.$_POST['sztuk'][$i].'" , "'.$_POST['rezerwacja'][$i].'" , "'.$_POST['skladowanie'][$i].'" , "'.$_POST['opis'][$i].'" , "'.$_POST['kody_kreskowe'][$i].'" , "'.$_POST['minimum'][$i].'" , "'.$_POST['waga'][$i].'", "'.$_POST['gwarancja'][$i].'", "'.$_POST['data_waznosci'][$i].'", "'.$_POST['seria'][$i].'", "'.$_POST['dangerous'][$i].'", "'.$_POST['uwagi'][$i].'" )';
  159. if($i != count($_POST['id_produkt']) - 1)
  160. {
  161. $zapytanie .= ', ';
  162. }
  163. }
  164. }
  165.  
  166. if ( mysql_query($zapytanie) ) {
  167. echo "Dodano produkt do tabeli ";
  168. echo "Produkt został poprawnie dodany!<br />Za chwilę nastąpi przekierowanie kontaktów. Proszę czekać.";
  169.  
  170.  
  171. //jak skonczysz dodawanie do tabeli 'produkty', to kontynuujesz w ten sposób:
  172.  
  173. $dodaneProdukty = mysql_result(mysql_query('SELECT GROUP_CONCAT(id_produkt) FROM produkty ORDER BY id_produkt DESC LIMIT '.$iloscDodanychProduktow), 0);
  174. $cenyZaSztuke= mysql_result(mysql_query('SELECT GROUP_CONCAT(cena_za_sztuke) FROM produkty ORDER BY id_produkt DESC LIMIT '.$iloscDodanychProduktow), 0);
  175.  
  176. //teraz zmienne $dodaneProdukty i $cenyZaSztuke zawierac beda ci&plusmn;gi ID i cen dodanych produktów, oddzielonych przecinkami, np. "14, 6, 3"
  177. $dodaneProdukty = explode(",", $dodaneProdukty); // teraz masz tablice ID, ale s&plusmn; one odwrócone (malej&plusmn;co, a w $iloscPoszczegolnychProduktow masz je rosn&plusmn;co - wiec trzeba odwrócić)
  178. $cenyZaSztuke = explode(",", $cenyZaSztuke); // podobnie z cenami
  179.  
  180. $dodaneProdukty = array_reverse($dodaneProdukty);
  181. $cenyZaSztuke = array_reverse($cenyZaSztuke);
  182.  
  183. //dodanie rekordów do tabeli zamowienia_pz
  184. $zamQuery = 'INSERT INTO zamowienia_pz VALUES ';
  185.  
  186. for($j = 0; $j < count($dodaneProdukty); $j++)
  187. {
  188. $zamQuery .= '('.$lastID.', '.$dodaneProdukty[$j].', '.$iloscPoszczegolnychProduktow[$j].', "'.$cenyZaSztuke[$j].'")';
  189. if($j < count($dodaneProdukty) - 1)
  190. {
  191. $zamQuery .= ', ';
  192. }
  193. }
  194.  
  195. if(mysql_query($zamQuery))
  196. {
  197. echo"powodzenie dodania zamowienia_pz";
  198. //komunikat powodzenia;
  199. }
  200. else
  201. {
  202. //komunikat niepowodzenia
  203. echo"nie dodano zamowienia_pz";
  204.  
  205. }
  206.  
  207.  
  208. }
  209. else
  210. {
  211. echo "Dodawanie wyników nie powiodło się!<br/>".mysql_error();
  212.  
  213.  
  214.  
  215. }
  216. }
  217. echo ShowForm();
  218.  
  219. ?>
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. </br>
  227. <br/>
  228.  
  229.  
  230. <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
  231. <thead>
  232. <tr>
  233. <th style="text-align:center">Dostawca:</th> <th><select name="dostawca">
  234. <?
  235.  
  236. $res = mysql_query ("SELECT * FROM kontrahenci ");
  237. while($row = mysql_fetch_array($res))
  238. {
  239. $firma= $row["nazwa"];
  240. $imie= $row["imie"];
  241. $nazwisko= $row["nazwisko"];
  242. $id_kontrahent= $row["id_kontrahent"];
  243. $ulica= $row["ulica"];
  244. $numer_budynku= $row["numer_budynku"];
  245. $kod_pocztowy= $row["kod_pocztowy"];
  246. $miejscowosc= $row["miejscowosc"];
  247. $nip= $row["nip"];
  248.  
  249. ?>
  250. <option value="<? echo "$firma $imie $nazwisko"; ?>"><? echo " [ $firma ] - $imie $nazwisko ul. $ulica $numer_budynku , $kod_pocztowy $miejscowosc NIP $nip";
  251. ?></option>
  252. <?
  253. }
  254. ?>
  255. </select> </th><th></th><th></th></tr><tr><th style="text-align:center">Przyjął:<input size="15" MAXLENGTH="30" name="przyjal" type="text" value="imię nazwisko"><div id="button"></th>
  256. <th><a href="dodanie_kontrahenta.php"><b>Dodaj kontrahenta </b></a></div></th> <th></th><th></th></tr>
  257. <tr><th style="text-align:center">Data:<input type="" name="data" value="<?php echo date("Y-m-d");?>"></th>
  258. <th style="text-align:center" >Godzina: <?php echo date("H:i:s");?> </th><th></th><th></th></tr>
  259. <tr><th style="text-align:center">Numer dokumentu:</th> <th><input type="text" size="10" name="nr_dok" value="<?php echo date("Y-m"); echo "/";?>"></th><th></th><th></th></tr>
  260.  
  261. <tr><th style="text-align:center">Uwagi: </th><th></th><th></th><th></th></tr><tr><th><textarea cols="20" rows="4" class="form" name="uwagi" ></textarea></th><th></th><th></th><th></th></tr>
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. <tr><th style="text-align:center">Elementy:</th> </tr>
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281. </thead>
  282.  
  283. <tfoot>
  284.  
  285.  
  286. </tfoot>
  287.  
  288. </table>
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298. <br><br><br>
  299. <div><span class="prawa">Podpis osoby upoważnionej<br>do odebrania dokumentu pz </span><span class="lewa">Podpis osoby upoważnionej<br>do wystawienia dokumentu pz</span></div>
  300.  
  301.  
  302.  
  303. </div>
  304.  
  305.  
  306.  


Ten post edytował wojtek1988 12.02.2013, 20:36:04
Go to the top of the page
+Quote Post

Posty w temacie
- wojtek1988   [SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza   9.02.2013, 09:05:06
- - Michasko   Każde pole Twojego formularza ma taką samą nazwę.....   9.02.2013, 11:12:41
- - wojtek1988   Wyswietlam 4 wiersze formularza i dodałem składnie...   9.02.2013, 13:27:56
- - Michasko   Linia 17: masz niepotrzebny cudzysłów na końcu. Na...   9.02.2013, 13:46:49
- - wojtek1988   Zastosowałem się do twoich wskazówek ale teraz mam...   9.02.2013, 15:16:15
- - Michasko   Widocznie nadal masz błąd w zapytaniu. Jak ono ter...   9.02.2013, 16:17:45
- - wojtek1988   Wygląda to tak : [PHP] pobierz, plaintext <?p...   9.02.2013, 16:41:29
- - Michasko   CytatW miejscu numer wpisac id_produkt for($i...   9.02.2013, 17:07:13
- - wojtek1988   POkaże cały kod. Najpierw formularz: [PHP] pobierz...   9.02.2013, 17:22:41
- - Michasko   Linia 7 - po co tam ten cudzysłów...?   9.02.2013, 17:27:33
- - teez   Mogę wiedzieć czemu tak strasznie komplikujecie sp...   9.02.2013, 17:31:57
- - wojtek1988   Dla mnie Michasko jest mistrzem !!! A...   9.02.2013, 17:35:07
- - teez   Michasko lepiej zna sytuację, sam dopiero zaczynam...   9.02.2013, 17:37:11
- - Michasko   @teez, źle przeczytałeś chyba. On chce dodać 4 rek...   9.02.2013, 17:40:21
- - teez   No to źle najwidoczniej odczytałem, zwracam honor.   9.02.2013, 17:43:26
- - wojtek1988   Dodanie 4 rekordów działa ale nie waliduje nie pod...   9.02.2013, 18:08:02
- - Michasko   Zwróć uwagę, że kilka pól u Ciebie ma atrybut name...   9.02.2013, 18:54:11
- - wojtek1988   A w moim przypadku jak sformułować kod aby nie pod...   9.02.2013, 19:14:17
- - Michasko   Chłopie, czytaj uważnie:) Walidację masz przeprowa...   9.02.2013, 19:21:23
- - wojtek1988   @Michasko w 4 linijce usunąłem znak ! ponieważ...   9.02.2013, 20:02:13
- - Michasko   O, faktycznie, literówka się wkradła :) Będę zaglą...   9.02.2013, 20:17:48
- - -wojtek1988-   ja bede juz koło 10 to sie odezwe z ciekawym pytan...   9.02.2013, 20:33:08
- - wojtek1988   Dzięki @Michasko juz wiem jak dodać kilka wierszy ...   10.02.2013, 15:00:08
- - Michasko   Czekaj czekaj, bo teraz znikąd pojawia nam się ...   10.02.2013, 15:11:41
- - wojtek1988   Pierwszy wariant jest fajny. W tabeli PZ usunę klu...   10.02.2013, 15:33:35
- - Michasko   Tak. Powiedzmy, ze ja chce od Ciebie zamowic 2 tel...   10.02.2013, 22:01:42
- - wojtek1988   ale jak miałoby wyglądać zapytanie, które wyświetl...   11.02.2013, 06:32:53
- - Michasko   Hola hola, nie masz usuwać primary_key. Nie rozumi...   11.02.2013, 13:07:38
- - wojtek1988   tabela produkty wygląda następująco id_produkt ...   11.02.2013, 13:47:11
- - Michasko   Kodid_pz | id_produkt | zamowiona_ilosc | cena_za_...   11.02.2013, 14:09:33
- - wojtek1988   Tabele mam już zrobione. Teraz należy utworzyć dok...   11.02.2013, 15:47:45
- - Michasko   Jeśli chodzi o wyświetlanie - tak. Jeśli chodzi o ...   11.02.2013, 16:02:23
- - wojtek1988   Już tłumaczę, jest to aplikacja magazynowa. Moduł,...   11.02.2013, 17:10:33
- - Michasko   No dobrze, ale załóżmy, że w magazynie masz 10 tel...   11.02.2013, 17:17:31
- - wojtek1988   W tabeli produkty nie wiąże kontrahenta z towarem....   11.02.2013, 18:40:45
- - Michasko   1. Dodaj najpierw rekord do tabeli 'pz' i ...   12.02.2013, 14:45:33
- - wojtek1988   Już wdrażam twój kod atrybut id_pz w kolumnie zamo...   12.02.2013, 15:32:29
- - Michasko   Prawda. Twoim kluczem głównym może być produkt_id,...   12.02.2013, 15:46:41
- - wojtek1988   RE: [SQL][PHP]Dodanie kilku rekordów do bazy danymiz formularza   12.02.2013, 20:35:09
- - Michasko   Jakie masz typy kolumn? w ID pewnie masz typ INT, ...   12.02.2013, 21:01:40
- - wojtek1988   Kominikaty mam takie: NIe dodano dokumentu pz...   12.02.2013, 21:23:18
- - Michasko   Chłopie, przeczytaj te komunikaty. Wpiszesz w goog...   12.02.2013, 21:33:08
- - wojtek1988   Tabela zamówienia_pz ma 4 kolumny.są to: id_pz | i...   12.02.2013, 21:41:16
- - Michasko   Oh, wybacz, przy dokumencie pz masz złą ilość kolu...   12.02.2013, 21:43:25
- - wojtek1988   Teraz mam : Cannot add or update a child row: a fo...   12.02.2013, 21:46:30
- - Michasko   Teraz masz tutaj jakieś tabele, których ja na oczy...   12.02.2013, 21:48:37
- - wojtek1988   Znowu @Michasko mi pomógł, poprawiłem drobne lite...   13.02.2013, 17:33:40
- - Michasko   Aby działało poprawnie, id_produkt muszą być więks...   13.02.2013, 18:08:40
- - wojtek1988   Zrobie autoinkrment w tabeli zamowienia_pz na kolu...   13.02.2013, 19:28:20
- - Michasko   W tabeli produkty ma być ten auto_increment...żeby...   13.02.2013, 19:38:27
- - wojtek1988   Trzymam się tej zasady. id_produkt miał autoinkrem...   13.02.2013, 19:50:39
- - Michasko   Ale chłopie, przecież Ty ręcznie nadajesz ID w for...   13.02.2013, 20:10:36
- - wojtek1988   Ręczne nadawanie id_produktu jest opcjonalne a nie...   13.02.2013, 20:17:37


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: 3.10.2025 - 08:09