Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Przesłanie danych z formularza - kłopt z NULL
peb
post 18.12.2018, 22:02:24
Post #1





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

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


Witam wszystkich

Ponieważ okazujecie się niezwykle pomocni, zwracam się z kolejną prośbą licząc na rozwiązanie mojego kłopotu.

Mam otóż taki kawałek kodu:

  1. <form action="insert.php" method="post">
  2. <p>1: <input type="text" name="wartosc_1" /></p>
  3. <p>2: <input type="text" name="wartosc_2" /></p>
  4. <p>3: <input type="text" name="wartosc_3" /></p>
  5. <p>4: <input type="text" name="wartosc_4" /></p>
  6. <p>5: <input type="text" name="wartosc_5" /></p>
  7. <p>6: <input type="text" name="wartosc_6" /></p>
  8. <p>7: <input type="text" name="wartosc_7" /></p>
  9. <p>8: <input type="text" name="wartosc_8" /></p>
  10. <p>9: <input type="text" name="wartosc_9" /></p>
  11. <p>10: <input type="text" name="wartosc_10" /></p>
  12. <p>11: <input type="text" name="wartosc_11" /></p>
  13. <p>12: <input type="text" name="wartosc_12" /></p>
  14.  
  15. <p><input type="submit" value="Wyślij na serwer"/></p>


w kolejnym pliku odbieram i wstępnie obrabiam dane:

  1. $wartosc_1 = $_POST['wartosc_1'];
  2. $wartosc_1 = str_replace(",",".",$wartosc_1);
  3.  
  4. $wartosc_2 = $_POST['wartosc_2'];
  5. $wartosc_2 = str_replace(",",".",$wartosc_2);
  6.  
  7. $wartosc_3 = $_POST['wartosc_3'];
  8. $wartosc_3 = str_replace(",",".",$wartosc_3);
  9.  
  10. $wartosc_4 = $_POST['wartosc_4'];
  11. $wartosc_4 = str_replace(",",".",$wartosc_4);
  12.  
  13. $wartosc_5 = $_POST['wartosc_5'];
  14. $wartosc_5 = str_replace(",",".",$wartosc_5);
  15.  
  16. $wartosc_6 = $_POST['wartosc_6'];
  17. $wartosc_6 = str_replace(",",".",$wartosc_6);
  18.  
  19. $wartosc_7 = $_POST['wartosc_7'];
  20. $wartosc_7 = str_replace(",",".",$wartosc_7);
  21.  
  22. $wartosc_8 = $_POST['wartosc_8'];
  23. $wartosc_8 = str_replace(",",".",$wartosc_8);
  24.  
  25. $wartosc_9 = $_POST['wartosc_9'];
  26. $wartosc_9 = str_replace(",",".",$wartosc_9);
  27.  
  28. $wartosc_10 = $_POST['wartosc_10'];
  29. $wartosc_10 = str_replace(",",".",$wartosc_10);
  30.  
  31. $wartosc_11 = $_POST['wartosc_11'];
  32. $wartosc_11 = str_replace(",",".",$wartosc_11);
  33.  
  34. $wartosc_12 = $_POST['wartosc_12'];
  35. $wartosc_12 = str_replace(",",".",$wartosc_12);
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42. $sql="INSERT INTO zamowienia (wartosc_1, wartosc_2, wartosc_3, wartosc_4, wartosc_5, wartosc_6, wartosc_7, wartosc_8, wartosc_9, wartosc_10, wartosc_11, wartosc_12)
  43. VALUES
  44. ('$wartosc_1','$wartosc_2', '$wartosc_3', '$wartosc_4', '$wartosc_5', '$wartosc_6', '$wartosc_7', '$wartosc_8', '$wartosc_9', '$wartosc_10', '$wartosc_11', '$wartosc_12')";
  45.  


Mój problem polega na tym, że każda z kolumn wartosc1....12 ma ustawione w bazie domyślne NULL, jdenak jeśli pozostaje niewypełniona wstawia mi 0.

Dodam, że formularz zawiera 12 pól ale wypełnione jednocześnie są tylko 2 zatem chciałby aby pozostałe 10 przyjęło wartość NULL.

Z góry dziękuję za pomoc i za poświęcony czas.

Pozdrawiam
Go to the top of the page
+Quote Post
Pyton_000
post 19.12.2018, 08:37:54
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


W ramach nudy pozwoliłem sobie zrobić co nie co. A Twoim zadaniem jest przeanalizować to.

  1. <?php
  2. $data = [];
  3. for($i=1; $i<19; $i++) {
  4. $colName = 'wartosc_'.$i;
  5. if(trim($_POST[$colName]) === '') {
  6. continue;
  7. }
  8. $data[$colName] = str_replace(',', '.',$_POST[$colName]);
  9. }
  10. if(empty($data)) {
  11. die('nie ma co wrzucać');
  12. }
  13. $sql = 'INSERT INTO zamowienia ('. implode(', ', array_keys($data)) .') VALUES ("'. implode('", "', $data) .'")';
  14.  
Go to the top of the page
+Quote Post
peb
post 19.12.2018, 21:34:57
Post #3





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

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


Po raz kolejny już nie zawiodłem się, dziękuję za pomoc.
Wstyd się przyznać w jakim kierunku zmierzałem :-)

Przy okazji pytanie, czemu pustego pola nie uzupełnia wartości NULL skoro takie jest domyślne pole w bazie?

Pozdrawiam i wszystkim możliwie najcieplejszych Świąt.

Go to the top of the page
+Quote Post
Pyton_000
post 19.12.2018, 21:46:57
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Bo ty wstawiałeś tam pusty string a że to pole numeryczne to MySQL sobie zrzutował to na typ numeryczny i wyszło 0. Więc albo jawnie musisz podać NULL albo nie podawać wcale wartości (kolumny też
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 29.03.2024 - 14:16