Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z pobieraniem danych z formularza do bazy
Forum PHP.pl > Forum > Przedszkole
krzysztof.kt
Witam,

na wstępie odrazu zaznaczę że z php i mysql mam do czynienia zaledwie od tygodnia, ale mianowicie mam problem z uzupełnieniem danych z formularza w bazie danych mysql.

w formularzu (html) posiadam pola takie jak zmienne w kodzie PHP

problem jest tego typu że chcę te dane pobrać do bazy ale do 2 różnych tabel :

1 tabela to przyjecie_sprzet 2 tabela to klienci

co mam tutaj w zapytaniu php nie tak??
  1. ///////////////////////////////////////////////////////////////////////////////////
  2. $dbc = mysqli_connect(' tutaj wiadomo o co chodzi......')
  3. or die('Brak połączenia z serwerem MySQL.');
  4.  
  5. //serwis
  6. $id = $_POST['id'];
  7. $data_przyjecia = $_POST['data_przyjecia'];
  8. $rodzaj_sprzetu = $_POST['rodzaj_sprzetu'];
  9. $marka = $_POST['marka'];
  10. $model = $_POST['model'];
  11. $numer_seryjny = $_POST['numer_seryjny'];
  12. $opis_usterki = $_POST['opis_usterki'];
  13. $stan_urzadzenia = $_POST['stan_urzadzenia'];
  14. $akcesoria = $_POST['akcesoria'];
  15. $uwagi = $_POST['uwagi'];
  16. $naprawiac_do_ceny = $_POST['naprawiac_do_ceny'];
  17.  
  18. //klient
  19. $id_klienta = $_POST['id_klienta'];
  20. $imie = $_POST['imie'];
  21. $nazwisko = $_POST['nazwisko'];
  22. $firma = $_POST['firma'];
  23. $nip = $_POST['nip'];
  24. $ulica = $_POST['ulica'];
  25. $miejscowosc = $_POST['miejscowosc'];
  26. $kod_pocztowy = $_POST['kod_pocztowy'];
  27. $telefon = $_POST['telefon'];
  28. $email = $_POST['email'];
  29.  
  30. //dane na temat klientów (to wlasnie mi nie dziala jak jest jedno i 2 w kodzie)
  31.  
  32. $query = "INSERT INTO klienci (id_klienta, imie, nazwisko, firma, nip, ulica, miejscowosc, kod_pocztowy, telefon, email)
  33.  
  34. VALUES ('$id_klienta', '$imie', '$nazwisko', '$firma', '$nip', '$ulica', '$miejscowosc', '$kod_pocztowy', '$telefon', '$email' )";
  35.  
  36. //dane na temat sprzętu (to jak jest samo w kodzie -działa)
  37. [/code]
  38. $query = "INSERT INTO przyjecie_sprzetu (id, data_przyjecia, rodzaj_sprzetu, marka, model, numer_seryjny, opis_usterki, stan_urzadzenia, akcesoria, uwagi, naprawiac_do_ceny)
  39.  
  40. VALUES ('$id', '$data_przyjecia', '$rodzaj_sprzetu', '$marka', '$model', '$numer_seryjny', '$opis_usterki', '$stan_urzadzenia', '$akcesoria',
  41. '$uwagi', '$naprawiac_do_ceny' )";
  42.  
  43.  
  44.  
  45. mysqli_query($dbc, $query)
  46. or die('Błąd w zapytaniu do bazy danych.');
  47.  
  48. echo 'Zlecenie naprawy zostało przyjęte.</br>
  49. ';
  50.  
  51. mysqli_close($dbc);
  52. /////////////////////////////////////////////////////////////////////////////////////



  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Przyjecie sprzętu na SERWIS</title>
  6. <link rel="stylesheet" type="text/css" href="style.css" />
  7. </head>
  8.  
  9. <fieldset><legend><p><strong>Przyjęcie do SERWISU</strong>.</p></legend></br>
  10. <form method="post" action="addemail.php">
  11. <fieldset><legend><strong>Dane klienta</strong></legend><br>
  12. <label for="model">ID_klienta:</label>
  13. <input type="text" id="id_klienta" name="id_klienta" /><br />
  14. <label for="model">Imię:</label>
  15. <input type="text" id="imie" name="imie" /><br />
  16. <label for="model">Nazwisko:</label>
  17. <input type="text" id="nazwisko" name="nazwisko" /><br />
  18. <label for="model">Nazwa Firmy:</label>
  19. <input type="text" id="firma" name="firma" /><br />
  20. <label for="model">NIP:</label>
  21. <input type="text" id="nip" name="nip" /><br />
  22. <label for="model">Ulica:</label>
  23. <input type="text" id="ulica" name="ulica" /><br />
  24. <label for="model">Miejscowość:</label>
  25. <input type="text" id="miejscowosc" name="miejscowosc" /><br />
  26. <label for="model">Kod pocztowy:</label>
  27. <input type="text" id="kod_pocztowy" name="kod_pocztowy" /><br />
  28. <label for="model">Telefon kontaktowy:</label>
  29. <input type="text" id="telefon" name="telefon" /><br />
  30. <label for="email">Adres e-mail:</label>
  31. <input type="text" id="email" name="email" /><br />
  32.  
  33. <fieldset><legend><strong>Dane sprzętu</strong></legend><br>
  34. <label for="id">ID:</label>
  35. <input type="text" id="id" name="id" /><br />
  36. <label for="data_przyjecia">Data przyjęcia:</label>
  37. <input type="text" id="data_przyjecia" name="data_przyjecia" /><br />
  38. <label for="rodzaj_sprzetu">Rodzaj sprzętu:</label>
  39. <select name="rodzaj_sprzetu" >
  40. <option>Telefon GSM</option>
  41. <option>Laptop</option>
  42. <option>Nawigacaj GPS</option>
  43. <option>Komputer PC</option>
  44. </select> <br />
  45. <label for="marka">Marka:</label>
  46. <select name="marka" >
  47. <option>Nokia</option>
  48. <option>Sony Ericsson</option>
  49. <option>Samsung</option>
  50. <option>Motorola</option>
  51. <option>Siemens</option>
  52. <option>Toshiba</option>
  53. <option>Hp</option>
  54. <option>Black Berry</option>
  55. <option>Siemens</option>
  56. <option>Benq</option>
  57. <option>HTC</option>
  58. <option>Iphone</option>
  59. </select> <br />
  60. <label for="model">Model:</label>
  61. <input type="text" id="model" name="model" /><br />
  62. <label for="numer_seryjny">Numer seryjny:</label>
  63. <input type="text" id="numer_seryjny" name="numer_seryjny" /><br />
  64. <label for="opis_usterki">Opis usterki:</label>
  65. <textarea name="opis_usterki" rows="5" cols="50"></textarea></br><br />
  66. <label for="stan_urzadzenia">Stan urządzenia:</label>
  67. <input type="text" id="stan_urzadzenia" name="stan_urzadzenia" /><br />
  68. <label for="akcesoria">Akcesoria:</label><br />
  69. <input type="checkbox" id="akcesoria" name="akcesoria" value="bateria">Bateria<br>
  70. <input type="checkbox" id="akcesoria" name="akcesoria" value="zasialcz">Zasilacz<br>
  71. <input type="checkbox" id="akcesoria" name="akcesoria" value="futeral">Futerał<br>
  72. <input type="checkbox" id="akcesoria" name="akcesoria" value="karta_pamieci" >Karta pamięci<br>
  73. <input type="checkbox" id="akcesoria" name="akcesoria" value="rysik" >Rysik<br>
  74. <input type="checkbox" id="akcesoria" name="akcesoria" value="myszka" >Myszka<br>
  75. <input type="checkbox" id="akcesoria" name="akcesoria" value="oprogramowanie">Oprogramowanie<br/>
  76. <label for="uwagi">Uwagi:</label>
  77. <textarea name="uwagi" rows="5" cols="50"></textarea></br>
  78. <label for="naprawiac_do_ceny">Naprawiać do ceny:</label>
  79. <input type="text" id="naprawiac_do_ceny" name="naprawiac_do_ceny" /><br />
  80. <input type="submit" name="Submit" value="Wyślij zlecenie" />
  81. </form>
  82. </body>
  83. </html>

