actualizar tabla automaticamente

Iniciado por pajaras, 13 Septiembre 2010, 20:39 PM

0 Miembros y 1 Visitante están viendo este tema.

pajaras

Hola a todos, tengo un problema con mysql:
En mi database tengo dos tablas, tbl_users, tbl_points. Cuando alguien se registra inserta los valores directamente en tbl_users. Entonces quisiera que a la vez ALGUNOS valores de esos (ej: userID, username, nick...) se insertaran tambien en tbl_points. Como puedo hacer eso mediante dreamweaver? o si hace falta escribiendo el codigo a mano?

Gracias a todos, pajaras

pajaras

o sino una vez insertados en tbl_users, actualizar/copiar automaticamente los campos deseados en tbl_points.
gracias

Shell Root

Código (php) [Seleccionar]
 Ejecución de query INSERT en tbl_users;
 Si (ejeccion anterior es correcta){
   Ejecución de query INSERT en tbl_points;
 }De lo contrario{
   Mostrar error y finalizar;
  }


Prefiero usar Store Procedure, por si algún fallo en la query1 o query2, usar la función ROLLBACK.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

pajaras

mas o menos lo entiendo, pero soy "nuevo" en esto, estoy utilizando phpadmin de mi hosting, ese codigo lo debo insertar en la pestaña SQL, pero una vez lo inserte y ponga GO, lo ejecuta y luego se borra la acción, no lo conserva para siempre.

Me lo puedes explicar mejor?
muchas gracias

pajaras

Gracias por todo shellroot, este es el codigo, ya lo entiendo pero el if insert en tbl_points donde lo pongo?

<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['apodo'])) {
  $loginUsername=$_POST['apodo'];
  $password=$_POST['pwd'];
  $MM_fldUserAuthorization = "userGroup";
  $MM_redirectLoginSuccess = "login_succed.php";
  $MM_redirectLoginFailed = "login_failed.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_conn_eeibairsoft, $conn_eeibairsoft);
     
  $LoginRS__query=sprintf("SELECT apodo_nick, pwd, userGroup FROM tbl_users WHERE apodo_nick='%s' AND pwd='%s'",
  get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
   
  $LoginRS = mysql_query($LoginRS__query, $conn_eeibairsoft) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
   
    $loginStrGroup  = mysql_result($LoginRS,0,'userGroup');
   
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;        

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];   
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>

Shell Root

Haz un script en php, donde contenga los campos necesarios para llenar la tabla tbl_users, después verifica que si la ejecución de la query1 es correcta, pasa a insertar los valores que os quereis en la tabla tbl_points. Esta sería la forma simple, pero con complicaciones a futuro.

Esta sería la forma más adecuada de hacerlo, crear un Store Procedure, puede ser así,
Código (sql) [Seleccionar]


CREATE PROCEDURE 'Inserts'(
  @ID int,
  @Nombre VARCHAR(50),
  @Apellido VARCHAR(50)
)AS

DECLARE @sNombre AS VARCHAR(100);
SET @sNombre = @Nombre + ' ' @Apellido;

BEGIN TRANSACTION 'Insert-tbl_users'
  INSERT INTO 'tbl_users' VALUES (@ID, @Nombre, @Apellido);
  IF @@ERROR <> 0
    BEGIN TRANSACTION 'Insert-tbl_points'
      INSERT INTO 'tbl_points' VALUES (@ID, @sNombre);
      IF @@ERROR <> 0
        SELECT 'Se ingresaron correctamente los datos' AS Msg;
      ELSE
        ROLLBACK TRANSACTION 'Insert-tbl_points'
    END TRANSACTION 'Insert-tbl_points'
  ELSE
    ROLLBACK TRANSACTION 'Insert-tbl_users'
END TRANSACTION 'Insert-tbl_users'
GO


PD: Lo codee de rapidin, así que puede estar malo. Además creo que lo hice pensando en MSSQL. xD
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

pajaras

uffff, esto me queda un poco lejos creo, sorry.
No hay ningun modo de aprovechar mi codigo anterior y poner un:

else if{
INESRT INTO tbl_points
}

gracias, de este modo me ahorraria bastantes problemas por mi parte.

Shell Root

Por eso, a ver,
Código (php) [Seleccionar]
 $sQuery1 = 'INSERT INTO tbl_user ...';
 $sQuery2 = 'INSERT INTO tbl_points ...';

 $sResultQuery1 = mysql_query($sQuery1);
 if($sResultQuery1){
   $sResultQuery2 = mysql_query($sQuery2);
   if($sResultQuery2){
     echo 'Las dos querys se han ejecutado correctamente';
   }else{
     echo 'La query2 há fallado';
   }
 }else{
   echo 'La query1 há fallado';
 }


Pero en un futuro, la query1 puede pasar por el if correctamente, pero la query2 no se ejecutaría, así que no puedes deshacer la ejecución de la primer query.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.