Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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
mmmmmmm
post 31.01.2017, 12:08:30
Post #2





Grupa: Zarejestrowani
Postów: 1 411
Pomógł: 308
Dołączył: 18.04.2012

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


  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));
Go to the top of the page
+Quote Post
vokiel
post 31.01.2017, 17:37:16
Post #3





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

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: 22.10.2019 - 20:45