Foros del Web » Programando para Internet » PHP »

procedimientos almacenados mysql php

Estas en el tema de procedimientos almacenados mysql php en el foro de PHP en Foros del Web. Hola. pues tengo un inconveniente al hacer un listado de unos procedimientos desde php. esto es el código: -------Parámetros para la conexión------------- Código PHP: <?php ...
  #1 (permalink)  
Antiguo 30/11/2011, 17:08
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
procedimientos almacenados mysql php

Hola.
pues tengo un inconveniente al hacer un listado de unos procedimientos desde php.

esto es el código:
-------Parámetros para la conexión-------------

Código PHP:
<?php
$conexion 
mysql_connect($serverx$usuariox$passwdx);
mysql_select_db($bdx$conexion);
?>

-------- ejecuto el procedimiento -----------

Código PHP:
<?php
    $queEmp 
"CALL sp_cabeseraguia('$numguia')";
    
//$query = mysql_query($queEmp, $conexion) or die(mysql_error());
    
$query mysql_query($queEmp) or die(mysql_error());
    
$consulta mysql_num_rows($query);
?>
--------------- imprimir el listado ------------

Código PHP:
 <?php do{?>
       
     <?php echo $consulta['Persomal'?>             
     <?php echo $consulta['Cliente'?>         
     <?php echo $consulta['Ruc'?>      

  <?php }while($consulta mysql_fetch_assoc($query)); ?>
===================================
hasta ahí todo ok.
el problema es cuando quiero listar el segundo sp.
----------ejecuto el procedimiento--------------
Código PHP:
 <?php
 $detale 
"CALL sp_detallegui('$numguia')";
 
$querydet mysql_query($detale) or die(mysql_error());
 
$consultadet mysql_num_rows($querydet);
?>
--------------- imprimir el listado ------------
Código PHP:
      <?php do{?>
  
     <?php echo $consultadet['descripcion'?>                     
     <?php echo $consultadet['cantidad'?>
     <?php echo $consultadet['peso'?>
     <?php echo $consultadet['unidadmedida'?>  
    
  <?php }while($consultadet mysql_fetch_assoc($querydet));?>

el el navegador me sale este resultado.


Nombre persobal Nombre cliente ruc Commands out of sync; you can't run this command now
  #2 (permalink)  
Antiguo 30/11/2011, 19:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: procedimientos almacenados mysql php

Buenas,

De movida te diria que sino tenes mas codigo que

Código PHP:
 <?php do{?>
       
     <?php echo $consulta['Persomal'?>             
     <?php echo $consulta['Cliente'?>         
     <?php echo $consulta['Ruc'?>      

  <?php }while($consulta mysql_fetch_assoc($query)); ?>
Te diria que lo simplifiques a

Código PHP:
<?php do{       
    echo 
$consulta['Persomal'];
    echo 
$consulta['Cliente'];
    echo 
$consulta['Ruc'];  
}
while(
$consulta mysql_fetch_assoc($query)); 
?>
El error "Commands out of sync; you can't run this command now" viene por, citando a MySQL,
"Esto puede pasar, por ejemplo, si está utilizando mysql_use_result() e intenta ejecutar una nueva consulta antes de llamar a mysql_free_result(). También puede pasar si intenta ejecutar dos consultas que retornan datos sin llamar a mysql_use_result() o mysql_store_result() entre ellas. "

Espero que la informacion te sea util, sino avisanos.

Saludos,
  #3 (permalink)  
Antiguo 30/11/2011, 20:08
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: procedimientos almacenados mysql php

Gracias por responder.
en primer lugar uso esa manera de listar por que estoy recien probando las consultas pero esas las voy a poner en div tablas y eso.
y con respecto a mysql_use_result() mysql_free_result() no entiendo tanto pero.
te dejo todo el codigo de la pagina.



Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
      <script> 
function Print(){document.body.offsetHeight;window.print()};
</script>
 

</head>

<!--<body onload="Print()">      imprimir automaticamente -->
<body >
<?php
//error_reporting(0);

if(  isset($_GET['serverx']) &&  $_GET['serverx']!=''){
$serverx $_GET['serverx'];
}else{    
$serverx '0.0.0.0';   }
if(  isset(
$_GET['usuariox']) &&  $_GET['usuariox']!=''){
$usuariox $_GET['usuariox'];
}else{    
$usuariox 'no user';   }

if(  isset(
$_GET['passwdx']) &&  $_GET['passwdx']!=''){
$passwdx $_GET['passwdx'];
}else{    
$passwdx '';   }

if(  isset(
$_GET['bdx']) &&  $_GET['bdx']!=''){
$bdx $_GET['bdx'];
}else{    
$bdx 'no bd';
}

if(  isset(
$_GET['numguiax']) &&  $_GET['numguiax']!=''){
$numguia $_GET['numguiax'];
}else{    
$bdx 'nn';
}
?>

// http://localhost:81/ComTel/sistema/Guiasalida.php?serverx=192.168.1.34&usuariox=comtel&passwdx=123456&bdx=comtelperu&numguiax=N1

<?php
$conexion 
mysql_connect($serverx$usuariox$passwdx);
mysql_select_db($bdx$conexion);
?>

<div >    
    
    <?php
    $queEmp 
"CALL excel_listacabeseraguiasalida('$numguia')";
    
//$query = mysql_query($queEmp, $conexion) or die(mysql_error());
    
$query mysql_query($queEmp) or die(mysql_error());
    
$consulta mysql_num_rows($query);
?>
   
     <?php do{?>
       
     <?php echo $consulta['Persomal'?>             
     <?php echo $consulta['Cliente'?>         
     <?php echo $consulta['Ruc'?>
     <?php echo $consulta['Almacen'?>
     <?php echo $consulta['direccion Alma'?>
     <?php echo $consulta['Destino'?>
     <?php echo $consulta['fechaemicion'?>
     <?php echo $consulta['Enpresa de Transporte'?>
     <?php echo $consulta['Ruc Emp transporte'?>
     <?php echo $consulta['Uni Trans Marca'?>
     <?php echo $consulta['Uni Trans Placa'?>
     <?php echo $consulta['licencia conducir'?>
    
  <?php }while($consulta mysql_fetch_assoc($query)); ?>
    
    <?php
 $detale 
"CALL excel_detalleguiasalida('$numguia')";
 
$querydet mysql_query($detale) or die(mysql_error());
 
$consultadet mysql_num_rows($querydet);
?>
        
      <?php do{?>
  
     <?php echo $consultadet['descripcion'?>             
     <?php echo $consultadet['PartNumber'?>         
     <?php echo $consultadet['cantidad'?>
     <?php echo $consultadet['peso'?>
     <?php echo $consultadet['unidadmedida'?>  
    
  <?php }while($consultadet mysql_fetch_assoc($querydet));?>
                    
</div>
</body>
</html>
  #4 (permalink)  
Antiguo 30/11/2011, 20:20
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: procedimientos almacenados mysql php

encontre esta pagina con referencia a

mysql_free_result()

http://php.net/manual/es/function.mysql-free-result.php
mañana la veré con mas calma hoy ya estoy un poco cansado.
  #5 (permalink)  
Antiguo 30/11/2011, 20:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 27
Antigüedad: 12 años, 4 meses
Puntos: 3
Respuesta: procedimientos almacenados mysql php

El mysql_free_result() libera el resultado de tu query, por lo tanto tendrias que hacer mysql_free_result($query); y deberia andarte el segundo. Cualquier cosa avisa si seguis teniendo problemas.
  #6 (permalink)  
Antiguo 01/12/2011, 08:45
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: procedimientos almacenados mysql php

Hola Panga te agradezco por tus ganas de ayudar.
puse esa linea de código que me dices y nada sigue saliendo lo mismo, o quizá la tengo que poner en otro lugar.

Código PHP:

   <?php
       
    $queEmp 
"CALL excel_listacabeseraguiasalida('$numguia')";
    
//$query = mysql_query($queEmp, $conexion) or die(mysql_error());
    
$query mysql_query($queEmp) or die(mysql_error());
    
$consulta mysql_num_rows($query);
?>
   
     <?php do{?>
       
     <?php echo $consulta['Persomal'?>             
     <?php echo $consulta['Cliente'?>         
     <?php echo $consulta['Ruc'?>
     <?php echo $consulta['Almacen'?>
     <?php echo $consulta['direccion Alma'?>
     <?php echo $consulta['Destino'?>
     <?php echo $consulta['fechaemicion'?>
     <?php echo $consulta['Enpresa de Transporte'?>
     <?php echo $consulta['Ruc Emp transporte'?>
     <?php echo $consulta['Uni Trans Marca'?>
     <?php echo $consulta['Uni Trans Placa'?>
     <?php echo $consulta['licencia conducir'?>
    
  <?php }while($consulta mysql_fetch_assoc($query)); 
    
mysql_free_result($query);

        
?>    
       
              
              
                  <?php
 $queEmp 
"CALL excel_detalleguiasalida('$numguia')";
 
$query mysql_query($queEmp) or die(mysql_error());
 
$consulta mysql_num_rows($query);
 
?>
        
      <?php do{?>
  
     <?php echo $consulta['descripcion'?>         
     <?php echo $consulta['cantidad'?>
     <?php echo $consulta['peso'?>
     <?php echo $consulta['unidadmedida']              
      
?>  
///// aqui deveria poder ejecutar otro procedimiento para las series de los productos
  <?php }while($consulta mysql_fetch_assoc($query));  ?>




Para que tengas una mejor idea de lo que quiero lograr checa [URL="http://foros.cristalab.com/procedimientos-almacenados-mysql-php-t102437/"]este link[/URL] ahi ise la misma pregunta pero mas detallada.

te dejo el código en c# que hago para vaciar la data a un excel. esa misma lógica de vera ser para el php.

// esta funcion en c# recibe un numero de guía.
Código C:
Ver original
  1. public void exportaraexcel(string ng)
  2.         {
  3.  
  4.             string strConnnectionOle = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
  5.             @"Data Source=Guia.xls;" +
  6.             @"Extended Properties=" + '"' + "Excel 8.0;HDR=NO" + '"';
  7.             OleDbConnection oleConn = new OleDbConnection(strConnnectionOle);
  8.             oleConn.Open();
  9.             OleDbCommand cmd = new OleDbCommand();
  10.             cmd.Connection = oleConn;
  11.             dt1 = g.excel_listacabeseraguiasalida(ng);
  12.             foreach (DataRow row in dt1.Rows)
  13.             {
  14.                 cmd.CommandText = "UPDATE [Hoja1$C8:C8] SET F1= = '" + row["fechaemicion"].ToString() + "'";
  15.                 cmd.ExecuteNonQuery();
  16.  
  17.                 cmd.CommandText = "UPDATE [Hoja1$C10:C10] SET F1= '" + row["direccion Alma"].ToString() + "'";
  18.                 cmd.ExecuteNonQuery();
  19.  
  20.                 cmd.CommandText = "UPDATE [Hoja1$C11:C11] SET F1= '" + row["Destino"].ToString() + "'";
  21.                 cmd.ExecuteNonQuery();
  22.  
  23.                 cmd.CommandText = "UPDATE [Hoja1$C14:C14] SET F1= '" + row["Cliente"].ToString() + "'";
  24.                 cmd.ExecuteNonQuery();
  25.  
  26.                 cmd.CommandText = "UPDATE [Hoja1$E15:E15] SET F1= '" + row["Ruc"].ToString() + "'";
  27.                 cmd.ExecuteNonQuery();
  28.             }      //fin     for    Cabesera
  29.  
  30.  
  31.             dtdtalle = g.excel_detalleguiasalida(ng);
  32.             int filadetallexxx = 20;// 1=20 2=26  
  33.             try
  34.             {
  35.                 int cont = 1;
  36.                 foreach (DataRow rowdtalle in dtdtalle.Rows)
  37.                 {
  38.                     cmd.CommandText = "UPDATE [Hoja1$A" + filadetallexxx + ":A" + filadetallexxx + "] SET F1= '" + cont + "'";
  39.                     cmd.ExecuteNonQuery();
  40.  
  41.  
  42.                     cmd.CommandText = "UPDATE [Hoja1$C" + filadetallexxx + ":C" + filadetallexxx + "] SET F1= '" + rowdtalle["descripcion"].ToString() + "'";
  43.                     cmd.ExecuteNonQuery();
  44.                     cmd.CommandText = "UPDATE [Hoja1$I" + filadetallexxx + ":I" + filadetallexxx + "] SET F1= '" + rowdtalle["cantidad"].ToString() + "'";
  45.                     cmd.ExecuteNonQuery();
  46.                     cmd.CommandText = "UPDATE [Hoja1$K" + filadetallexxx + ":K" + filadetallexxx + "] SET F1= '" + rowdtalle["unidadmedida"].ToString() + "'";
  47.                     cmd.ExecuteNonQuery();
  48.  
  49.                     dtns = g.select();
  50.  
  51.                     dtns = g.excel_numseriesguiasalida(ng, rowdtalle["PartNumber"].ToString());
  52.                     int total = dtns.Rows.Count;  // TOT1 =5      TOT2=8        
  53.                     int rowdataset = 0;
  54.                     for (int iyyy = 0; iyyy < total; iyyy++)
  55.                     {
  56.                         filadetallexxx += 1; // 1F1 =21 ***** 1F5 =25 ///  2F1=27 *** 2F8=34 **************23
  57.                         if (rowdataset < total)
  58.                         {
  59.                             if (dtns.Rows[rowdataset][0].ToString() == "0")
  60.                             {
  61.                                 rowdataset += 1;
  62.                                 iyyy += 1;
  63.                             }
  64.                             else
  65.                             {
  66.                                 cmd.CommandText = "UPDATE [Hoja1$C" + filadetallexxx + ":C" + filadetallexxx + "] SET F1= '" + dtns.Rows[rowdataset][0].ToString() + "'";
  67.                                 cmd.ExecuteNonQuery();
  68.                                 rowdataset += 1;
  69.                                 iyyy += 1;
  70.                             }
  71.                         }
  72.                         if (rowdataset < total)
  73.                         {
  74.                             if (dtns.Rows[rowdataset][0].ToString() == "0")
  75.                             {
  76.                                 rowdataset += 1;
  77.                                 iyyy += 1;
  78.                             }
  79.                             else
  80.                             {
  81.                                 cmd.CommandText = "UPDATE [Hoja1$D" + filadetallexxx + ":D" + filadetallexxx + "] SET F1= '" + dtns.Rows[rowdataset][0].ToString() + "'";
  82.                                 cmd.ExecuteNonQuery();
  83.                                 rowdataset += 1;
  84.                                 iyyy += 1;
  85.                             }
  86.                         }
  87.                         if (rowdataset < total)
  88.                         {
  89.                             if (dtns.Rows[rowdataset][0].ToString() == "0")
  90.                             {
  91.                                 rowdataset += 1;
  92.                                 iyyy += 1;
  93.                             }
  94.                             else
  95.                             {
  96.                                 cmd.CommandText = "UPDATE [Hoja1$E" + filadetallexxx + ":E" + filadetallexxx + "] SET F1= '" + dtns.Rows[rowdataset][0].ToString() + "'";
  97.                                 cmd.ExecuteNonQuery();
  98.                                 rowdataset += 1;
  99.                                 iyyy += 1;
  100.                             }
  101.                         }
  102.                         if (rowdataset < total)
  103.                         {
  104.                             if (dtns.Rows[rowdataset][0].ToString() == "0")
  105.                             {
  106.                                 rowdataset += 1;
  107.                                 iyyy += 1;
  108.                             }
  109.                             else
  110.                             {
  111.                                 cmd.CommandText = "UPDATE [Hoja1$F" + filadetallexxx + ":F" + filadetallexxx + "] SET F1= '" + dtns.Rows[rowdataset][0].ToString() + "'";
  112.                                 cmd.ExecuteNonQuery();
  113.                                 rowdataset += 1;
  114.                             }
  115.  
  116.  
  117.                         }
  118.  
  119.  
  120.                     } //fin   for  num de series
  121.                     filadetallexxx += 2;
  122.                     cont += 1;
  123.                 } //fin   for Cuerpo ...descriocion cantidad peso
  124.  
  125.  
  126.             }
  127.             catch (Exception ex)
  128.             {
  129.                
  130.             }
  131.  
  132.             oleConn.Close();
  133.             System.Diagnostics.Process.Start("Guia.xls");
  134.  
  135.         }

la imagen que adjunto es el resultado final que debe quedar.
  #7 (permalink)  
Antiguo 01/12/2011, 09:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: procedimientos almacenados mysql php

La extensión normal de MySQL tiene muchas limitaciones, te recomiendo trates de usar MySQLi o PDO.
  #8 (permalink)  
Antiguo 01/12/2011, 09:47
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: procedimientos almacenados mysql php

Curiosamente reemplazado los procedimientos por los select y ahi si lista sin problemas.
ahora lo que queda es ordenar esa data de manera que pueda imprimirse en esa plantilla.


Hay alguna menera de enves de recorres las filas de esta manera.
Código PHP:
Ver original
  1. <?php do{?>
  2.        <?php echo ($consultapart['Numero'] ) ?>    
  3.              
  4.   <?php }while($consultapart = mysql_fetch_assoc($querypart));  ?>

hacerlo con un for???

for (int i= 0; i< $consultapart.lengt; i++)
{
<?php echo ($consultapart[i][0] ) ?>

}

algo como eso.

y con respecto a MySQLi o PDO. pues mejor creo que no me meto por ahí ya que seria como empezar de cero. y esto lo tengo que hacer lo mas pronto posible.

Etiquetas: mysql, procedimientos
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 10:42.