i teraz najlepsze jest to że jeżeli wytnę zapytanie do przyjecie_sprzetu to nie dodaje mi danych z formularza do tabeli klienci , uzupełnia parę kolumn tylko np 0 albo nic nie dodaje

, natomiast jeżeli wytnę z kodu zapytanie do tabeli: klienci , a wstawię zapytanie do tabeli : przyjecie_sprzetu - ta jest prawidłowo wypełniana

nie mam siły już na to a cały dzień szukałm po necie.

z góry dziękuje za pomoc.
d3ut3r
najpierw robisz w zmiennej $query jedno zapytanie a później je nadpisujesz drugim. Zrób albo 2 zmienne ($query1, $query2) albo najpierw wykonaj jedno zapytanie a później nadpisuj zmienną.
krzysztof.kt
zmieniłem już na query i query 1 ale mam błąd :


Warning: mysqli_query() expects parameter 3 to be long, string given in /headfirst/kriss/addemail.php on line 49
Błąd w zapytaniu do bazy danych.


zapytanie wygląda tak:
  1.  
  2. $query = "INSERT INTO przyjecie_sprzetu (id, data_przyjecia, rodzaj_sprzetu, marka, model, numer_seryjny, opis_usterki, stan_urzadzenia, akcesoria, uwagi, naprawiac_do_ceny)
  3.  
  4. VALUES (id, '$data_przyjecia', '$rodzaj_sprzetu', '$marka', '$model', '$numer_seryjny', '$opis_usterki', '$stan_urzadzenia', '$akcesoria',
  5. '$uwagi', '$naprawiac_do_ceny' )";
  6.  
  7. $query1 = "INSERT INTO klienci (id_klienta, imie, nazwisko, firma, nip, ulica, miejscowosc, kod_pocztowy, telefon, email)
  8.  
  9. VALUES (id_klienta, '$imie', '$nazwisko', '$firma', '$nip', '$ulica', '$miejscowosc', '$kod_pocztowy', '$telefon', '$email' )";
  10.  
  11.  
  12. mysqli_query($dbc, $query, $query1) //tu jest 49 linia
  13. or die('Błąd w zapytaniu do bazy danych.');
  14.  
  15. echo 'Zlecenie naprawy zostało przyjęte.</br>
  16. ';
  17.  
  18. mysqli_close($dbc);
