Foro de elhacker.net

Programación => 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
  1.  Ejecución de query INSERT en tbl_users;
  2.  Si (ejeccion anterior es correcta){
  3.    Ejecución de query INSERT en tbl_points;
  4.  }De lo contrario{
  5.    Mostrar error y finalizar;
  6.  }

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
  1.  
  2. CREATE PROCEDURE 'Inserts'(
  3.  @ID INT,
  4.  @Nombre VARCHAR(50),
  5.  @Apellido VARCHAR(50)
  6. )AS
  7.  
  8. DECLARE @sNombre AS VARCHAR(100);
  9. SET @sNombre = @Nombre + ' ' @Apellido;
  10.  
  11. BEGIN TRANSACTION 'Insert-tbl_users'
  12.  INSERT INTO 'tbl_users' VALUES (@ID, @Nombre, @Apellido);
  13.  IF @@ERROR <> 0
  14.    BEGIN TRANSACTION 'Insert-tbl_points'
  15.      INSERT INTO 'tbl_points' VALUES (@ID, @sNombre);
  16.      IF @@ERROR <> 0
  17.        SELECT 'Se ingresaron correctamente los datos' AS Msg;
  18.      ELSE
  19.        ROLLBACK TRANSACTION 'Insert-tbl_points'
  20.    END TRANSACTION 'Insert-tbl_points'
  21.  ELSE
  22.    ROLLBACK TRANSACTION 'Insert-tbl_users'
  23. END TRANSACTION 'Insert-tbl_users'
  24. 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
  1.  $sQuery1 = 'INSERT INTO tbl_user ...';
  2.  $sQuery2 = 'INSERT INTO tbl_points ...';
  3.  
  4.  $sResultQuery1 = mysql_query($sQuery1);
  5.  if($sResultQuery1){
  6.    $sResultQuery2 = mysql_query($sQuery2);
  7.    if($sResultQuery2){
  8.      echo 'Las dos querys se han ejecutado correctamente';
  9.    }else{
  10.      echo 'La query2 há fallado';
  11.    }
  12.  }else{
  13.    echo 'La query1 há fallado';
  14.  }

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.