Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/09/2005, 07:56
jak
 
Fecha de Ingreso: septiembre-2005
Mensajes: 39
Antigüedad: 18 años, 7 meses
Puntos: 0
ayuda con ciclo for e if

hola
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:
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.
y la modificacion en alguna noticia ,solo deberia realizarse mientras esten todos los campos en la base de datos.

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;
          }}

       }
       }
       }

?>
ojala se entienda mi explicacion :(