nospor
Czego nie rozumiesz w komunikacie bledu? Jak wol masz napisane ze trzeci parametr ma byc liczbą a ty mu zapodajesz string...

ps: chodziło o to, że masz pod rząd wykonać raz $query, a zaraz potem $query1 a nie wpychać obydwa naraz. Myśl troszkę.
krzysztof.kt
z całym szacunkiem ale nospor nie wiem jak mam to zrobić? możesz łopatologicznie wkleić mi tam gdzie ma to być zmienione w kodzie? jak napisałem tydzień dopiero mam styczność i nie wszystko rozumiem co pisze się o PHP i mysql dopiero przeczytałem 80 kartek o PHP z 600.

mam zrobić 2 połączenia do bazy? ;/

"przecież skaskowałem tego posta poniżej bo jednak pomyślałem że nie będe taki nie dobry" a mimo to odpowiedziałeś hmmm....
nospor
Cytat
jak napisałm wyżej tydzień dopiero mam styczności z php i mysql, czy Ty po tygodniu byłeś taki już obcykany w PHP? - wątpie (bez urazy)
Widzisz, ja już po pierwszym dniu zaglądałem do manuala i jak było napisane ze funkcja przyjmuje dwa argumenty, to dawałem dwa. Jak bylo napisane ze funkcja wymaga liczby to dawałem liczbe a nie string. A na dodatek patrzyłem czym jest ta liczba i czy mi jest w ogóle potrzebna.
Naukę programowania zacznij wiec od nauki zaglądania do manuala a nie mi się wymądrzasz ze tydzien sie uczysz php i z tego powodu wszystko ci wolno smile.gif

Cytat
z całym szacunkiem ale nospor nie wiem jak mam to zrobić? możesz łopatologicznie wkleić mi tam gdzie ma to być zmienione w kodzie?
Masz wykonac po kolei swoje query. Przeciez to jest po polsku napisane. pokolei znaczy pokolei.

  1. mysqli_query($dbc, $query) or die('Błąd w zapytaniu do bazy danych.');
  2. mysqli_query($dbc,$query1) or die('Błąd w zapytaniu do bazy danych.');

Prosba do Ciebie:
zamiast zalic sie ze tydzien sie uczysz to weź przyłóź się trochę do tego a nie po paru minutach odpisujesz na post - widac ze za bardzo nie pomyslales nad tym. Pytasz sie jaki ja mialem stan wiedzdy po tygodniu? Ja mialem to szczescie ze nie mialem forum i tak dlugo siedzialem nad kodem az wpadlem na banalne rozwiązania banalnych problemów- to mnie nauczylo myslec samodzielnie a nie z każdą pierdułą latać po ludziach
krzysztof.kt
rozumiem, sorki za takie trucie d... ale jak widzisz ja myślałem w złym kierunku...nie robiłem tego tak jak TY tylko wklepywałem tam gdzie nie powinno teraz chociaż coś mnie nauczyłeśsmile.gif dzięki i pozdrawiam i "bez urazy" winksmiley.jpg "...Człowiek uczy się na błędach"

