Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ SQLite _ Jeśli w formularzu nic nie wybrano to wstaw NULL

Napisany przez: kamat94 31.01.2017, 10:12:37

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 http://www.php.net/die('Nie mogę otworzyć bazy!');
  4.  
  5. /* odbieramy dane z formularza */
  6. $tytul = SQLite3::escapeString(http://www.php.net/trim($_POST['tytul']));
  7. $start = SQLite3::escapeString(http://www.php.net/trim($_POST['start']));
  8. $koniec = SQLite3::escapeString(http://www.php.net/trim($_POST['koniec']));
  9. $ilosc = SQLite3::escapeString(http://www.php.net/trim($_POST['ilosc']));
  10. $pytanie1 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie1']));
  11. $pytanie2 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie2']));
  12. $pytanie3 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie3']));
  13. $pytanie4 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie4']));
  14. $pytanie5 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie5']));
  15. $pytanie6 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie6']));
  16. $punkt1 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt1']));
  17. $punkt2 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt2']));
  18. $punkt3 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt3']));
  19. $punkt4 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt4']));
  20. $punkt5 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt5']));
  21. $punkt6 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt6']));
  22. $mapa = SQLite3::escapeString(http://www.php.net/trim($_POST['mapa']));
  23. $center = SQLite3::escapeString(http://www.php.net/trim($_POST['center']));
  24. $zoom = SQLite3::escapeString(http://www.php.net/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(http://www.php.net/sprintf("INSERT INTO przyklad VALUES (NULL, '$tytul', '$start', '$koniec', '$ilosc', '$pytanie1', '$pytanie2', '$pytanie3', '$pytanie4', '$punkt1', '$punkt2', '$punkt3', '$punkt4', '$mapa', '$dane', '$center', '$zoom')"))
  30. or http://www.php.net/die(SQLite3::escapeString($db));
  31. }
  32.  
  33. http://www.php.net/var_dump($results);
  34.  
  35. /* powiadomienie o zapisie danych do bazy */
  36. if ($results) {
  37. http://www.php.net/echo "Dane zostały zapisane do bazy";
  38. }
  39. else {
  40. http://www.php.net/echo "Dane nie zostały zapisane do bazy";
  41.  
  42. }
  43. $db->close();



Napisany przez: mmmmmmm 31.01.2017, 12:08:30

  1. if(http://www.php.net/isset($_POST['tytul']))$tytul = "'" . SQLite3::escapeString(http://www.php.net/trim($_POST['tytul'])) . "'";else $tytul='NULL';
  2. if(http://www.php.net/isset($_POST['start']))$start = "'" . SQLite3::escapeString(http://www.php.net/trim($_POST['start'])) . "'";else $start='NULL';
  3. ...
  4. $results = $db->query(http://www.php.net/sprintf("INSERT INTO przyklad VALUES (NULL, $tytul, $start,...)"))
  5. or http://www.php.net/die(SQLite3::escapeString($db));

Napisany przez: vokiel 31.01.2017, 17:37:16

Opcji masz wiele, np

  1. $tytul = http://www.php.net/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 (http://www.php.net/isset($_POST[$param])) {
  7. $parameters[$param] = SQLite3::escapeString($_POST[$param]);
  8. }
  9. }


A najalepiej zainteresuj się PDO.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)