Foros del Web » Programando para Internet » PHP »

No ejecuta el Procedimiento Almacenado

Estas en el tema de No ejecuta el Procedimiento Almacenado en el foro de PHP en Foros del Web. Hola a todos, necesito ayuda porfavor, tengo un problema con un codigo al momento de que el if se cumple y al no hacerlo, todo ...
  #1 (permalink)  
Antiguo 12/09/2011, 11:21
 
Fecha de Ingreso: septiembre-2011
Ubicación: Zacatecas
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
No ejecuta el Procedimiento Almacenado

Hola a todos, necesito ayuda porfavor, tengo un problema con un codigo al momento de que el if se cumple y al no hacerlo, todo se ejecuta perfectamente, traigo el dato a comparar y si cumple entra al if si no se cumple no lo hace, imprimo una prueba donde veo que si se realiza pero el procediminento almacenado no se ejecuta ya que a la hora de consultar la BD(mysql) no cambia nada, agradeceria sus respuestas.
Codigo:
<?
//recibimos las variables enviadas por el formulario
include('BD.php');
$id_actual=$_POST['id_actualizar'];
//""obtengo todas las var!!.

if($id_actual!=0) {
$datos=$mysqli->query("CALL modifica_estacion('$id_actual','$Nombre','$Siglas' ,'$Frecuencia','$Potencia','$Lugar','$Direccion',' $Telefono','$CorteMusic')");
echo $datos;
header("location: inicioA.php");
}
else {
$otra=$mysqli->query("CALL alta_estacion('$Nombre','$Siglas','$Frecuencia','$ Potencia','$Lugar','$Direccion','$Telefono','$Cort eMusic')");
echo $otra;
header("location: inicioA.php");
}
?>
  #2 (permalink)  
Antiguo 12/09/2011, 11:31
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: No ejecuta el Procedimiento Almacenado

Haz probado directo en mysql que el procedimiento este funcionando?
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #3 (permalink)  
Antiguo 12/09/2011, 11:50
 
Fecha de Ingreso: septiembre-2011
Ubicación: Zacatecas
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: No ejecuta el Procedimiento Almacenado

Cita:
Iniciado por bet7o Ver Mensaje
Haz probado directo en mysql que el procedimiento este funcionando?
Si, de hecho es lo que se me hace raro porque ahi los ejecuto y funcionan, ¿los valores en telefono y el id_actual en la BD son INT, aqui en php no importaria porq en PHP el dato toma valor por defaulti no? y anteriormente los probe haciendo la conversion, bueno esa fue otra forma de ver si funcionaba pero tampoco, agradeceria mas opciones, GRACIAS!!
  #4 (permalink)  
Antiguo 12/09/2011, 11:59
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: No ejecuta el Procedimiento Almacenado

Este es un ejemplo de como ejecuto no

Código PHP:
Ver original
  1. "call sp_cotizacion
  2. (
  3.  {$rs['staff_id']},
  4.  {$rs['cliente_id']},
  5.  '{$rs['vehiculo_marca']}',
  6.  '{$rs['vehiculo_nombre']}',
  7.  {$rs['vehiculo_precio']},
  8.  {$rs['vehiculo_descuento']},
  9.  {$rs['val_residual']},
  10.  {$rs['plazo_meses']},
  11.  {$rs['seguro']},
  12.  '{$rs['tipo_pago_seguro']}',
  13.  {$rs['placas']},
  14.  '{$rs['tipo_pago_placas']}',
  15.  {$rs['tenencia']},
  16.  '{$rs['tipo_pago_tenencia']}',
  17.  {$rs['verificacion']},
  18.  '{$rs['tipo_pago_verificacion']}',
  19.  {$rs['accesorios']},
  20.  '{$rs['tipo_pago_accesorios']}',
  21.  {$rs['ext_garantia']},
  22.  '{$rs['tipo_pago_ext_garantia']}',
  23.  '" . (Validate::isNull($rs['observaciones']) ? NULL : Filter::get($rs['observaciones'], 'nl2br', 'addslashes')) . "',
  24.  @response,
  25.  @message
  26. )"

