Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jeśli w formularzu nic nie wybrano to wstaw NULL
kamat94
post 31.01.2017, 10:12:37
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.01.2017

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


Witam, mam problem i nie za bardzo wiem nawet jak go ruszyć.

W jaki sposób zapisać do bazy danych SQLite3 wartość NULL jeśli nic nie wybrano w formularzu.

Baza jest stworzona tak:
  1. CREATE TABLE przyklad (id INTEGER NOT NULL PRIMARY KEY, tytul VARCHAR(100) NOT NULL, start VARCHAR(1500) NOT NULL, koniec VARCHAR(1500) DEFAULT NULL, ilosc VARCHAR(5) NOT NULL, pytanie1 VARCHAR(250) DEFAULT NULL, pytanie2 VARCHAR(250) DEFAULT NULL, pytanie3 VARCHAR(250) DEFAULT NULL, pytanie4 VARCHAR(250) DEFAULT NULL, pytanie5 VARCHAR(250) DEFAULT NULL, pytanie6 VARCHAR(250) DEFAULT NULL, punkt1 VARCHAR(10) DEFAULT NULL, punkt2 VARCHAR(10) DEFAULT NULL, punkt3 VARCHAR(10) DEFAULT NULL, punkt4 VARCHAR(10) DEFAULT NULL, punkt5 VARCHAR(10) DEFAULT NULL, punkt6 VARCHAR(10) DEFAULT NULL, mapa VARCHAR(20) NOT NULL, center VARCHAR(50) NOT NULL, zoom VARCHAR(10) NOT NULL)


W kolumnach przypisany jest domyślnie NULL ale po wysłaniu w bazie NULL się nie pojawia.


Kod pliku odpowiedzialnego za przesyłanie danych do formularza.
  1. /* polaczenie z baza */
  2. $baza = './baza/generator.db';
  3. $db = new SQLite3($baza) or die('Nie mogę otworzyć bazy!');
  4.  
  5. /* odbieramy dane z formularza */
  6. $tytul = SQLite3::escapeString(trim($_POST['tytul']));
  7. $start = SQLite3::escapeString(trim($_POST['start']));
  8. $koniec = SQLite3::escapeString(trim($_POST['koniec']));
  9. $ilosc = SQLite3::escapeString(trim($_POST['ilosc']));
  10. $pytanie1 = SQLite3::escapeString(trim($_POST['pytanie1']));
  11. $pytanie2 = SQLite3::escapeString(trim($_POST['pytanie2']));
  12. $pytanie3 = SQLite3::escapeString(trim($_POST['pytanie3']));
  13. $pytanie4 = SQLite3::escapeString(trim($_POST['pytanie4']));
  14. $pytanie5 = SQLite3::escapeString(trim($_POST['pytanie5']));
  15. $pytanie6 = SQLite3::escapeString(trim($_POST['pytanie6']));
  16. $punkt1 = SQLite3::escapeString(trim($_POST['punkt1']));
  17. $punkt2 = SQLite3::escapeString(trim($_POST['punkt2']));
  18. $punkt3 = SQLite3::escapeString(trim($_POST['punkt3']));
  19. $punkt4 = SQLite3::escapeString(trim($_POST['punkt4']));
  20. $punkt5 = SQLite3::escapeString(trim($_POST['punkt5']));
  21. $punkt6 = SQLite3::escapeString(trim($_POST['punkt6']));
  22. $mapa = SQLite3::escapeString(trim($_POST['mapa']));
  23. $center = SQLite3::escapeString(trim($_POST['center']));
  24. $zoom = SQLite3::escapeString(trim($_POST['zoom']));
  25.  
  26. /* zapisujemy dane do bazy */
  27. if($tytul and $start and $ilosc and $mapa and $center and $zoom) {
  28.  
  29. $results = $db->query(sprintf("INSERT INTO przyklad VALUES (NULL, '$tytul', '$start', '$koniec', '$ilosc', '$pytanie1', '$pytanie2', '$pytanie3', '$pytanie4', '$punkt1', '$punkt2', '$punkt3', '$punkt4', '$mapa', '$dane', '$center', '$zoom')"))
  30. or die(SQLite3::escapeString($db));
  31. }
  32.  
  33. var_dump($results);
  34.  
  35. /* powiadomienie o zapisie danych do bazy */
  36. if ($results) {
  37. echo "Dane zostały zapisane do bazy";
  38. }
  39. else {
  40. echo "Dane nie zostały zapisane do bazy";
  41.  
  42. }
  43. $db->close();


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vokiel
post 31.01.2017, 17:37:16
Post #2





Grupa: Zarejestrowani
Postów: 2 437
Pomógł: 413
Dołączył: 12.03.2007

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


Opcji masz wiele, np
  1. $tytul = isset($_POST['tytul']) ? SQLite3::escapeString($_POST['tytul']) : null;
  2. // podobnie dla pozostałych pól


  1. $parameters = [
  2. 'tytul' => null,
  3. 'start' => null,
  4. ];
  5. foreach($parameters as $param => $value){
  6. if (isset($_POST[$param])) {
  7. $parameters[$param] = SQLite3::escapeString($_POST[$param]);
  8. }
  9. }


A najalepiej zainteresuj się PDO.


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.10.2019 - 05:31