Foros del Web » Programando para Internet » PHP »

hacer updates a varias tablas?

Estas en el tema de hacer updates a varias tablas? en el foro de PHP en Foros del Web. Hola, tengo una pregunta para expertos, haber si me ayudan de nuevo: modificar dos tablas una a la vez en una misma página; a continuacion ...
  #1 (permalink)  
Antiguo 04/03/2003, 23:18
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 9 meses
Puntos: 1
hacer updates a varias tablas?

Hola, tengo una pregunta para expertos, haber si me ayudan de nuevo:

modificar dos tablas una a la vez en una misma página;

a continuacion coloco un ejemplo muy simple de lo que he hecho:


en el archivo query.php quiero selecciono las tablas

-----------------------------------------------------------------------------------
Código PHP:
include("conex.php");//conexion bd
$link=conexion();
$div1="divisiones";
$sec1="secciones";

/*mod viene de un vinculo de su fichero padre(donde mod=divisiones)entonces abajo solo valido si es la tabla divisiones o no*/

if($mod==$div1){
  
$result=mysql_query("select * from divisiones order by DIV_ID DESC",$link);
  echo
"<table border=1>
      <tr><td>DIVISIÓN_ID:
      </td><td>DIVISIÓN_NOMBRE:
      </td><td>BORRAR:
      </td><td>EDITAR:
      </td></tr>"
;
      while(
$row=mysql_fetch_array($result)){
          
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><a href=borrar.php?id_borra=$row[DIV_ID]>Borrar</a></td><td><a href=editar.php?id_edit=$row[DIV_ID]>Editar</a></td></tr>",$row['DIVISION_ID'],$row['DIVISION_NOMBRE'],$row['DIV_ID']);
      }
  
mysql_free_result($result);
  echo
"</table>";
}

//tabla secciones
if($mod==$sec1){
$result=mysql_query("select * from secciones order by SEC_ID DESC",$link);
idem anterior......
....

-----------------------------------------------------------------------------------
Luego 

editar
.php//en este archivo tomo los datos del registro

include("conex.php");
$link=conexion();
if(
$result=mysql_query("select * from divisiones where DIV_ID=$id_edit ",$link)){
while(
$row=mysql_fetch_array($result)){
$mostrar1=$row['DIVISION_ID'];
$mostrar2=$row['DIVISION_NOMBRE'];
$mostrar3=$row['DIV_ID'];
if(
$mostrar3==$id_edit){
echo
"<form action=update.php?ide=$mostrar3 method=post>
<input type=text name=divi value=$mostrar1>
<input type=text name=divinom value=$mostrar2>
<input type=submit name=guardar value=guardar style=cursor:hand>
"
;
}
}}


lo mismo para la tabla secciones
...
bla bla
...
-----------------------------------------------------------------------------------
acá tengo el problema

update
.php
//tabla divisiones
if(!isset($mostrar3)){
$result=mysql_query("UPDATE divisiones SET DIVISION_ID='$divi', DIVISION_NOMBRE='$divinom' where DIV_ID=$ide",$link);
$id="divisiones";
header("location:query.php?mod=$id"); //dirigir a la tabla divisiones
}


//tabla secciones
if(!isset($mostrar4)){
$result=mysql_query("UPDATE secciones SET DIVISION_ID='$divi', SECCION_NOMBRE='$divinom' where SEC_ID=$ide",$link);
$id="secciones";
header("location:query.php?mod=$id");          

mi problema está en como lo hago para modificar un registro de la tabla secciones y no se mezclen, he modificado los datos de las tablas pero en el moemto de dirigir el resultado a la tabla correspondiente la envía a la otra....osea modifico la tabla divisiones correctamente pero me la envía a la tabla secciones y como no soy experto en php no logro controlar esto
__________________
Cristian...
  #2 (permalink)  
Antiguo 05/03/2003, 07:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Es recomendable que tras un header() de location lo cual hace que decirle al navegador que "cambie" la página del cliente por la que le indicas en la instrucción uses "exit" para terminar la ejecución del script en ese punto .. pues si haces un "redireccionamiento" en la mayoria de casos requieres que a su vez el script en ejecución terminie y se "ejecute" la página que llamas en el "location" (que a su vez puede ser otro script..)

Código PHP:
if(!isset($mostrar3)){
$result=mysql_query("UPDATE divisiones SET DIVISION_ID='$divi', DIVISION_NOMBRE='$divinom' where DIV_ID=$ide",$link);
$id="divisiones";
header("location:query.php?mod=$id"); //dirigir a la tabla divisiones
exit; // Termina la ejecución del script ..
}


//tabla secciones
if(!isset($mostrar4)){
$result=mysql_query("UPDATE secciones SET DIVISION_ID='$divi', SECCION_NOMBRE='$divinom' where SEC_ID=$ide",$link);
$id="secciones";
header("location:query.php?mod=$id");
exit; 
// Termina la ejecución del script ..          

Un saludo,
  #3 (permalink)  
Antiguo 06/03/2003, 00:07
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 9 meses
Puntos: 1
okk

Hola cluster, antes que todo gracias por responder compadre,
yo había hecho lo que mencionas de esta forma exit(); (¿na que ver?)error de esritura..

le voy ha hacer una mirada al manual mas a fondo y voy a hacerlo como dices....
__________________
Cristian...
  #4 (permalink)  
Antiguo 07/03/2003, 19:13
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 9 meses
Puntos: 1
exit; no me funciono

Hola Cluster, no me funciona el cuento que quiero hacer, te comento en resumen mi problema para ver si me puedes orientar con otra forma de solucion..

bueno mi problema es el sgte:
hago todo bien, incluso modifico bien los datos, mi problema es volver a ver la tabla nuevamente con sus registro modificados, pues me la envia a una tabla equivocada.

ahora bien si yo solo deseo modificar una sola tabla no tengo problema.

el tema de los exit; luego de los header() no me funciona..

creo que mi problema es la forma en que capturo los datos en la página update.php

como podría hacerlo (si lo hago en paginas disitintas no tendría problemas , pero quiero ver la forma de hacerlo en un sola )

gracias de todas formas..
__________________
Cristian...
  #5 (permalink)  
Antiguo 08/03/2003, 10:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tendras que usar variables "de control" .. osese .. alguna variable que le pases a la misma llamada del scirpt para indicar a tu "logica" que proceso es el que tiene que hacer en cada evento ..

Es decir .. algo tipo:

Código PHP:
switch ($_GET['accion']) {

   case 
"insertar_bd":
         
// tu lógica de insertar (INSERT)
         
header("location: $_SERVER['PHP_SELF']");
         exit;
       break;

   case 
"actualizar_bd":
         
// tu lógica de insertar (UPDATE)
         
header("location: $_SERVER['PHP_SELF']");
         exit;
       break;

   case 
"editar":
       
// Tu lógica de editar (formulario con los dts del registro a editar. O en un campo hidden de tu formulario o en el URL del "location" deberas de pasar el "id" del registro q haga la accion ..
         
header("location: $_SERVER['PHP_SELF']?accion=actualizar_db");
         exit;
       break;

   default:
       
// Proceso que se cumpla si se accede tipo script.php sin parámetros .. Por ejemplo aquí harias el "SELECT" (listado) de tu tabla ..       
     // en ese listado generaras links tipo:
     // $_SERVER['PHP_SELF']?accion=editar&id=1  (para editar el registro 1 ...)
     // $_SERVER['PHP_SELF']?accion=borrar&id=1 (para borrar el registro 1)


Un saludo,
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 21:41.