Autor Tema: Procedimientos almacenados de mysql CREATE PROCEDURE CALL uso en php consulta  (Leído 8159 veces)

ing_jp

  • Sin experiencia
  • *
  • Mensajes: 21
    • Ver Perfil
Buenas amigos soy nuevo en el tema de PHP... tengo un procedimiento almacenado hecho en MYSQL de esta manera...

Código: [Seleccionar]
CREATE PROCEDURE proc_Verificar_Usuario(
IN Loguin varchar(30),
IN Pass varchar(30),
OUT CodigoGenerado int)
begin
SET @CodigoGenerado = -1;
if(EXISTS (select 1 from tbl_Usuario where (Usuario = Loguin and Password = Pass))) THEN
select CodigoGenerado = ID_Usuario from tbl_Usuario where (Usuario = Loguin and Password = Pass);
end if;
end

NOTA: El procedimiento me corre correctamente
Como pueden observar hay tres paremateros donde dos parametros son IN y un parametro OUT ahora para ejecutar en php este procedimiento tengo esto...

<?php //Verificar Usuario
$login $_POST['txtlogin'];//mandado del form login
$pass $_POST['txtpass'];//mandado del form login

$Host "localhost";
$User "root";
$Password "";
$BaseDatos "mienlace";

//Creo la conexion
$Conexion mysql_connect($Host$User$Password) or die("Fallo de Conexion");
mysql_select_db($BaseDatos$Conexion) or die("Fallo al acceso de la base de datos");

$squery_call_sp "CALL proc_Verificar_Usuario('$login', '$pass', @x);"//llamada al procedimiento "proc_Verificar_Usuario"
$squery_select_sp "SELECT @x;";

$result_Call_sp  mysql_query($squery_call_sp$Conexion);
$Result_Select_sp mysql_query($squery_select_sp$Conexion);

if (mysql_fetch_assoc($result_Call_sp) > 0)//Result_Select_sp

{
header("location:FRM_Principal.php");//dirige al formulario registro
}
else
{
header("location:index.php");//vuelve al formulario loguearse
}
$mysqli->close();//cierro mi conexion
?>

yo quiero obtener ese valor en PHP, que me tiene que devolver el procedimiento y verificar si es mayor que 0 para que me envié al formulario registro.php, la forma que yo tengo no me dá, quiero que me ayuden hacer esto porfavor...
Los que me puedan ayudar me pueden contactar por whatsapp al +591 72164654 (Boliva) o por medio de mi email ing.floresljuanp@gmail.com
« Última modificación: 20 de Mayo 2016, 08:51 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Lo primero que tienes que comprobar es si obtienes los resultados correctos desde la base de datos o no.

El uso de header en php para direccionar a otra url suele dar problemas. El direccionamiento puede hacerse con JavaScript. Es posible que tengas ahí el problema. Prueba a mostrar un mensaje por pantalla como:

   if (mysql_fetch_assoc($result_Call_sp) > 0)//Result_Select_sp
   
   {
      echo("Vamos a dirigirnos al formulario registro");//dirige al formulario registro
   }
   else
   {
      echo("Vamos a dirigirnos al formulario loguearse");//vuelve al formulario loguearse
   }

¿Llegas al mensaje de envío al formulario de registro? Si no llegas es posible que tengas algún problema con la consulta a la base de datos.

Para gestionar este tipo de aplicaciones te resulta necesario PHP, JavaScript y Ajax. Mira los cursos en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=86

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

ing_jp

  • Sin experiencia
  • *
  • Mensajes: 21
    • Ver Perfil
estimado amigo

esto... mysql_fetch_assoc() me manda un array no logro entender esta parte...
quiero que me aclare un poco me puede ayudar en esta parte por favor...


