Newsgroup: it.comp.www.php
Titolo: zeri e NULL db mysql + php

Ciao a tutti.
Da una form prelevo dei valori non abbligatori che poi vado a mettere in
campi interi di un database Mysql.
Non essendo i dati della form obbligatori  uno puo lasciarne qualcuno vuoto,
questo fa si che nel db mi ritrovi tutti i campi vuoti = 0, io vorrei invece
avere NULL in quei campi del db, e 0 solo nei campi in cui l'utente ha
inserito 0 nella form.
Non credo di essere stato molto chiaro, spero comunque nella vostra
perspicacia
Ciao
Fabio.


Il problema in due parole è che non riesco ad inserire dei valori NULL in
campi interi, che li ammettono.
database Mysql.
se faccio
$variabile = null;
inserendo poi la variabile nel db mi ritrovo 0

Semplice: nel modulo di processo della form, metti delle istruzioni di
verifica dei campi (tipo isset e altre), se c'è scritto qualcosa, passi
al db quel valore, altrimenti gli passi NULL
Ciao
Cla

 ha scritto nel messaggio
news:afathp$4uo$1...@lacerta.tiscalinet.it...

Il problema è proprio come passargli null.
se assegno alla variabile null e lo inserisco nel db, mi mette 0.
$variabile = null;
insert into tabella values (....,'$variabile',....)
nel campo in cui inserisco il null mi ritrovo 0.
:_(
Grazie
Ciao

 insert into tabella values (....,'$variabile',....)
Devi cambiare strategia:
  error_reporting(E_ALL); // fidati
  if ($variabile1=="")
    $insVar1 = "NULL";
  else
    $insVar1 = "'".addslashes($variabile1)."'";
  if ($variabile2=="")
    $insVar2 = "NULL";
  else
    $insVar2 = "'".addslashes($variabile2)."'";
  $query="INSERT INTO tabella (campo) VALUES ($insVar1,$insVar2)";
Le '' vengono messe secondo il caso.

 Le '' vengono messe secondo il caso.
Non ho capito molto la tua soluzione
perchè usi due variabili??  $insVar1 e $insVar2
il prblema è che comunque mettendo come dici tu:
$insVar1 = "NULL";
se poi inserisco la variabile nel db, poi nel campo de database mi ritrovo
ancora 0.
Grazie mille
 ciao

 perchč usi due variabili??  $insVar1 e $insVar2
Perche' se per caso riproponi le variabili trasformati nel form oppure li
visualizzi in una pagina di riassunto senza prenderli di nuovo dal database.
ad esempio
  pippo diventa 'pippo'
  e la stringa vuota diventa NULL
A questo punto (nel form) vedresti le variabili inseriti come sono state
inserite nel DB e non come sono state inserite dal'utente.
Chiaramente potresti fare tutto in un passo solo, ma non e il massimo per la
leggibilita'.
$q="INSERT INTO tabella VALUES (".$var==""?"NULL":"'$var1'".")";
(spero di non aver sbagliato).

 perchč usi due variabili??  $insVar1 e $insVar2
tra altro sbagliavo:
  $query="INSERT INTO tabella (campo1, campo2) VALUES ($insVar1,$insVar2)";
solo un esempio con due campi...


il prblema resta comunque, facendo:
$insVar1 = "NULL";
se poi inserisco la variabile nel db, poi nel campo de database mi ritrovo
ancora 0.
Grazie, ciao

Trovato :))))
  $v = "NULL";
  $q = "INSERT INTO my_table (phone) VALUES ($v)";
Ciao


Boh, era quello che scrivevo. ;-)
$insVar1 = "NULL";
$query="INSERT INTO tabella (campo) VALUES ($insVar1)";
Devi cmq. stare attento, perche' se inserisci un numero di telefono ti
funziona.
Se sono delle stringhe devi aggiungere le ''.

is certo, mi serviva per un numero.
grazie