PS - DZIAŁA smile.gif Dziękuje
nospor
Cytat
przecież skaskowałem tego posta poniżej bo jednak pomyślałem że nie będe taki nie dobry" a mimo to odpowiedziałeś hmmm....
Forum to nie gra - nie robisz SAVEow co 5 minut i nie wracasz do nich gdy coś ci nie wyjdzie. Napisales, ja to przeczytałem i odpowiedziałem. Proste.
krzysztof.kt
nospor - mam jeszcze 1 pytanie OSTATNIE:) jeszcze mam problem z checboxami
  1. <label for="akcesoria">Akcesoria:</label><br />
  2. <input type="checkbox" id="akcesoria" name="akcesoria" value="bateria">Bateria<br>
  3. <input type="checkbox" id="akcesoria" name="akcesoria" value="zasialcz">Zasilacz<br>
  4. <input type="checkbox" id="akcesoria" name="akcesoria" value="futeral">Futerał<br>
  5. <input type="checkbox" id="akcesoria" name="akcesoria" value="karta_pamieci" >Karta pamięci<br>
  6. <input type="checkbox" id="akcesoria" name="akcesoria" value="rysik" >Rysik<br>
  7. <input type="checkbox" id="akcesoria" name="akcesoria" value="myszka" >Myszka<br>
  8. <input type="checkbox" id="akcesoria" name="akcesoria" value="oprogramowanie">Oprogramowanie<br/>


chciałęm zrobić tak aby przy zaznaczonym checboxie została dodana każda opcja do BD do kolumny akcesoria, tymczasem dodawana jest tylko 1 niezależnie czy zaznacze 2-3 czy 5 znalazłem na forum u Was skrypt z funkcją IF ale nie działał ;/ tzn pewnie coś źle zrobiłem
vonski
Checkboxy musisz przesyłać jako tablicę, czyli wszędzie musisz dodać do nazwy symbol tablicy - [] np. dla zasilacza:

  1. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="zasialcz">Zasilacz<br>


Teraz jak to prześlesz to w tablicy $_POST będziesz miał indeks ['akcesoria'] będący tablicą z wybranymi opcjami.

Najlepiej w skrypcie który będzie obsługiwać formularz dodaj sobie coś takiego:

  1. echo '<pre>';
  2. print_r($_POST);
  3. echo '</pre>';


Wtedy najlepiej to widać jak wygląda przesłana tablica.
krzysztof.kt
zrobiłem tak:
  1. abel for="akcesoria">Akcesoria:</label><br />
  2. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="bateria">Bateria<br>
  3. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="zasialcz">Zasilacz<br>
  4. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="futeral">Futerał<br>
  5. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="karta_pamieci" >Karta pamięci<br>
  6. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="rysik" >Rysik<br>
  7. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="myszka" >Myszka<br>
  8. <input type="checkbox" id="akcesoria" name="akcesoria[]" value="oprogramowanie">Oprogramowanie<br/>


ze zmianami w akcesoria['zasilacz'] i akcesoria['akcesoria'] i ciagle mam w kolumnie akcesoria Array

zrobiłem:) tylko nie wklejałem

  1. Zlecenie naprawy zostało przyjęte.
  2. (
  3. [id_klienta] =>
  4. [imie] => Piotr
  5. [nazwisko] => Wojewódzki
  6. [firma] => Polsat
  7. [nip] => 856-857-857-90
  8. [ulica] => Narodowa 45
  9. [miejscowosc] => Sochaczew
  10. [kod_pocztowy] => 99-746
  11. [telefon] => 888-999-666
  12. [email] => www@ww.pl
  13. [id] =>
  14. [data_przyjecia] => 25-08-2010
  15. [rodzaj_sprzetu] => Telefon GSM
  16. [marka] => Nokia
  17. [model] => 5500
  18. [numer_seryjny] => SN394834394893
  19. [opis_usterki] => nie włącza się
  20. [stan_urzadzenia] => lekkie rysy na LCD
  21. [akcesoria] => Array
  22. (
  23. [0] => zasialcz
  24. [1] => karta_pamieci
  25. [2] => myszka
  26. )
  27.  
  28. [uwagi] => brak
  29. [naprawiac_do_ceny] => 200
  30. [Submit] => Wyślij zlecenie
  31. )


ok teraz rozumiem o co biega z tablicą, tylko nie chce mieć danych trzymanych w tablicy w kolumnie - tylko po kolei zaznaczone checboxy smile.gif
vonski
Tak, bo $_POST['akcesoria'] będzie tablicą, co wyraźnie napisałem we wcześniejszym poście. Napisałem też żebyś użył print_r($_POST) i zobaczył "na własne oczy" jak wygląda $_POST po przesłaniu, czego zapewne nie chciało ci się zrobić smile.gif
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.