Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta en procedimiento almacenado para mostrar en PHP

Estas en el tema de Consulta en procedimiento almacenado para mostrar en PHP en el foro de PHP en Foros del Web. Buen dia amigos soy nuevo en esto de php y mysql, tengo un duda de como puedo hacer para mostrar alguna de las consultas del ...
  #1 (permalink)  
Antiguo 15/11/2013, 11:59
 
Fecha de Ingreso: octubre-2013
Ubicación: Loreto, Zacatecas
Mensajes: 24
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Consulta en procedimiento almacenado para mostrar en PHP

Buen dia amigos soy nuevo en esto de php y mysql, tengo un duda de como puedo hacer para mostrar alguna de las consultas del siguiente procedimiento ya que no se como hacerlo, al momento de enviar el nombre de usuario y que se compare la hora de tiempo hay un select despues de los if y else, ese select lo quiero mostrar en una tabla de php, les agradeceria bastante si me pudieran ayudar o darme algun ejemplo en el que me pueda basar para realizar lo que les he comentado, saludos y gracias

Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `ConsultarCancelaciones`(
  2. in nou varchar(25)
  3. )
  4. declare fechac date;
  5. declare tiempo time;
  6. set fechac=(select curdate());
  7. set tiempo=(select curtime());
  8. if (tiempo<="16:00:00") then
  9. (select * from cancelacion where FechaCancelacion=fechac and HoraCancelacion<="16:00:00" and Usuario_idUsuario=(select idUsuario from usuario where Usuario=nou));
  10. (select * from cancelacion where FechaCancelacion=fechac and HoraCancelacion>"16:00:00" and Usuario_idUsuario=(select idUsuario from usuario where Usuario=nou));
  #2 (permalink)  
Antiguo 15/11/2013, 13:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consulta en procedimiento almacenado para mostrar en PHP

<saludos>
Pues creo que debes entonces hacer una función que pueda
retornar lo que buscas, pues el procedimiento como tal imagino
se ejecuta en la bd pero no devuelve mayor tema en el caso de
ejecutarlo desde php, a menos que sea un insert por ej y allí
si devuelve true o false, pero nada más, por lo menos hasta donde
he realizado pruebas

En cuyo caso pasa eso a función, y esa si te debe retornar
lo que necesitas, suerte con eso!
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 15/11/2013, 13:08
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta en procedimiento almacenado para mostrar en PHP

El tema es que ya tienes el procedure... en todo caso, las variables son las que van a cambiar...

pero empecemos con:
Código PHP:
<?php
$sql
'CREATE DEFINER=`root`@`localhost` PROCEDURE `ConsultarCancelaciones`(
IN nou VARCHAR(25)
)
BEGIN
DECLARE fechac DATE;
DECLARE tiempo TIME;
SET fechac=(SELECT CURDATE());
SET tiempo=(SELECT CURTIME());
if (tiempo<="16:00:00") THEN
(SELECT * FROM cancelacion WHERE FechaCancelacion=fechac AND HoraCancelacion<="16:00:00" AND Usuario_idUsuario=(SELECT idUsuario FROM usuario WHERE Usuario=nou));
ELSE
(SELECT * FROM cancelacion WHERE FechaCancelacion=fechac AND HoraCancelacion>"16:00:00" AND Usuario_idUsuario=(SELECT idUsuario FROM usuario WHERE Usuario=nou));
END if;
END'
;

$res mysql_query($sql) or die ("Error Garrafal: ".mysql_error());

while(
$row=mysql_fetch_array($res)){

echo 
$row['FechaCancelacion'];

}
?>
Deberias tener una conexion con la BD

prueba y dinos que sale.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #4 (permalink)  
Antiguo 16/11/2013, 15:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consulta en procedimiento almacenado para mostrar en PHP

<saludos>
Ese código que das es para crear el procedure como tal,
pero para invocarlo debes usar call, es decir, el query para
obtener el store procedure sería

Código PHP:
Ver original
  1. $sql = 'call ConsultarCancelaciones(\'a\');';

