Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jeśli w formularzu nic nie wybrano to wstaw NULL
Forum PHP.pl > Forum > Bazy danych > SQLite
kamat94
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();


mmmmmmm
  1. if(isset($_POST['tytul']))$tytul = "'" . SQLite3::escapeString(trim($_POST['tytul'])) . "'";else $tytul='NULL';
  2. if(isset($_POST['start']))$start = "'" . SQLite3::escapeString(trim($_POST['start'])) . "'";else $start='NULL';
  3. ...
  4. $results = $db->query(sprintf("INSERT INTO przyklad VALUES (NULL, $tytul, $start,...)"))
  5. or die(SQLite3::escapeString($db));
vokiel
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.
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-2024 Invision Power Services, Inc.