Estoy haciendo una pagina la cual me permita ingresar noticias a una base de datos en DB2,los valores que envio desde un formulario los recibo a traves del metodo post.Eso funciona bien,el ingreso y modificado tambien funciona sin problemas,estas 2 operaciones las realizo con el mismo boton del formulario.pero cuando intento ingresar mas de una noticia en la misma fecha no me resulta,porque en vez de ingresar una noticia nueva,me actualiza la que ya esta ingresada en esa fecha :? .
ahora me explicare mejor :P
mi clave principal es la fecha,dia,mes y año,cuando ingreso una noticia lo hace sin problemas,y si deseo modificar algun campo tambien lo hace bien,pero yo quiero que en un dia se pueda ingresar mas de una noticia asociada a la misma fecha,para lo cual necesitare un contador,para eso estoy ocupando un ciclo for,pero no me resulta y en vez de incrementarse e ingresar mas de una noticia con la misma fecha,se actualiza :? y no entra a mi ciclo for,el cual lo utilizo con un if y todo esto va dentro de un else.
mas abajo detallo mi codigo con comentarios y tambien para que se entienda cual es mi problema.
alguien me puede ayudar a solucionar mi problema,indicandome el error,o si tengo que modificar algo de mi codigo para que me resulte lo que quiero.
muchas gracias
pd:coloco el codigo dentro de las etiquetas code,porque la etiqueta php no me funciono :?
Código:
y la modificacion en alguna noticia ,solo deberia realizarse mientras esten todos los campos en la base de datos.ejemplo de lo que quiero hacer dia:22 mes:09 año:2005 noticia1:huracanes en usa ahora si quiero ingresar otra noticia en la misma fecha,deberia incrementarse el ciclo for y quedar : noticia2:elecciones presidenciales en chile noticia3:guerra en irak y asi sucesivamente deberia incrementarse y agregar una nueva noticia asociada a la fecha del dia que en este caso es la clave primaria.
esa parte la explico mas abajo como comentario en mi codigo.
Código PHP:
<?
//ingresar y modificar
$accion = $_POST['Ingreso'];
if($accion=="grabar")
{
$dia = $_POST['dia'];
$mes = $_POST['mes'];
$anno = $_POST['anno'];//recibo los valores del formulario
$titulo = $_POST['titulo'];
$resumen = $_POST['resumen'];
$detalle = $_POST['detalle'];
include("conexion-noticia.php");
//realizo una consulta para comprobar que los campos existan en la BDD
$query ="SELECT f01datos.$databasename4.ntitulo as TITULO,
f01datos.$databasename4.nresumen as RESUMEN,
f01datos.$databasename4.ndetalle as DETALLE FROM f01datos.$databasename4
WHERE f01datos.$databasename4.ndia=$dia and f01datos.$databasename4.nmes=$mes
and f01datos.$databasename4.nano=$anno";
//me conecto y ejecuto la sentencia sql en la BDD
$result=odbc_Exec($dbconn,$query);
//recorro el resultado de la consulta
$row1 = odbc_fetch_array($result);
//si row1 es diferente a 0 es porque los datos existen y puedo modificar
if($row1!=0){
$mod="UPDATE F01DATOS.$databasename4 SET
ntitulo='$titulo',
nresumen='$resumen',
ndetalle='$detalle'
WHERE nano=$anno and
nmes=$mes and
ndia=$dia";
$query=odbc_exec($dbconn,$mod);
include("grabar-noticia.php");
}
else
{
s//si row1 es igual a 0 es porque en la base de datos no se ha ingresado ninguna noticia para ese dia.
if($row1==0){
//la variable estado la utilizo como una bandera,y deberia estar en v,cada vez que se incremente el contador e ingrese un nuevo registro,aqui como no se ha ingresado nada,ingreso por defecto v.
$estado='v';
//esta es la variable hora la cual llevara el registro ,para cada noticia del dia,con esto pretendo que cada noticia sea unica y este asociada a cierta hora,seria como una clave secundaria.tambien por defecto ingreso la hora del sistema pero sin incrementar nada aun.
//la variable hora y estado trabajan internamente ,asi que yo no las ingreso a taves del formulario.
$hora=date('h-i-s');
$ing="INSERT INTO F01DATOS.$databasename4
values($anno,$mes,$dia,$hora,'$titulo','$resumen','$detalle','$estado')";
//el print lo ocupo para verificar que me ingrese bien la hora
print "hora:".$hora;
$query=odbc_exec($dbconn,$ing);
include("grabar-noticia.php");
odbc_close($dbconn);
}
//hasta aca funciona todo bien.
//este else lo ocupo para utilizar mi tercera funcionalidad del boton,la cual deberia incrementar el contador e ingresar una nueva noticia asociada a una misma fecha
else
{
//esta consulta la utilizo para comprobar que el dia,mes y año esten en la base de datos.
$query ="SELECT f01datos.$databasename4.ndia,
f01datos.$databasename4.nmes,
f01datos.$databasename4.nano FROM f01datos.$databasename4
WHERE f01datos.$databasename4.ndia=$dia and f01datos.$databasename4.nmes=$mes
and f01datos.$databasename4.nano=$anno";
//me conecto y ejecuto la consulta sql en la BDD
$result=odbc_Exec($dbconn,$query);
//recorro el resultado
$row2 = odbc_fetch_array($result);
//este for lo quiero ocupar para que se incremente el contador y me permita ingresar mas de una noticia en la misma fecha
for($contador=0;$contador<20;$contador++)
{
//si row2 es diferente a 0 es porque ya se encuentra esa fecha en la base de datos
if($row2!=0)
{
//y le asigno v a estado
$estado='v';
// y a la variable hora le paso la hora del sistema con la funcion date.
$hora=date('h-i-s');
//y como la fecha ya esta ingresada,solo deberia ingresarme,la hora,titulo,resumen,detalle y estado de la nueva noticia que se ingresa en la misma fecha.
$ing="INSERT INTO F01DATOS.$databasename4
values($hora,'$titulo','$resumen','$detalle','$estado')";
//nuevamente los print los utilizo para ver que las variables contengan los valores.
print "hora:".$hora;
$query=odbc_exec($dbconn,$ing);
include("grabar-noticia.php");
odbc_close($dbconn);
print "contador:".$contador;
}}
}
}
}
?>