Sin embargo, al llamarlo, creo que reafirma lo que yo ya había comentado,
pues siguiendo con tu código muestra esto

Error Garrafal:
PROCEDURE test.ConsultarCancelaciones can't return a result set in the given context

En cuyo caso, la solución de nuevo, creo es pasar de store procedure a function pues el store procedure creo es más para hacer operaciones y recibir por mucho un true o false de resultado, en cambio la función si retornaría lo que se necesite

</saludos>

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 17/11/2013, 10:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consulta en procedimiento almacenado para mostrar en PHP

<saludos>
Uhm, bueno, tal vez sea por versiones de librerías de mysql y php,
pues en mi caso estaba probando el store procedure pero no obtenía nada

En cuanto al llamado si es con call,
pero me tocó cambiar a mysqli todo, pero
para fines de este post

En cuanto al dinamismo del query, propongo esto


Código MySQL:
Ver original
  1. CREATE PROCEDURE ConsultarCancelaciones(
  2. IN nou VARCHAR(25)
  3. )
  4.         DECLARE fechac DATE;
  5.         DECLARE tiempo TIME;
  6.         SET fechac=(SELECT CURDATE());
  7.         SET tiempo=(SELECT CURTIME());
  8.        
  9.         inner_block: BEGIN
  10.                 IF (tiempo<="16:00:00") THEN
  11.                     (SELECT * FROM cancelacion WHERE  FechaCancelacion=fechac AND HoraCancelacion<="16:00:00" AND  Usuario_idUsuario=(SELECT idUsuario FROM usuario WHERE Usuario=nou));
  12.                 ELSE
  13.                     (SELECT * FROM cancelacion WHERE  FechaCancelacion=fechac AND HoraCancelacion>"16:00:00" AND  Usuario_idUsuario=(SELECT idUsuario FROM usuario WHERE Usuario=nou));
  14.                 END IF;              
  15.         END inner_block;

Espero te sirva, suerte con eso!
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 19/11/2013, 10:43
 
Fecha de Ingreso: octubre-2013
Ubicación: Loreto, Zacatecas
Mensajes: 24
Antigüedad: 10 años, 5 meses
Puntos: 0
Sonrisa Respuesta: Consulta en procedimiento almacenado para mostrar en PHP

Muchas gracias a todos por su ayuda, al final lo resolví de la siguiente manera , por ello el motivo de no responder a los comentarios que me hicieron así que les comparto la solución que obtuve investigando en esta mismo foro

Conexión:
Código PHP:
<?php

$procedimiento 
mysqli_connect('localhost''root''''boletos_utna');

if (!
$procedimiento) {
die(
'Error de Conexión (' mysqli_connect_errno() . ') 'mysqli_connect_error());
}

?>
En esta parte lo que hice es enviar el usuario mediante un formulario con el post y después de que se ejecuta el procedimiento obtener la consulta del mismo

Código PHP:
if (isset($_POST["consultar"]))
{
include (
"../conexion.php");

$nou$_POST["usuario"];

$query="CALL ConsultarCancelaciones('".$nou."')";                    

mysqli_multi_query($procedimiento,$query);

$result mysqli_store_result($procedimiento);

echo 
"<table border = '1'>";
echo 
"<tr><td>Folio&nbsp;&nbsp;</td>";
echo 
"<td>Fecha</td>";
echo 
"<td>Hora</td>";
echo 
"<td>Importe</td></tr>";
 
while (
$row mysqli_fetch_row($result))
{
echo 
"<tr>";
echo 
"<td>$row[1]&nbsp;&nbsp;</td>";
echo 
"<td>$row[2]&nbsp;&nbsp;</td>";
echo 
"<td>$row[3]&nbsp;&nbsp;</td>";
echo 
"<td>$row[4]&nbsp;&nbsp;</td>";
echo 
"</tr>";
echo 
"</table>";
 
}


Muchas gracias a todos por su ayuda

Etiquetas: almacenado, fecha, mysql, procedimiento, select, tabla
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 14:24.