Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: pajaras en 13 Septiembre 2010, 20:39 PM

Título: actualizar tabla automaticamente
Publicado por: pajaras en 13 Septiembre 2010, 20:39 PM
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
Título: Re: actualizar tabla automaticamente
Publicado por: pajaras en 13 Septiembre 2010, 20:40 PM
o sino una vez insertados en tbl_users, actualizar/copiar automaticamente los campos deseados en tbl_points.
gracias
Título: Re: actualizar tabla automaticamente
Publicado por: Shell Root en 13 Septiembre 2010, 20:45 PM
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.
Título: Re: actualizar tabla automaticamente
Publicado por: pajaras en 13 Septiembre 2010, 20:51 PM
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
Título: Re: actualizar tabla automaticamente
Publicado por: pajaras en 13 Septiembre 2010, 21:07 PM
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 );
  }
}
?>
Título: Re: actualizar tabla automaticamente
Publicado por: Shell Root en 13 Septiembre 2010, 21:13 PM
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
Título: Re: actualizar tabla automaticamente
Publicado por: pajaras en 13 Septiembre 2010, 21:20 PM
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.
Título: Re: actualizar tabla automaticamente
Publicado por: Shell Root en 13 Septiembre 2010, 22:02 PM
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.