Podrias poner esto para imprimir el query y despues lo ejecutas en mysql, asi veras que en realidad se esta mandando a llamar bien.

Código PHP:
Ver original
  1. echo "CALL modifica_estacion('$id_actual','$Nombre','$Siglas' ,'$Frecuencia','$Potencia','$Lugar','$Direccion',' $Telefono','$CorteMusic')";

Saludos!
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #5 (permalink)  
Antiguo 12/09/2011, 12:45
 
Fecha de Ingreso: septiembre-2011
Ubicación: Zacatecas
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: No ejecuta el Procedimiento Almacenado

Cita:
Iniciado por bet7o Ver Mensaje
Este es un ejemplo de como ejecuto no

Código PHP:
Ver original
  1. "call sp_cotizacion
  2. (
  3.  {$rs['staff_id']},
  4.  {$rs['cliente_id']},
  5.  '{$rs['vehiculo_marca']}',
  6.  '{$rs['vehiculo_nombre']}',
  7.  {$rs['vehiculo_precio']},
  8.  {$rs['vehiculo_descuento']},
  9.  {$rs['val_residual']},
  10.  {$rs['plazo_meses']},
  11.  {$rs['seguro']},
  12.  '{$rs['tipo_pago_seguro']}',
  13.  {$rs['placas']},
  14.  '{$rs['tipo_pago_placas']}',
  15.  {$rs['tenencia']},
  16.  '{$rs['tipo_pago_tenencia']}',
  17.  {$rs['verificacion']},
  18.  '{$rs['tipo_pago_verificacion']}',
  19.  {$rs['accesorios']},
  20.  '{$rs['tipo_pago_accesorios']}',
  21.  {$rs['ext_garantia']},
  22.  '{$rs['tipo_pago_ext_garantia']}',
  23.  '" . (Validate::isNull($rs['observaciones']) ? NULL : Filter::get($rs['observaciones'], 'nl2br', 'addslashes')) . "',
  24.  @response,
  25.  @message
  26. )"

Podrias poner esto para imprimir el query y despues lo ejecutas en mysql, asi veras que en realidad se esta mandando a llamar bien.

Código PHP:
Ver original
  1. echo "CALL modifica_estacion('$id_actual','$Nombre','$Siglas' ,'$Frecuencia','$Potencia','$Lugar','$Direccion',' $Telefono','$CorteMusic')";

Saludos!
porque rs me lo toma como indefinido?
Notice: Undefined variable: rs in C:\xampp\htdocs\Pru\procesaEstacion.php on line 17
al parecer los valores tipo numerico no estan entre ' ' y los de tipo string si, estoy equivocado?

