Foros del Web » Programando para Internet » PHP »

No puedo poner un campo como NULL

Estas en el tema de No puedo poner un campo como NULL en el foro de PHP en Foros del Web. Que tal !! estoy insertando un registro al campo " documasociado" de mysql con php Todo genial el unico problema es que quiero que cuando ...
  #1 (permalink)  
Antiguo 26/02/2011, 17:51
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 5 meses
Puntos: 2
Exclamación No puedo poner un campo como NULL

Que tal !! estoy insertando un registro al campo " documasociado" de mysql con php

Todo genial el unico problema es que quiero que cuando no suba un mp3 o cualquier documento asociado el campo quede como NULL por que con el codigo que pongo queda " mp3/"

No tengo mucha cancha en esto asique agradeceria su ayuda aqui va el codigo del insert







Código PHP:

mysql_query
("SET NAMES 'utf8'");
if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "formulario")) {
  
$insertSQL sprintf("INSERT INTO noticias (fecha, fechanac, titulo, detalle, foto, documasociado,  nota, ubicacion, categoria) VALUES (%s, %s, %s, %s, 'fotos/{$_FILES['foto']['name']}', 'mp3/{$_FILES['documasociado']['name']}',%s, %s, %s)",
                       
GetSQLValueString($_POST['fecha'], "date"),
                       
GetSQLValueString($_POST['fechanac'], "date"),
                       
GetSQLValueString($_POST['titulo'], "text"),
                       
GetSQLValueString($_POST['detalles'], "text"),
                      
                    
                       
GetSQLValueString($_POST['nota'], "text"),
                       
GetSQLValueString($_POST['ubicacion'], "text"),
                       
GetSQLValueString($_POST['categoria'], "text"));


                       
$path2="../mp3/";
                       
                       
                       if (
is_uploaded_file($_FILES['documasociado']['tmp_name'])) {
                          
move_uploaded_file($_FILES['documasociado']['tmp_name'], $path2 $_FILES['documasociado']['name']);
                          echo 
'El audio '; echo $_FILES['documasociado']['name']. 'fue correctamente cargado!';
                          } 
  #2 (permalink)  
Antiguo 26/02/2011, 17:58
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: No puedo poner un campo como NULL

pues lo que debes hacer es un sencillo condicional pudieras hacer algo como esto

Código PHP:
Ver original
  1. if(empty($_FILES['documasociado']['name'])){
  2.    $mp3 = "mp3/{$_FILES['documasociado']['name']}";
  3. }
  4. else{
  5.    $mp3 = NULL;
  6. }

y colocas $mp3 donde va el valor del campo de tal manera que te evalue la condicion, espero que te sea de ayuda, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 26/02/2011, 18:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: No puedo poner un campo como NULL

De hecho sí quieres ponerlo en la consulta SQL tienes que hacer que PHP cree la consulta con el NULL:
Código SQL:
Ver original
  1. INSERT INTO foo VALUES(col1, col2, col3) VALUES ('val1', NULL, 'val3')

Saludos.
  #4 (permalink)  
Antiguo 26/02/2011, 20:45
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: No puedo poner un campo como NULL

Gracias carlos probe varias formas de usar la condicion pero no se como igualarlo para que funciones!! ,

Código PHP:

esta por ejemplo fue una de las que probe



                       $path2
="../mp3/";
                       
                       
                       if (
is_uploaded_file($_FILES['documasociado']['tmp_name'])) {
                          
move_uploaded_file($_FILES['documasociado']['tmp_name'], $mp3);
                          echo 
'El audio '; echo $_FILES['documasociado']['name']. 'fue correctamente cargado!';
                          }  
                          
                          
                          
                          
                          
                          if(empty(
$_FILES['documasociado']['name'])){
   
$mp3 "mp3/{$_FILES['documasociado']['name']}";
}
else{
   
$mp3 NULL;

  #5 (permalink)  
Antiguo 26/02/2011, 21:19
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 9 meses
Puntos: 7
Respuesta: No puedo poner un campo como NULL

Me pareces que lo estas haciendo alreves, la condición deberia ir antes.....

Creo que lo que Calos_Belisario quiere decir es esto

Código PHP:
mysql_query("SET NAMES 'utf8'"); 
if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "formulario")) { 

if(empty(
$_FILES['documasociado']['name'])){
   
$mp3 "mp3/{$_FILES['documasociado']['name']}";
}
else{
   
$mp3 NULL;
}

  
$insertSQL sprintf("INSERT INTO noticias (fecha, fechanac, titulo, detalle, foto, documasociado,  nota, ubicacion, categoria) VALUES (%s, %s, %s, %s, 'fotos/{$_FILES['foto']['name']}', '$mp3',%s, %s, %s)"
                       
GetSQLValueString($_POST['fecha'], "date"), 
                       
GetSQLValueString($_POST['fechanac'], "date"), 
                       
GetSQLValueString($_POST['titulo'], "text"), 
                       
GetSQLValueString($_POST['detalles'], "text"), 
                       
                     
                       
GetSQLValueString($_POST['nota'], "text"), 
                       
GetSQLValueString($_POST['ubicacion'], "text"), 
                       
GetSQLValueString($_POST['categoria'], "text")); 


                       
$path2="../mp3/"
                        
                        
                       if (
is_uploaded_file($_FILES['documasociado']['tmp_name'])) { 
                          
move_uploaded_file($_FILES['documasociado']['tmp_name'], $path2 $_FILES['documasociado']['name']); 
                          echo 
'El audio '; echo $_FILES['documasociado']['name']. 'fue correctamente cargado!'
                          } 
Espero haber ayudado

Saludos
  #6 (permalink)  
Antiguo 26/02/2011, 21:57
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: No puedo poner un campo como NULL

gracias! pero probe como dice garot y me inserta "mp3/" como antes y yo necesito que el campo quede vacio cuando no se le asigna un valor!!!!
  #7 (permalink)  
Antiguo 26/02/2011, 22:02
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 4 meses
Puntos: 103
Respuesta: No puedo poner un campo como NULL

vos te referis a que:
Código PHP:
Ver original
  1. mysql_query("SET NAMES 'utf8'");
  2. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "formulario")) {
  3.  
  4. if(empty($_FILES['documasociado']['name'])){
  5.    $mp3 = "mp3/{$_FILES['documasociado']['name']}";
  6.    $path2="../mp3/";
  7. }
  8. else{
  9.    $mp3 = NULL;
  10.    $path2=NULL;
  11. }
  12.  
  13.   $insertSQL = sprintf("INSERT INTO noticias (fecha, fechanac, titulo, detalle, foto, documasociado,  nota, ubicacion, categoria) VALUES (%s, %s, %s, %s, 'fotos/{$_FILES['foto']['name']}', '$mp3',%s, %s, %s)",
  14.                        GetSQLValueString($_POST['fecha'], "date"),
  15.                        GetSQLValueString($_POST['fechanac'], "date"),
  16.                        GetSQLValueString($_POST['titulo'], "text"),
  17.                        GetSQLValueString($_POST['detalles'], "text"),
  18.                        
  19.                      
  20.                        GetSQLValueString($_POST['nota'], "text"),
  21.                        GetSQLValueString($_POST['ubicacion'], "text"),
  22.                        GetSQLValueString($_POST['categoria'], "text"));
  23.  
  24.  
  25.                    
  26.                        
  27.                        
  28.                        if (is_uploaded_file($_FILES['documasociado']['tmp_name'])) {
  29.                           move_uploaded_file($_FILES['documasociado']['tmp_name'], $path2 . $_FILES['documasociado']['name']);
  30.                           echo 'El audio '; echo $_FILES['documasociado']['name']. 'fue correctamente cargado!';
  31.                           }
  #8 (permalink)  
Antiguo 27/02/2011, 10:21
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: No puedo poner un campo como NULL

chwc con eso ultimo deberia funcionar pero aun asi cuando no cargo nada en el formulario para ese campo me lo sigue guardando como "mp3/" ni nulo, ni vacio!!
  #9 (permalink)  
Antiguo 27/02/2011, 10:39
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: No puedo poner un campo como NULL

pues la respuesta esta en el condicional como te lo indique pero como indico gatorv cometi un pequeño error ya que para que un campo lo tome como null debe de hacerse directamente en la consulta entonces que vas a hacer lo siguiente

Código PHP:
Ver original
  1. if(empty($_FILES['documasociado']['name'])){
  2.    $insertSQL = sprintf("INSERT INTO noticias (fecha, fechanac, titulo, detalle, foto, documasociado,  nota, ubicacion, categoria) VALUES (%s, %s, %s, %s, 'fotos/{$_FILES['foto']['name']}', NULL,%s, %s, %s)",
  3.                        GetSQLValueString($_POST['fecha'], "date"),
  4.                        GetSQLValueString($_POST['fechanac'], "date"),
  5.                        GetSQLValueString($_POST['titulo'], "text"),
  6.                        GetSQLValueString($_POST['detalles'], "text"),
  7.                      
  8.                    
  9.                        GetSQLValueString($_POST['nota'], "text"),
  10.                        GetSQLValueString($_POST['ubicacion'], "text"),
  11.                        GetSQLValueString($_POST['categoria'], "text"));                      
  12. }
  13. else{
  14.    $insertSQL = sprintf("INSERT INTO noticias (fecha, fechanac, titulo, detalle, foto, documasociado,  nota, ubicacion, categoria) VALUES (%s, %s, %s, %s, 'fotos/{$_FILES['foto']['name']}', 'mp3/{$_FILES['documasociado']['name']}',%s, %s, %s)",
  15.                        GetSQLValueString($_POST['fecha'], "date"),
  16.                        GetSQLValueString($_POST['fechanac'], "date"),
  17.                        GetSQLValueString($_POST['titulo'], "text"),
  18.                        GetSQLValueString($_POST['detalles'], "text"),
  19.                      
  20.                    
  21.                        GetSQLValueString($_POST['nota'], "text"),
  22.                        GetSQLValueString($_POST['ubicacion'], "text"),
  23.                        GetSQLValueString($_POST['categoria'], "text"));                      
  24. }

de tal manera que si llenes la variable $insertSQL con la consulta como lo desees para que luego ejecutes el query si esta vacio esa parte se llena con NULL si esta lleno se llena con lo que trae el $_FILES['documasociado']['name'] espero que te sirva de ayuda
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 27/02/2011, 11:08
 
Fecha de Ingreso: junio-2010
Mensajes: 128
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: No puedo poner un campo como NULL

Carlos , Gator y todos gracias por su apoyo!!! ya lo pude hacer funcionar!!!!!!!! muchas gracias de verdad, gracias a este foro aprendi mucho

Etiquetas: documento, mp3, mysql, null, nulo, asociados
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 11:42.