Foros del Web » Programando para Internet » PHP »

Guardar NULL en la BD

Estas en el tema de Guardar NULL en la BD en el foro de PHP en Foros del Web. Hola, Tengo un formulario con bastantes datos, algunos de ellos no obligatorios. Me gustaría que si alguno de estos campos se queda vació en la ...
  #1 (permalink)  
Antiguo 11/05/2007, 07:50
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Guardar NULL en la BD

Hola,
Tengo un formulario con bastantes datos, algunos de ellos no obligatorios. Me gustaría que si alguno de estos campos se queda vació en la BD se guardara "NULL" y no una cadena vacía.

Gracias
  #2 (permalink)  
Antiguo 11/05/2007, 07:52
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Guardar NULL en la BD

En la query puedes poner un campo igual a NULL y el MySQL lo interpreta bien.
Código:
UPDATE tabla SET campo = NULL
Un saludo
  #3 (permalink)  
Antiguo 11/05/2007, 07:59
Avatar de karemlis  
Fecha de Ingreso: agosto-2006
Mensajes: 153
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Guardar NULL en la BD

Si estas trabajando con Mysql, Entonces cuando crees tu base de datos con phpmyadmin puedes dar a atributos el valor null, y te insertara automaticamente la palabra NULL cuando no se ingrese nada en ese campo...
  #4 (permalink)  
Antiguo 11/05/2007, 08:04
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Guardar NULL en la BD

lo primero es especificar que el campo acepte nulos y después puedes hacer tus insert's o update's con NULL.

saludos.

Editado: ya respondieron antes
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 11/05/2007, 08:26
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Guardar NULL en la BD

Saludos.

Eso va a depender del motor de BD que estes usando. Ya te han comentado cómo hacerlo en algunos casos, pero debes tener en cuenta que el comportamiento entre los diferentes motores varía, para tipos de datos, llenado etc.

Sí bien es cierto que existe un estándar SQL, cada uno tiene su propio "valor agregado".

Por otro lado, y sin alejarno mucho, NULL, para algunos motores, es lo mismo que vacío, así que revisa lo que quieres, y aporta mayores datos al hacer tu pregunta.

En general, lo que ya respondieron podría servirte.
__________________
Gracias de todas todas
-----
Linux!
  #6 (permalink)  
Antiguo 11/05/2007, 09:05
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Guardar NULL en la BD

Hola de nuevo,
Debí ser más concreta con la duda... Estoy utilizando mysql. Y todos los campos de la tabla en cuestión estan predeterminados con NULL.
Como tengo muchos campos que podrían ir vacíos (que el usuario no haya introducido nada en alguno de ellos), me gustaría poder hacer algun control antes de guardarlo en la base de datos. El "control" nada más consistiría en que si dado un campo, este está vacio "", en la BD se guarde NULL y no vacío como lo que hago ahora.
  #7 (permalink)  
Antiguo 22/05/2007, 10:23
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Guardar NULL en la BD

Cita:
Iniciado por karemlis Ver Mensaje
Si estas trabajando con Mysql, Entonces cuando crees tu base de datos con phpmyadmin puedes dar a atributos el valor null, y te insertara automaticamente la palabra NULL cuando no se ingrese nada en ese campo...
Por defecto los campos los tengo a NULL.

Pongo un miniejemplo:

formulario:

Código HTML:
<form name="form1" method="post" action="variables.php">
  Nombre: <input type="text" name="nom">
  Apellido: <input type="text" name="cog">
  <input type="submit" name="Submit" value="Enviar">
</form> 
Código PHP:
<?
include ("conexion.php");
$link=Conectarse();
$nom=$_POST['nom'];
$ape=$_POST['ape'];

$mysql="INSERT INTO nombre (`nombre`,`apellidos`) VALUES ('$nom', '$ape')";
mysql_query($mysql$link);
mysql_close($link);
?>
el problema está en que si en el formulario no se introduce ningún dato en la BD (mySQL) guarda un string vacío, y me gustaría que guardara NULL

Gracias
  #8 (permalink)  
Antiguo 22/05/2007, 16:55
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Guardar NULL en la BD

intenta con algo como esto
Código PHP:
include ("conexion.php");
$link=Conectarse();
$nom=(empty($_POST['nom']))?NULL:$_POST['nom'];
$ape=(empty($_POST['ape']))?NULL:$_POST['ape'];

$mysql="INSERT INTO nombre (`nombre`,`apellidos`) VALUES ('$nom', '$ape')";
mysql_query($mysql$link);
mysql_close($link); 
suerte y saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 23/05/2007 a las 16:07
  #9 (permalink)  
Antiguo 23/05/2007, 08:52
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Guardar NULL en la BD

Gracias eits por la respuesta, lo he probado y sí que funciona.
Ahora me surge otro problema, y es que esta base de datos ya la tenía cargada con datos, algunos campos de algunas filas estaban a NULL por defecto (y aparece en cursiva), y a partir de ahora cuando introduzca (por el formulario) algun campo vacío se guardará como NULL.
Entonces cuando haga una consulta, por ejemplo

select * from nombre where ape = "null"

solo me cojera los que haya introducido ultimamente y no los que estan guardados como NULL

Hay alguna manera de coger los dos?
  #10 (permalink)  
Antiguo 23/05/2007, 16:22
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Guardar NULL en la BD

al parecer hay un problema con las comillas aqui
Código PHP:
VALUES ('$nom''$ape'
cuando el valor es null lo coloca como 'null' y mysql lo trata como texto y en realidad no debe ser así, para que null sea tratado como nulo se debe de colocar sin comillas.
prueba con esto
Código PHP:
$nom=(empty($_POST['nom']))?'NULL':'\''.$_POST['nom'].'\'';
$ape=(empty($_POST['ape']))?'NULL':'\''.$_POST['ape'].'\'';
$mysql=sprintf("INSERT INTO nombre (`nombre`,`apellidos`) VALUES (%s, %s)",$nom,$ape); 
aunque veas que 'NULL' esta colocado entre comillas no te preocupes al pasar por el sprintf se las quita.

suerte y saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #11 (permalink)  
Antiguo 24/05/2007, 09:33
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Guardar NULL en la BD

gracias de nuevo eits, lo he probado pero no funciona.
Sólo guarda $nom y $ape tienen valores los dos. Si alguno o ninguno es vacío no guarda nada en la BD.
  #12 (permalink)  
Antiguo 24/05/2007, 10:11
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Guardar NULL en la BD

a mi me funciona, prueba con esto para que veas la diferencia
Código PHP:
$nom=(empty($_POST['nom']))?'NULL':'\'algo\'';
$ape=(empty($_POST['ape']))?'NULL':'\'algo\'';
echo 
$mysql=sprintf("INSERT INTO nombre (`nombre`,`apellidos`) VALUES (%s, %s)",$nom,$ape); 
el resultado es:
INSERT INTO nombre (`nombre`,`apellidos`) VALUES (NULL, NULL)
Código PHP:
$nom=(!empty($_POST['nom']))?'NULL':'\'algo\'';
$ape=(!empty($_POST['ape']))?'NULL':'\'otra cosa\'';
echo 
$mysql=sprintf("INSERT INTO nombre (`nombre`,`apellidos`) VALUES (%s, %s)",$nom,$ape); 
el resultado es:
INSERT INTO nombre (`nombre`,`apellidos`) VALUES ('algo', 'otra cosa')

suerte y saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.

Última edición por eits; 24/05/2007 a las 11:15
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.