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:
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)
/* polaczenie z baza */ $baza = './baza/generator.db'; $db = new SQLite3($baza) or http://www.php.net/die('Nie mogę otworzyć bazy!'); /* odbieramy dane z formularza */ $tytul = SQLite3::escapeString(http://www.php.net/trim($_POST['tytul'])); $start = SQLite3::escapeString(http://www.php.net/trim($_POST['start'])); $koniec = SQLite3::escapeString(http://www.php.net/trim($_POST['koniec'])); $ilosc = SQLite3::escapeString(http://www.php.net/trim($_POST['ilosc'])); $pytanie1 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie1'])); $pytanie2 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie2'])); $pytanie3 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie3'])); $pytanie4 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie4'])); $pytanie5 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie5'])); $pytanie6 = SQLite3::escapeString(http://www.php.net/trim($_POST['pytanie6'])); $punkt1 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt1'])); $punkt2 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt2'])); $punkt3 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt3'])); $punkt4 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt4'])); $punkt5 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt5'])); $punkt6 = SQLite3::escapeString(http://www.php.net/trim($_POST['punkt6'])); $mapa = SQLite3::escapeString(http://www.php.net/trim($_POST['mapa'])); $center = SQLite3::escapeString(http://www.php.net/trim($_POST['center'])); $zoom = SQLite3::escapeString(http://www.php.net/trim($_POST['zoom'])); /* zapisujemy dane do bazy */ if($tytul and $start and $ilosc and $mapa and $center and $zoom) { $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')")) or http://www.php.net/die(SQLite3::escapeString($db)); } http://www.php.net/var_dump($results); /* powiadomienie o zapisie danych do bazy */ if ($results) { http://www.php.net/echo "Dane zostały zapisane do bazy"; } else { http://www.php.net/echo "Dane nie zostały zapisane do bazy"; } $db->close();
if(http://www.php.net/isset($_POST['tytul']))$tytul = "'" . SQLite3::escapeString(http://www.php.net/trim($_POST['tytul'])) . "'";else $tytul='NULL'; if(http://www.php.net/isset($_POST['start']))$start = "'" . SQLite3::escapeString(http://www.php.net/trim($_POST['start'])) . "'";else $start='NULL'; ... $results = $db->query(http://www.php.net/sprintf("INSERT INTO przyklad VALUES (NULL, $tytul, $start,...)")) or http://www.php.net/die(SQLite3::escapeString($db));
Opcji masz wiele, np
$tytul = http://www.php.net/isset($_POST['tytul']) ? SQLite3::escapeString($_POST['tytul']) : null; // podobnie dla pozostałych pól
$parameters = [ 'tytul' => null, 'start' => null, ]; foreach($parameters as $param => $value){ if (http://www.php.net/isset($_POST[$param])) { $parameters[$param] = SQLite3::escapeString($_POST[$param]); } }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)