Foros del Web » Programando para Internet » PHP »

no inserta registro en base de datos (inconvenientes con valores vacios)

Estas en el tema de no inserta registro en base de datos (inconvenientes con valores vacios) en el foro de PHP en Foros del Web. Compañeros del foro espero me ayuden tengo la siguiente tabla CREATE TABLE actividad ( id_actividad serial NOT NULL, fec_ini_actividad date, fec_fin_actividad date, hor_ini_actividad character varying(30), ...
  #1 (permalink)  
Antiguo 30/01/2012, 20:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
no inserta registro en base de datos (inconvenientes con valores vacios)

Compañeros del foro espero me ayuden

tengo la siguiente tabla


CREATE TABLE actividad
(
id_actividad serial NOT NULL,
fec_ini_actividad date,
fec_fin_actividad date,
hor_ini_actividad character varying(30),
hor_fin_actividad character varying(30),
fen_actividad integer,
vol_actividad integer,
ban_actividad character varying(20),
nba_actividad integer,
rep_actividad integer,
obs_actividad text,
CONSTRAINT pk_actividad PRIMARY KEY (id_actividad)
)


esta funciona me recibe los datos y los ingresa en la base de datos

public function add_actividad($db)
{

$fec_ini_actividad = $_POST['fec_ini_actividad'];
$fec_fin_actividad = $_POST['fec_fin_actividad'];
$hor_ini_actividad = $_POST['hor_ini_actividad'];
$hor_fin_actividad = $_POST['hor_fin_actividad'];
$fen_actividad = $_POST['fen_actividad'];
$vol_actividad = $_POST['vol_actividad'];
$ban_actividad = $_POST['ban_actividad'];
$nba_actividad = $_POST['nba_actividad'];
$rep_actividad = $_POST['rep_actividad'];
$obs_actividad = $_POST['obs_actividad'];


$ins = $db->prepare("INSERT INTO actividad (id_actividad,fec_ini_actividad,fec_fin_actividad, hor_ini_actividad,hor_fin_actividad,fen_actividad, vol_actividad,ban_actividad,nba_actividad,rep_acti vidad,obs_actividad)
VALUES (nextval('actividad_id_actividad_seq'),:fec_ini_ac tividad,:fec_fin_actividad,:hor_ini_actividad,:hor _fin_actividad,:fen_actividad,:vol_actividad,:ban_ actividad,:nba_actividad,:rep_actividad,:obs_activ idad)");


$ins->bindParam(':fec_ini_actividad', $fec_ini_actividad);
$ins->bindParam(':fec_fin_actividad', $fec_fin_actividad);
$ins->bindParam(':hor_ini_actividad', $hor_ini_actividad);
$ins->bindParam(':hor_fin_actividad', $hor_fin_actividad);
$ins->bindParam(':fen_actividad', $fen_actividad);
$ins->bindParam(':vol_actividad', $vol_actividad);
$ins->bindParam(':ban_actividad', $ban_actividad);
$ins->bindParam(':nba_actividad', $nba_actividad);
$ins->bindParam(':rep_actividad', $rep_actividad);
$ins->bindParam(':obs_actividad', $obs_actividad);

$ins->execute();
}

este es el formulario


<body>
Insertar Nueva Actividad
<br />
Fecha Inicial:
<input name="fec_ini_actividad" type="text" id="fec_ini_actividad" class="required campos_texto" />
<br />
Fecha Final :
<input name="fec_fin_actividad" type="text" id="fec_fin_actividad" class="required campos_texto" />
<br />
Hora Inicial:
<input type="text" name="hor_ini_actividad" id="hor_ini_actividad" value="" />
<br />
Hora Final:
<input type="text" name="hor_fin_actividad" id="hor_fin_actividad" value="" />
<br />
Fenomeno :
<select name="fen_actividad" class="campos_texto validate-selection" id="id">
<option selected="selected" value="0">Seleccione...</option>
<?php
foreach($ff as $field)
{
echo "<option value='$field[cod_fenomeno]'>$field[nom_fenomeno]</option>";
}
?>
</select>
<br />
Volcan :
<select name="vol_actividad" class="campos_texto validate-selection" id="id">
<option sselected="selected" value="0">Seleccione...</option>
<?php
foreach($fv as $field)
{

echo "<option value='$field[cod_volcan]'>$field[nom_volcan]</option>";
}
?>
</select>
<br />
Banda Numero :
<input name="ban_actividad" type="text" id="cor_agencia" class="campos_texto"/>
<br />
Numero Bandas :
<input name="nba_actividad" type="text" id="web_agencia" class="campos_texto"/>


<br />
Reporta :
<select name="rep_actividad" class="campos_texto validate-selection" id="id">
<option selected="selected" value="0">Seleccione...</option>
<?php
foreach($fa as $field)
{
echo "<option value='$field[id_agencia]'>$field[nom_agencia]</option>";
}
?>
<option value="0">No Reporta</option>
</select>
<br />

Observaciones y Descripcion del Fenomeno :

<textarea name="obs_actividad" id="obs_actividad"></textarea>
<br />

<input name="reset" type="reset" class="botones" onclick="valid.reset(); return true" value="Cancelar" /></td>

<input type="submit" name="Submit" value="Insertar" class="botones"/>

</body>



algunos campos pueden ser vacios, por ejemplo envio solo la fecha y no inserta en la base de datos ya hice la prueba solo por sql en postgresql y si inserta

pero por el formulario no
  #2 (permalink)  
Antiguo 31/01/2012, 00:49
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Utiliza print_r($_POST) para ver qué valores recibes por post.
Luego echo de

$ins = $db->prepare("INSERT INTO actividad (id_actividad,fec_ini_actividad,fec_fin_actividad, hor_ini_actividad,hor_fin_actividad,fen_actividad, vol_actividad,ban_actividad,nba_actividad,rep_acti vidad,obs_actividad)
VALUES (nextval('actividad_id_actividad_seq'),:fec_ini_ac tividad,:fec_fin_actividad,:hor_ini_actividad,:hor _fin_actividad,:fen_actividad,:vol_actividad,:ban_ actividad,:nba_actividad,:rep_actividad,:obs_activ idad)");

para ver cómo queda la consulta, así podrás identificar el error.

Salu2!
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 31/01/2012, 06:59
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Gracias por responder repara2

si en el formulario lleno todos los campos si inserta en la base de datos correctamente.
  #4 (permalink)  
Antiguo 31/01/2012, 07:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

si en el formulario lleno todos los campos si inserta en la base de datos correctamente.

pero el requerimiento es puede que todos esten vacios y asi no inserta en la base de datos.
  #5 (permalink)  
Antiguo 31/01/2012, 07:12
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Si lo quieres es insertar campos vacios, comprueba tu tabla, los campos deben estar marcados como NULL, o sea, que admitan null como valor. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 31/01/2012, 07:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Gracias por responder

la tabla acepta valores null

estoy utilizando postgresql

he realizado el insert en el pgAdmin III solo inserto un campo y si me quedan los otros vacios osea null pero al momento de enviarlos por post no inserta nada
  #7 (permalink)  
Antiguo 31/01/2012, 08:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Hice lo que me dijo repara2
print_r($_POST) para ver qué valores recibo por post.


y el resultado es este

Array ( [fec_ini_actividad] => 2012-01-31 [fec_fin_actividad] => [hor_ini_actividad] => [hor_fin_actividad] => [fen_actividad] => 0 [vol_actividad] => 0 [ban_actividad] => [nba_actividad] => [rep_actividad] => 0 [obs_actividad] => [Submit] => Insertar )
  #8 (permalink)  
Antiguo 31/01/2012, 10:25
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

hola amigos del foro

if(!isset($_POST['fec_ini_actividad']) or $_POST['fec_ini_actividad']==NULL or $_POST['fec_ini_actividad']=='' ){
$fec_ini_actividad='NULL';
}else{
$fec_ini_actividad="'".$_POST['fec_ini_actividad']."'";
}

estoy declarando una variable, y identificando si es null , para poder meter el valor a mi base de datos

pero no insertar nada
  #9 (permalink)  
Antiguo 31/01/2012, 15:27
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: no inserta registro en base de datos (inconvenientes con valores vacios)

Hola amigos del foro


ya logro insertar en la base de datos los datos que bien en los input type text

lo realizo de la siguiente manera

Código PHP:
if(!isset($_POST['fec_ini_actividad']) or $_POST['fec_ini_actividad']==NULL or $_POST['fec_ini_actividad']==''){
         
$fec_ini_actividad=NULL;
         }else{
         
$fec_ini_actividad="'".$_POST['fec_ini_actividad']."'";
         } 
pero tengo inconvenientes con los datos que vienen desde un select



Código PHP:
<select name="vol_actividad" class="campos_texto validate-selection" id="vol_actividad">
                                <option selected="selected" value="">Seleccione...</option>
                 <?php
                                    
foreach($fv as $field)
                                    {
                                        
                                        echo 
"<option value='$field[cod_volcan]'>$field[nom_volcan]</option>";
                                    }
                                    
?>
</select>
if(!isset($_POST['vol_actividad']) or $_POST['vol_actividad']==NULL or $_POST['vol_actividad']==''){
$vol_actividad =NULL;
}else{
$vol_actividad="'".$_POST['vol_actividad']."'";
}


inserto todos los datos vacios pero si quiero insertar todos los datos no puedo
realize la prueba y el problema es con los select

Etiquetas: formulario, inserta, registro, sql, tabla
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 14:04.