La ejecucion de echo la realiza y me imprime:
CALL alta_estacion('Dato','Dato','Dato',''Dato','Dato', 'Dato''Dato''Dato')

Perdon por no responder inmediatamente pero estaba implementando tu respuesta.
  #6 (permalink)  
Antiguo 12/09/2011, 12:57
Avatar de bet7o  
Fecha de Ingreso: febrero-2010
Ubicación: DF
Mensajes: 315
Antigüedad: 14 años, 2 meses
Puntos: 20
Respuesta: No ejecuta el Procedimiento Almacenado

El rs solo es un ejemplo de como yo ejecuto un procedimiento si tu lo pones esta mal.

Entonces te imprime esto

CALL alta_estacion('Dato','Dato','Dato',''Dato','Dato', 'Dato''Dato''Dato')

fijate que hay unos errores como aqui ,''Dato', o aqui 'Dato''Dato''Dato' puede que sea eso.

tambien puedes ejecutar esto die(mysql_error());, depues de la llamada al procedimiento para ver que te arroja
__________________
Pero el no contaba con una cosa, mi peligroso desinteres por la vida humana
  #7 (permalink)  
Antiguo 12/09/2011, 13:15
 
Fecha de Ingreso: septiembre-2011
Ubicación: Zacatecas
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: No ejecuta el Procedimiento Almacenado

perdon amigo creo que se me paso poner las comas, diskulpa!!
Si me imprime toda la cadena: "CALL alta_estacion('Dato','Dato','Dato',''Dato','Dato', 'Dato','Dato','Dato')" Dato=Valor que introduzco, solo que me sali de la pagina y por eso puse esa palabra para no volver a escribirla, diskulpame!!.

probare ese die(mysql_error());, ya que te digo se me hace muy raro el que no lo ejecute si supuestamente en la herramienta MYSQL Query Browser introduzco los datos perfectamente y los consulto igual.

Te voy explicar exactamente lo que estoy haciendo para ver si me pudieras decir si es posible o no, Lo que pasa que tengo una pagina llamada Estaciones esta me manda a otra dependiendo de la eleccion que tomes, Crear una nueva estacion o Editar una ya existente,

<tr>
<td><b>NOMBRE</b></td>
<td><b>FRECUENCIA</b></td>
<td><b>CORTEMUSIC</b></td>
<td><b>MODIFICAR</b></td>
<td><b>BORRAR</b></td>
</tr>
<?php
do {
echo "<tr>";
echo "<td><b>".$lista->Nombre."</b></td>";
echo "<td><b>".$lista->Frecuencia."</b></td>";
echo "<td><b>".$lista->CorteMusic."</b></td>";
echo'<td><a href="EstacionNueva.php?id='.$lista->idEstaciones. '"><img src="images/edit.png" width="16" height="16"></a></td> ';
echo'<td><a href="borrarEst.php?id=' .$lista->idEstaciones. '"><img src="images/delete.png" width="16" height="16"></a></td> ';
echo "</tr>";
}while ($lista = $datos->fetch_object());

en caso de una Nueva, una variable que envio tomara valor 0 y si es Editar toma valor del idEstacion ya que esta existe y se modificara, la 2da pagina es donde se cargan los datos de los campos que necesito que son los mismos para nueva que una edicion de estacion excepto el id para la comparacion en el if, para manejar la variable del id que lleve utilizo un hidden para no mostrarlo y solo hacer el proceso:
<tr>
<td height='40' colspan='2'></td>
<? echo "<td height='40' colspan='3'><input name='id_actualizar' id='id_actualizar' type='hidden' value='$id_actualizar'/></td>";?>
<td height='40' colspan='3'><?echo "$id_actualizar";?></td>
</tr>

este valor no lo pierdo ya que voy haciendo un script donde me lo arroje y sigue siendo el id correcto.

Bueno siguiendo con la explacion, este llega al ultimo archivo donde recibo los datos y ahi es donde hago la comparacion para ejecutar el PA dependiendo de el id que traiga, como lo dije antes el if si cumple o no entra y realiza su proceso pero no modifica ni crea nada en la BD.

Espero y me entiendas, si necesitas ver parte del codigo pidelo porfavor y espero solucionarlo, GRACIAS!!!,
  #8 (permalink)  
Antiguo 12/09/2011, 17:09
 
Fecha de Ingreso: septiembre-2011
Ubicación: Zacatecas
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: No ejecuta el Procedimiento Almacenado

Amigo, creo que acabo de resolver el problema, aunque fue un poco tonto pero me hizo sufrir, en la BD tenia un valor en el que solo aceptaba 5 caracteres y necesitba 8 entonces jamas se ejecutaba, gracias por tu ayuda, una duda que me surgio viendo tu codigo, esa variable @response y @message son variables de salida?
¿Como las utilzas dentro del PA ya que quize utilizarlas y no me devolvia el mnsaje!

Etiquetas: ejecuta, procedimiento, sql, formulario, almacenar, variables
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 19:46.