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%)
-----


Znowu @Michasko mi pomógł, poprawiłem drobne literówki i jest blisko końca (IMG:style_emoticons/default/smile.gif)
Działa dodanie kilku produktów do tabeli produkty,
działa dodanie doekumentu do pz
Jedyna rzecz, która jest nie tak to dodanie wierszy w postaci id_pz, id_produkt, sztuk, cena_za_sztuke . Dzieję się tak , ze id_pz jest dobrze pobierany ale w kolumnie id_produkt pobierane mam wszystkie id_produtków z tabeli produkty (IMG:style_emoticons/default/questionmark.gif) ? Do niech przypisany jest jeden id_pz i tak ma być, cena oraz ilość z formularza rónież nie działa. hmm...

Kod:
  1.  
  2.  
  3. <div id="wrapper" class="panel">
  4. ORYGINAŁ / KOPIA
  5. <section id="opcje" class="ramka2">
  6. <?php
  7.  
  8. require_once('include/database.php');
  9.  
  10.  
  11.  
  12.  
  13. include ("include/wyswietl_dane_firmy.php");
  14.  
  15. ?>
  16.  
  17.  
  18.  
  19. </section>
  20.  
  21. <script>
  22.  
  23. function podlicz(){
  24. sztuk = document.getElementById("sztuk").value; //pobiera warto&para;ci z input-a o id="kwota"
  25. k_cena_netto = document.getElementById("k_cena_netto").value;
  26. podatek = document.getElementById("podatek").value;
  27.  
  28. wynikk = sztuk*k_cena_netto; //ooblicza wynik
  29. document.getElementById('wynikk').innerHTML=wynikk; //pobiera warto&para;ć z select-a o id="podatek"
  30.  
  31. wynik = sztuk*k_cena_netto*(podatek/100); //ooblicza wynik
  32. document.getElementById('wynik').innerHTML=wynik; //zapisuje wynik w span-ie o id="wynik"
  33.  
  34. wynikkk = sztuk*k_cena_netto*(1+podatek/100); //ooblicza wynik
  35. document.getElementById('wynikkk').innerHTML=wynikkk;
  36. }
  37. </script>
  38. <script>
  39. <!--
  40. function doit(){
  41. if (!window.print){
  42. alert("Musisz mieć NS4.x lub IE5,\naby użyć przycisku drukowania!")
  43. return
  44. }
  45. window.print()
  46. }
  47. //-->
  48. </script>
  49. <section id="opcje" class="ramka3">
  50. <div id="button">
  51. <a href="java script:doit()" ><img src="gfx/print.gif" border="0"></a>
  52. </div>
  53.  
  54. </section> <?php
  55.  
  56. $wynik = mysql_query('SELECT * FROM produkty')
  57. or die('Błąd zapytania');
  58.  
  59.  
  60. if(isset($_POST['zapisz']) && $_POST["zapisz"]==1){
  61. //dodawanie pz
  62. $lastID = 0;
  63.  
  64. $res = mysql_query("insert into `pz` values('".htmlspecialchars($_POST["id_pz"])."', '".htmlspecialchars($_POST["data"])."','".htmlspecialchars($_POST["nr_dok"])."','".htmlspecialchars($_POST["dostawca"])."','".htmlspecialchars($_POST["przyjal"])."' , '".htmlspecialchars($_POST["uwagi"])."' )"); // zapisywanie rekordu do bazy
  65.  
  66. if($res){ // jesli dodawanie się powiodło
  67. $lastID = mysql_insert_id();
  68. echo"dodano pz";
  69. }
  70. else
  71. {
  72. echo "NIe dodano dokumentu pz!<br/>".mysql_error();
  73. //komunikat o błędzie;
  74. }
  75.  
  76. //dodawanie produktów - nazwa czy id_produkt?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif)
  77. $iloscDodanychProduktow = count($_POST['nazwa']); // zakladam, ze formularz zawiera pola o nazwach Produkt[] oraz pola o nazwach Ilosc[] (tablice wartosci)
  78. $iloscPoszczegolnychProduktow = $_POST['sztuk'];
  79.  
  80. // tutaj zapytanie dodaj&plusmn;ce produkty (kilka na raz - w ilo&para;ci równej $ilosc); - to umiesz zrobić, więc zrobisz sam
  81.  
  82. $zapytanie = 'INSERT INTO produkty VALUES ';
  83. for($i = 0; $i < count($_POST['nazwa']); $i++){
  84. if(empty($_POST['nazwa'][$i])) {//oraz czy uzupełniono wszystkie dane
  85. echo "Pole \"nazwa\" nie może być puste!";
  86.  
  87. }
  88.  
  89.  
  90.  
  91. else{
  92. // je&para;li pola s&plusmn; poprawne, to dodajesz je do zapytania:
  93. $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].'" )';
  94. if($i != count($_POST['id_produkt']) - 1)
  95. {
  96. $zapytanie .= ', ';
  97. }
  98. }
  99. }
  100.  
  101. if ( mysql_query($zapytanie) ) {
  102. echo "Dodano produkt do tabeli ";
  103. echo "Produkt został poprawnie dodany!<br />";
  104.  
  105.  
  106. //jak skonczysz dodawanie do tabeli 'produkty', to kontynuujesz w ten sposób:
  107.  
  108. $dodaneProdukty = mysql_result(mysql_query('SELECT GROUP_CONCAT(id_produkt) FROM produkty ORDER BY id_produkt DESC LIMIT '.$iloscDodanychProduktow), 0);
  109. $cenyZaSztuke= mysql_result(mysql_query('SELECT GROUP_CONCAT(k_cena_netto) FROM produkty ORDER BY id_produkt DESC LIMIT '.$iloscDodanychProduktow), 0);
  110. //(k_cena_netto odpowiada kolumnie cenie netto z tabeli produkty i tak ma byc?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ?
  111.  
  112.  
  113.  
  114. //teraz zmienne $dodaneProdukty i $cenyZaSztuke zawierac beda ci&plusmn;gi ID i cen dodanych produktów, oddzielonych przecinkami, np. "14, 6, 3"
  115. $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ć)
  116. $cenyZaSztuke = explode(",", $cenyZaSztuke); // podobnie z cenami
  117.  
  118. $dodaneProdukty = array_reverse($dodaneProdukty);
  119. $cenyZaSztuke = array_reverse($cenyZaSztuke);
  120.  
  121. //dodanie rekordów do tabeli zamowienia_pz
  122. $zamQuery = 'INSERT INTO zamowienia_pz VALUES ';
  123.  
  124. for($j = 0; $j < count($dodaneProdukty); $j++)
  125. {
  126. $zamQuery .= '("'.$lastID.'", "'.$dodaneProdukty[$j].'", "'.$iloscPoszczegolnychProduktow[$j].'", "'.$cenyZaSztuke[$j].'")';
  127. if($j < count($dodaneProdukty) - 1)
  128. {
  129. $zamQuery .= ', ';
  130. }
  131. }
  132.  
  133. if(mysql_query($zamQuery))
  134. {
  135. echo"powodzenie dodania zamowienia_pz";
  136. //komunikat powodzenia;
  137. }
  138. else
  139. {
  140. //komunikat niepowodzenia
  141. echo "Nie dodano zamowienia pz!<br/>".mysql_error();
  142.  
  143. }
  144.  
  145.  
  146. }
  147. else
  148. {
  149. echo "Dodawanie wyników nie powiodło się!<br/>".mysql_error();
  150.  
  151.  
  152.  
  153. }
  154. }
  155. echo ShowForm();
  156.  
  157. ?>


Ten post edytował wojtek1988 13.02.2013, 17:37:41
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 15:21