<?php //Verificar Usuario
   $login = $_POST['txtlogin'];//mandado del form login
   $pass = $_POST['txtpass'];//mandado del form login
   
   $Host = "localhost";
   $User = "root";
   $Password = "";
   $BaseDatos = "mienlace";
   
   //Creo la conexion
   $Conexion = mysql_connect($Host, $User, $Password) or die("Fallo de Conexion");
   mysql_select_db($BaseDatos, $Conexion) or die("Fallo al acceso de la base de datos");
   
   $squery_call_sp = "CALL proc_Verificar_Usuario('$login', '$pass', @x);";
   $squery_select_sp = "SELECT @x;";

   //llamada al procedimiento "proc_Verificar_Usuario"
   $result_Call_sp  = mysql_query($squery_call_sp, $Conexion);
   $Result_Select_sp = mysql_query($squery_select_sp, $Conexion);
   
   if (mysql_fetch_assoc($result_Call_sp) > 0)//Result_Select_sp
   
   {
      header("location:FRM_Principal.php");//dirige al formulario registro
   }
   else
   {
      header("location:index.php");//vuelve al formulario loguearse
   }
   $mysqli->close();//cierro mi conexion
?>


porque me bota un array yo lo que quiero es el valor que me tiene que devolver mi procedimiento almacenado, mi procedimiento almacenado corre perfectamente bien


DROP PROCEDURE IF EXISTS proc_Verificar_Usuario;
DELIMITER //
    CREATE PROCEDURE proc_Verificar_Usuario(
            IN    _Usuario VARCHAR(30),
            IN    _Pass       VARCHAR(30),
       OUT   _Result   TINYINT)
    begin
        SET _Result = -1;
         if (Exists(SELECT 1 FROM tbl_Usuario WHERE (Usuario = _Usuario and Password = _Pass))) THEN
        SET _Result := (SELECT ID_Usuario FROM tbl_Usuario WHERE (Usuario = _Usuario AND Password = _Pass));
         end if;
    end//
DELIMITER ;

la cosa es que quiero hacer la llamda correspondiente al procedimiento donde tambien tenga el valor que me devuelve para hacer la comparacion...


<?php //Verificar Usuario
   $login = $_POST['txtlogin'];//mandado del form login
   $pass = $_POST['txtpass'];//mandado del form login
   
   //me conecto al servidor y BD
   $Hosting = "localhost";
   $User = "root";
   $Password = "";
   $DataBase = "mienlace";
   
   //Creo la conexion
   $Conexion = mysql_connect($Hosting, $User, $Password) or die("Fallo de Conexion");
   mysql_select_db($DataBase, $Conexion) or die("Fallo al acceso de la base de datos");
      
   $Squery_call_sp = "CALL proc_Verificar_Usuario('$login', '$pass', @x);";
   $Squery_select_sp = "SELECT @x;";
   
   //llamada al procedimiento "proc_Verificar_Usuario"
   $Result_Call_sp  = mysql_query($Squery_call_sp, $Conexion);
   $Result_Select_sp = mysql_query($Squery_select_sp, $Conexion);
   
   IF ((mysql_fetch_assoc($Result_Select_sp)) > 0)
   {
      $sql1="SELECT ID_Cliente, CI, Nombre, Apellido, ID_Usuario FROM tbl_cliente WHERE ID_Usuario='$ID_USUARIOS'";
      $result1=mysql_query($sql1);
      $row1=mysql_fetch_array($result1);
      print_r($row1);
      $ID_USUARIOCLI=$row1['ID_Cliente'];
      $count=mysql_num_rows($result1);

      $sql1="SELECT ID_Cliente, CI, Nombre, Apellido, ID_Usuario FROM tbl_cliente WHERE ID_Usuario='$ID_USUARIOS'";
      $result1=mysql_query($sql1);
      $row1=mysql_fetch_array($result1);
      print_r($row1);
      $ID_USUARIOCLI=$row1['ID_Cliente'];
      $count=mysql_num_rows($result1);
            
      if($count>0)//Verifico si el usuario ya tiene sus datos personales registrados
      {
         header("location:FRM_Perfil.php");//dirige al formulario perfil
      }
      else
      {
         header("location:FRM_registrarCliente.php");//dirige al formulario registro
      }
      
   }
   else
   {
      header("location:index.php);//vuelve al formulario loguearse
   }
   $mysqli->close();
?>

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".