Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][sql] Jak umieścić wartość NULL w bazie danych, Przy pomocy zmiennej...
charlie-cherry
post
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 15.12.2007

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


Chcę umieścić w niektórych polach wartości Null. Oczywiście już uwzględniłem taką możliwość w bazie danych. Mam już działające rozwiązanie, ale mój aktualny kod jest bardzo długi:

CODE
mysql_connect(localhost, xxxxx, xxxxxx) or die(mysql_error());
mysql_select_db("xxxx") or die(mysql_error());
mysql_query('SET CHARACTER SET utf8');
mysql_query('SET NAMES utf8');

$numer = NULL;
$tytul = addslashes($_GET['tytul']);;
$rodzaj = "Tipsy i kody";
$komputer = addslashes($_GET['komputer']);
$tresc= addslashes($_GET['tresc']);
$autor = addslashes($_GET['autor']);
$zrodlo = addslashes($_GET['zrodlo']);

if (empty($autor) && empty($zrodlo)) {
$query = "INSERT INTO `wilq`.`tnt` ( `numer` ,
`tytul` , `tresc` , `rodzaj` , `komputer` , `autor` , `zrodlo`)
VALUES ( '$numer' , '$tytul', '$tresc', '$rodzaj', '$komputer', null, null)";
$result = mysql_query($query);
echo $query;}

elseif (empty($autor)) {
$query = "INSERT INTO `wilq`.`tnt` ( `numer` ,
`tytul` , `tresc` , `rodzaj` , `komputer` , `autor` , `zrodlo`)
VALUES ( '$numer' , '$tytul', '$tresc', '$rodzaj', '$komputer', null, '$zrodlo')";
$result = mysql_query($query);
echo $query;}

elseif (empty($zrodlo)) {
$query = "INSERT INTO `wilq`.`tnt` ( `numer` ,
`tytul` , `tresc` , `rodzaj` , `komputer` , `autor` , `zrodlo`)
VALUES ( '$numer' , '$tytul', '$tresc', '$rodzaj', '$komputer', '$autor', null)";
$result = mysql_query($query);
echo $query;}

else {
$query = "INSERT INTO `wilq`.`tnt` ( `numer` ,
`tytul` , `tresc` , `rodzaj` , `komputer` , `autor` , `zrodlo`)
VALUES ( '$numer' , '$tytul', '$tresc', '$rodzaj', '$komputer', '$autor', '$zrodlo')";
$result = mysql_query($query);
echo $query;}

?>


Jak to skrócić? Próbowałem eksperymentować w tym kierunku, ale niestety nie do końca to działa. Dane są przekazywane, ale w bazie danych nie pojawiają się wartości null, a jedynie puste pola.

Kod
  mysql_connect(localhost, xxxx, xxxxx) or die(mysql_error());
  mysql_select_db("xxxx") or die(mysql_error());
    mysql_query('SET CHARACTER SET utf8');
mysql_query('SET NAMES utf8');

$numer = NULL;
$tytul = addslashes($_GET['tytul']);;
$rodzaj = "Tipsy i kody";
$komputer = addslashes($_GET['komputer']);
$tresc= addslashes($_GET['tresc']);
$autor = addslashes($_GET['autor']);
$zrodlo = addslashes($_GET['zrodlo']);

if (empty($autor)) {$autor == 'null';}
if (empty($zrodlo)) {$zrodlo == 'null';}

  $query = "INSERT INTO `wilq`.`tnt` ( `numer` ,
`tytul` ,
`tresc` ,
`rodzaj` ,
`komputer` ,
`autor` ,
`zrodlo`
)
VALUES (
'$numer' , '$tytul', '$tresc', '$rodzaj', '$komputer', '$autor', '$zrodlo')";

   $result = mysql_query($query);
   echo $query;
    
   ?>


Ten post edytował charlie-cherry 26.01.2008, 07:27:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Inti
post
Post #2





Grupa: Zarejestrowani
Postów: 67
Pomógł: 12
Dołączył: 20.01.2008
Skąd: Toruń

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


Szczerze mówiąc to najprościej by było, gdybyś podczas konstrukcji tabeli w bazie, dodał klauzulę do tych pól - DEFAULT NULL, co sprawi że jak nic nie dodasz do tablicy w tych polach, to automatycznie przyjmą wartość NULL.

Zatem tworzysz sobie tabele w ten sposób:

  1. CREATE TABLE wilq (
  2. numer int NOT NULL AUTO_INCREMENT,
  3. tytul varchar(15) NOT NULL,
  4. tresc text NOT NULL,
  5. rodzaj ...
  6. ...
  7. autor varchar(30) DEFAULT NULL,
  8. zrodlo varchar(50) DEFAULT NULL,
  9. PRIMARY KEY(numer)
  10. ) DEFAULT charset=utf8;


W tym wypadku już nie musisz sprawdzać warunku, czy zmienne $autor lub $zrodlo są puste, gdyż jeśli będą to i tak w bazie zostaną ustawione te pola na NULL.

Swoją drogą zrozum, że:

  1. <?php
  2. if (empty($autor)) {
  3. $autor == 'null';
  4. }
  5.  if (empty($zrodlo)) {
  6. $zrodlo == 'null';
  7. }
  8. ?>


w lini 3 i 6 nie ustawiasz żadnej wartości zmiennym $autor oraz $zrodlo, gdyż nie dokonujesz instrukcji przypisania, a porównania logicznego - odsyłam do google, jeśli nie widzisz w tym różnicy.

Pozdrawiam Inti

Ten post edytował Inti 26.01.2008, 09:17:36
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 08:48