Foros del Web » Programando para Internet » PHP »

No llega a la $variable

Estas en el tema de No llega a la $variable en el foro de PHP en Foros del Web. Estimados Foreros: Muy buenas tardes Antes que todo el problema si fuiese SQL, ya lo puse en el foro de base...y espero alguna ayuda. Ahora ...
  #1 (permalink)  
Antiguo 26/02/2013, 13:57
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
No llega a la $variable

Estimados Foreros:

Muy buenas tardes
Antes que todo el problema si fuiese SQL, ya lo puse en el foro de base...y espero alguna ayuda.
Ahora bien, mi consulta esta probada en la consola y corre de buena manera con los datos que tiene ingreso de forma estatica, pero esos deberian llegar desde la pagina index donde ingreso un numero de folio (1300037) y una etiqueta (C23), pero al minuto de cambiar (los valores estaticos por las variables) por el $variable y $variable2, no ingresan a mi consulta, pero si llegan a la pagina y los imprimo.

POdrian ayudarme y decirme que pasa, ademas necesito que recorran la consulta todos los folios que ingrese al mismo tiempo y se comparen

GRACIAS

Código PHP:
Ver original
  1. if($_POST["buscar"] != ''){
  2.     $cont = $_POST["cont-oculto"];
  3.     for($i = 1; $i <= $cont; $i++){
  4.         $variable = $_POST["campo".$i];
  5.         $variable1 = $_POST["campo1".$i];
  6.         $variable2 = $_POST["campo2".$i];
  7.         //echo '<br />';       
  8.         //echo $variable2;
  9. $sumavol = 1;
  10.  
  11. $sql = ( "
  12.           SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  13.           FROM
  14.               (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  15.                FROM
  16.                    (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  17.                     FROM simulaciones
  18.                     WHERE profolio IN ('0700007','1000104') AND patcodigo IN ('A16','C16')) b,esquemaprograma a
  19.                WHERE a.profolio IN ('0700007','1000104') AND a.patcodigo IN ('A16','C16') AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  20.               GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  21.           WHERE a.simcodigo=c.simcodigo
  22.           ORDER BY prodvolumen DESC  " );      
  23.                                                            
  24. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  #2 (permalink)  
Antiguo 26/02/2013, 14:44
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Como envias los datos? los nombres de los campos estan correctos? en el formulario con que metodo estas pasando los datos? como ingresas las variables a la consulta?
__________________
Genio es todo aquel que conoce sus cualidades
  #3 (permalink)  
Antiguo 26/02/2013, 15:01
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Los datos los envio por POST
Los nombres de los campos son correctos
Las variables que ingresan son $variable y $variable1

Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_POST["buscar"] != ''){
  4.     $cont = $_POST["cont-oculto"];
  5.     for($i = 1; $i <= $cont; $i++){
  6.         $variable = $_POST["campo".$i];
  7.         $variable1 = $_POST["campo1".$i];      
  8.        
  9. $sql =  ( "
  10.             SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  11.             FROM
  12.                 (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  13.                  FROM
  14.                      (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  15.                       FROM simulaciones
  16.                       WHERE profolio IN (".$variable.") AND patcodigo IN (".$variable1.")) b,esquemaprograma a
  17.                  WHERE a.profolio IN (".$variable.") AND a.patcodigo IN (".$variable1.") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  18.                 GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  19.             WHERE a.simcodigo=c.simcodigo
  20.             ORDER BY prodvolumen DESC
  21.          " );
  22. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  #4 (permalink)  
Antiguo 26/02/2013, 15:06
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Verifica lo siguiente:

Código SQL:
Ver original
  1. IN ('0700007','1000104')
  2. IN (".$variable.")

el uso de comillas, en las variables guardas la cadena con todo y comillas?, si no es así, tendrías que ver por ese lado, tal vez ese sea el problema
__________________
Genio es todo aquel que conoce sus cualidades
  #5 (permalink)  
Antiguo 26/02/2013, 19:04
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Verifica lo siguiente:

Código SQL:
Ver original
  1. IN ('0700007','1000104')
  2. IN (".$variable.")

el uso de comillas, en las variables guardas la cadena con todo y comillas?, si no es así, tendrías que ver por ese lado, tal vez ese sea el problema
Compañero, puse todas las formas de usar comillas y de la forma que en que lo tengo es la correcta...Creo que deberia concatenar cada una de las lineas SQL , pero no se de que forma hacerlo
  #6 (permalink)  
Antiguo 26/02/2013, 19:38
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Entonces $variable contiene esto: '0700007','1000104' o por lo menos eso es lo que te estoy entendiendo, corrigeme si estoy equivocado, pero si fuera de ese modo, no deberias tener problemas, pero quiere decir que ingresas esa cadena en un campo de texto para enviarla por POST, o la concatenas antes de enviarla? si son 2 campos distintos que concatenas antes de enviar, creo que la manera mas correcta sería que fuesen 2 variables distintas y concatenar en la sentencia
Código MySQL:
Ver original
  1. IN ('" . $variable1 . "','" . $variable2 . "')
a menos que sean mas parametros los que queiras agregar ahí, para mi esa sería una opción viable, o por lo menos para probar que funcione y despues buscar una manera de concatenarlas todas en una sola (podría ser en un arreglo) de la manera que quieres con todo y comillas
__________________
Genio es todo aquel que conoce sus cualidades
  #7 (permalink)  
Antiguo 26/02/2013, 19:53
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Entonces $variable contiene esto: '0700007','1000104' o por lo menos eso es lo que te estoy entendiendo, corrigeme si estoy equivocado, pero si fuera de ese modo, no deberias tener problemas, pero quiere decir que ingresas esa cadena en un campo de texto para enviarla por POST, o la concatenas antes de enviarla? si son 2 campos distintos que concatenas antes de enviar, creo que la manera mas correcta sería que fuesen 2 variables distintas y concatenar en la sentencia
Código MySQL:
Ver original
  1. IN ('" . $variable1 . "','" . $variable2 . "')
a menos que sean mas parametros los que queiras agregar ahí, para mi esa sería una opción viable, o por lo menos para probar que funcione y despues buscar una manera de concatenarlas todas en una sola (podría ser en un arreglo) de la manera que quieres con todo y comillas
Creo haberme explicado de mala forma...los dos numero que tengo puesto fue para una prueba de ordenamiento que deberia realizar.

Ahora mi primer problema es que al ingresar un numero que es recibido por $variable y $variable1 (valores distintos unos es un folio 1300037 y el otro una etiqueta C23 ).

Y el siguiente problema es que de alguna manera debo hacer que me compare y recorra la consulta con todos los numeros de folio que ingrese ( ya que en mi pagina index donde pongo los numeros, agrego campos input dinamicamente ) y en caso de poner 5 folios con su respectica etiqueta, ingresen a la consulta, comparen sus datos y se ordenen.
  #8 (permalink)  
Antiguo 26/02/2013, 20:08
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Ok vamos por partes, primeramente, si tienes codigo tal cual lo pusiste aquí, no veo donde cierres el ciclo for que pones al principio, si debe cerrarse justo despues de asignar valor a la variable $variable1, creo que lo correcto sería hacer lo siguiente:
Código MySQL:
Ver original
  1. for($i = 1; $i <= $cont; $i++){
  2. $variable .= "'" . $_POST["campo".$i] . "',";
  3. $variable1 .= "'" . $_POST["campo1".$i] . "',";
  4. }
  5. $variable = trim($variable, ",");
  6. $variable1 = trim($variable1, ",");//Esto para eliminar la última coma que sale sobrando
Con esto estarías concatenando todos los valores de los campos que creas dinamicamente, como te decia, no se como guardas los valores en dichos campos, pero yo intuyo que no es con las comillas, es por eso que lo puse de esa manera.
Para la segunda duda, para que ocupas ordenar los valores? Creo que lo mas viable sería guardarlos a como vallan llegando y al momento de realizar una consulta utilizar ORDER BY campo y te olvidas de dolores de cabeza, es mi umilde opinión.
__________________
Genio es todo aquel que conoce sus cualidades
  #9 (permalink)  
Antiguo 26/02/2013, 20:17
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Ok vamos por partes, primeramente, si tienes codigo tal cual lo pusiste aquí, no veo donde cierres el ciclo for que pones al principio, si debe cerrarse justo despues de asignar valor a la variable $variable1, creo que lo correcto sería hacer lo siguiente:
Código MySQL:
Ver original
  1. for($i = 1; $i <= $cont; $i++){
  2. $variable .= "'" . $_POST["campo".$i] . "',";
  3. $variable1 .= "'" . $_POST["campo1".$i] . "',";
  4. }
  5. $variable = trim($variable, ",");
  6. $variable1 = trim($variable1, ",");//Esto para eliminar la última coma que sale sobrando
Con esto estarías concatenando todos los valores de los campos que creas dinamicamente, como te decia, no se como guardas los valores en dichos campos, pero yo intuyo que no es con las comillas, es por eso que lo puse de esa manera.
Para la segunda duda, para que ocupas ordenar los valores? Creo que lo mas viable sería guardarlos a como vallan llegando y al momento de realizar una consulta utilizar ORDER BY campo y te olvidas de dolores de cabeza, es mi umilde opinión.

Aqui dejo codigo de una parte de mi pagina en donde ocupo los valores que llegan y como los muestro en mi grafico que debo ordenar de mayor a menor por el volumen que obtengo de la base, y la idea de que se comparen todo es porque cada folio tiene una cantidad de volumenes y la idea es mesclarlos todos para comparar...Nose si me explico bien ?

Código PHP:
Ver original
  1. <table align="left">
  2. <?php
  3.  
  4. if($_POST["buscar"] != ''){
  5.     $cont = $_POST["cont-oculto"];
  6.     for($i = 1; $i <= $cont; $i++){
  7.         $variable = $_POST["campo".$i];
  8.         $variable1 = $_POST["campo1".$i];      
  9.        
  10. $sql =  ( "
  11.             SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  12.             FROM
  13.                 (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  14.                  FROM
  15.                      (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  16.                       FROM simulaciones
  17.                       WHERE profolio IN (".$variable.") AND patcodigo IN (".$variable1.")) b,esquemaprograma a
  18.                  WHERE a.profolio IN (".$variable.") AND a.patcodigo IN (".$variable1.") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  19.                 GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  20.             WHERE a.simcodigo=c.simcodigo
  21.             ORDER BY prodvolumen DESC
  22.          " );";
  23. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  24.  
  25. if( pg_num_rows($result) != 0 ){
  26.     while( $row = pg_fetch_assoc($result) ){           
  27.          $grafico .= "<set label='".$row["prodescuadria"]."' value='".$row["prodvolumen"]."'/>";
  28.             }
  29.         }
  30.     }  
  31. }
  32. $strXML = "<chart caption='Grafico Escuadrias Laterales' xAxisName='Escuadrias' yAxisName='Volumen' showValues='0' decimals='2' formatNumberScale='1' chartRightMargin='30'>" .$grafico. "</chart>";
  33. echo '<br />';
  34. echo '<br />';
  35. echo '<br />';
  36. echo '<br />';
  37.  
  38. echo renderChartHTML("Charts/Bar2D.swf", "",$strXML, "", 560,800, false);
  39. ?>
  40. </table>


Aprovecho de poner el codigo de como ingreso los datos a buscar...
Código PHP:
Ver original
  1. <script type="text/javascript" language="javascript">
  2. var i = 1;
  3.     function agregar()
  4.     {  
  5.         // haremos que el nuevo elemento conserve el valor que ya escribió
  6.         var valor1 = 'Folio';
  7.         var valor2 = 'Etiqueta';
  8.         var valor3 = 'N° Trozos'
  9.         // agrega un elemento a la lista
  10.         $("<li><input id='x' name='campo" +i+ "' type='text' class='loginbox1' size='30' value='" + valor1 + "' /><input id='y' name='campo1" +i+ "' type='text' class='loginbox2' size='6' value='" + valor2 + "' /><input id='z' name='campo2" +i+ "' type='text' class='loginbox3' size='10' value='" + valor3 + "' />&nbsp;</li>").append(
  11.             $('<a href="#">Borrar</a>').click(function(){ $(this).parent().remove(); i--;j=i;j--;$("#cont-oculto").val(j);})
  12.             ).insertBefore("#datos > li:last");
  13.         // limpia el campo de texto y devuélvele el foco
  14.         $("#cont-oculto").val(i);
  15.         i++;
  16.         $("#dato").val("").focus();
  17.     }
  18. </script>
  19.  
  20. </head>
  21. <body>
  22.  
  23. </table>
  24.  
  25. <table width="760" height="0" border="0" align="center" cellpadding="0" cellspacing="0"  cols="0" hspace="0" vspace="0" >
  26.  
  27.   <!--DWLayoutTable-->
  28.   <tr>
  29.     <td height="90" background="imag/top.png">&nbsp;</td>
  30.   </tr>
  31.           <tr>
  32.                   <td>
  33.                   <div id="select" class="borde">
  34.                         <table width="100%" class="text" border="0" cellpadding="0" cellspacing="0" scope="col">
  35.                             <!--DWLayoutTable-->
  36.                            
  37.                                <td width="442" height="20" align="right" valign="middle">
  38.                                
  39.                                 <form name="formulario" method="post" action="buscador.php" >
  40.                                 <ul id="datos">
  41.                                     <a href="javascript:agregar();" align="right">Agregar Campo de Entrada</a>
  42.                                
  43.                                     <li id="campos"></li>
  44.                                 </ul>
  45.                                     <input type="hidden" id="cont-oculto" name="cont-oculto" />
  46.                                     <input type="submit" name="buscar" value="BUSCAR" align="absmiddle" />
  47.                                 </form>      
  48.                                </td>
  49.                             </tr>
  50.                         </table>
  51.                     </div> 
  52.                     </td>
  53.           </tr>
  54. </table>
  55.  
  56. </html>
  #10 (permalink)  
Antiguo 26/02/2013, 20:38
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Tienes esto de mas al final de tu sentencia ";
__________________
Genio es todo aquel que conoce sus cualidades
  #11 (permalink)  
Antiguo 26/02/2013, 20:44
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Tienes esto de mas al final de tu sentencia ";
Y esto que significa

Código HTML:
Ver original
  1. Warning: pg_query() [function.pg-query]: Query failed: ERROR: column "c23" does not exist LINE 8: ... WHERE profolio IN (1300037) AND patcodigo IN (C23)) b,es... ^ in G:\SERVIDOR\WEB\BUSQUEDA\buscador.php on line 182
  2. ERROR EN CONSULTA
  #12 (permalink)  
Antiguo 26/02/2013, 20:51
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Pongamos un ejemplo para ver si estamos en la misma sintonia:
Entro a la pagina y genero 5 campos de texto, en cada campo pongo un valor:
0700507
0200604
0600001
0708009
0100083
Y en las etiquetas:
A16
B16
C16
D16
E16

Y con base en esos valores realizo la consulta, es correcto eso?
__________________
Genio es todo aquel que conoce sus cualidades
  #13 (permalink)  
Antiguo 26/02/2013, 20:54
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Pongamos un ejemplo para ver si estamos en la misma sintonia:
Entro a la pagina y genero 5 campos de texto, en cada campo pongo un valor:
0700507
0200604
0600001
0708009
0100083
Y en las etiquetas:
A16
B16
C16
D16
E16

Y con base en esos valores realizo la consulta, es correcto eso?

CORRECTO !!!

Que resuelva la consulta cada folio y etiqueta y compare y luego lo muestre ...
  #14 (permalink)  
Antiguo 26/02/2013, 20:55
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

OK, con eso que pusiste me diste la idea, si va por donde te decia de las comillas, trata de poner esto, solo para probar:
Código MySQL:
Ver original
  1. $sql = "
  2.            SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  3.            FROM
  4.                (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  5.                 FROM
  6.                     (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  7.                      FROM simulaciones
  8.                      WHERE profolio IN ('".$variable."') AND patcodigo IN ('".$variable1."')) b,esquemaprograma a
  9.                 WHERE a.profolio IN ('".$variable."') AND a.patcodigo IN ('".$variable1."') AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  10.                 GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  11.            WHERE a.simcodigo=c.simcodigo ORDER BY prodvolumen DESC";
__________________
Genio es todo aquel que conoce sus cualidades
  #15 (permalink)  
Antiguo 26/02/2013, 21:10
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
OK, con eso que pusiste me diste la idea, si va por donde te decia de las comillas, trata de poner esto, solo para probar:
Código MySQL:
Ver original
  1. $sql = "
  2.            SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  3.            FROM
  4.                (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  5.                 FROM
  6.                     (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  7.                      FROM simulaciones
  8.                      WHERE profolio IN ('".$variable."') AND patcodigo IN ('".$variable1."')) b,esquemaprograma a
  9.                 WHERE a.profolio IN ('".$variable."') AND a.patcodigo IN ('".$variable1."') AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  10.                 GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  11.            WHERE a.simcodigo=c.simcodigo ORDER BY prodvolumen DESC";

PERFECT !!!

Ahora puedo ingresar los datos como correspondes.


Solo que me complica lo que te comentaba anteriormente que es el ordenamiento o comparacion mejor dicho entre todos los folios insertos..
  #16 (permalink)  
Antiguo 26/02/2013, 21:17
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Explciame bien eso, quieres ordenarlos para compararlos? como quieres hacer eso o con que fin?
__________________
Genio es todo aquel que conoce sus cualidades
  #17 (permalink)  
Antiguo 26/02/2013, 21:30
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No llega a la $variable

Cita:
Iniciado por xtimed Ver Mensaje
Explciame bien eso, quieres ordenarlos para compararlos? como quieres hacer eso o con que fin?
mmmmm La idea es ingresar numero de folio y etiqueta...OK
Con la consulta obtengo por ejemplo volumenes....los cuales saldran ordenados de mayor a menor...
Pero necesito que se ordenen todos los volumenes de todos los folios y NO como los obtengo ahora en el grafico que aparecen

Por ejemplo:

1
2
3
4
1
2
3
4

Entiendes ??

Entonces necesito que se ordenen de forma mezclada =/ no se si me explico bien..

( es posible subir una foto de mi grafico ? no se como hacerlo...solo puedo subir de paginas y no como archivo )
  #18 (permalink)  
Antiguo 27/02/2013, 07:09
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
No entiendo que pasa con mi FOR

Estimados Foreros

Muy Buenos Dias.

Necesito que me ayuden a encontrar el error y solucionarlos ya que me da el siguiente mensaje

parse error syntax error unexpected t_for

esto sucede en la parte de la consulta SQL, que necesito repetir la variable que ingresa

De antemano Muchas Gracias

Código PHP:
Ver original
  1. <?php
  2. if($_POST["buscar"] != ''){
  3.     $cont = $_POST["cont-oculto"];
  4. //  for($i = 1; $i <= $cont; $i++){
  5. //      $variable = $_POST["campo".$i];
  6. //      $variable1 = $_POST["campo1".$i];      
  7.         echo "<br />";
  8.         echo $cont;
  9. $sql =  ( " SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria,prodvolumen,prodpzas,simtrozosconsumo,split_part(prodescuadria,'x',1) as part1,split_part(prodescuadria,'x',2) as part2,prodlargo
  10.             FROM
  11.                 (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo
  12.                  FROM
  13.                      (SELECT profolio,esqcodigo,patcodigo,simcodigo,simtrozosconsumo
  14.                       FROM simulaciones
  15.                       WHERE profolio IN ("
  16.                                           for($i = 1; $i <= $cont; $i++){
  17.                                           $variable = $_POST["campo".$i];      
  18.                                           '".$variable."';
  19.                                           }
  20.                                             ") AND patcodigo IN ('".$variable1."')) b,esquemaprograma a
  21.                  WHERE a.profolio IN ('".$variable."') AND a.patcodigo IN ('".$variable1."') AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo
  22.                 GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a
  23.             WHERE a.simcodigo=c.simcodigo
  24.             ORDER BY prodvolumen DESC
  25.          " );
  26.          
  27. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  28.  
  29. if( pg_num_rows($result) != 0 ){
  30.     while( $row = pg_fetch_assoc($result) ){           
  31.          $grafico .= "<set label='".$row["escuadria"]."' value='".$row["prodvolumen"]."'/>";
  32.             }
  33.         }
  34.     //}
  35. }
  36. $strXML = "<chart caption='Grafico Escuadrias Laterales' xAxisName='Escuadrias' yAxisName='Volumen' showValues='0' decimals='2' formatNumberScale='1' chartRightMargin='30'>" .$grafico. "</chart>";
  37. echo '<br />';
  38. echo '<br />';
  39. echo '<br />';
  40. echo '<br />';
  41.  
  42. echo renderChartHTML("Charts/Bar2D.swf", "",$strXML, "", 560,800, false);
  43. ?>
  #19 (permalink)  
Antiguo 27/02/2013, 07:44
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: No entiendo que pasa con mi FOR

Pasa que no lo puedes hacer asi.... dentro de un string no puedes poner codigo

Código PHP:
Ver original
  1. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  2.           "prodvolumen, ".
  3.           "prodpzas, ".
  4.           "simtrozosconsumo, ".
  5.           "split_part(prodescuadria,'x',1) as part1, ".
  6.           "split_part(prodescuadria,'x',2) as part2, ".
  7.           "prodlargo ".
  8.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  9.                                   "b.simtrozosconsumo ".
  10.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  11.                                               "simtrozosconsumo ".
  12.                                     "FROM simulaciones ".
  13.                                     "WHERE profolio IN (";
  14.  
  15. //Para cada elemento agrego el valor al la cadena $sql
  16. for($i = 1; $i <= $cont; $i++){
  17.      $variable = $_POST["campo".$i];
  18.      if($i!=1) $sql .=",";
  19.      $sql .="'".$variable."'";
  20. }
  21.  
  22. $sql .=") AND patcodigo IN (";
  23.  
  24. ////Aqui un for similar al anterior
  25.  
  26. //// ))b,esquemaprograma a  <--- Aqui hay un error
  27.  
  28. $sql .=")) b,esquemaprograma a WHERE a.profolio IN (";
  29.  
  30. ////Aqui un for similar al anterior
  31.  
  32. $sql .=") AND a.patcodigo IN (";
  33.  
  34. ////Aqui un for similar al anterior
  35.  
  36. $sql .=") AND a.profolio=b.profolio ".
  37.           "AND a.esqcodigo=b.esqcodigo ".
  38.           "AND a.patcodigo=b.patcodigo ".
  39.           "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo)";
  40.  
  41. ///Aqui hay otro error
  42. $sql .="c,produccionsimulada a ";
  43.  
  44. $sql .="WHERE a.simcodigo=c.simcodigo  ".
  45.           "ORDER BY prodvolumen DESC";
  46.  
  47. //Con esto podras ver si se ha construido bien la query
  48. echo $sql."<br />";

Fijate que estoy usando ".=" para concatenar cadenas ($sql.=)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 27/02/2013 a las 07:59
  #20 (permalink)  
Antiguo 27/02/2013, 07:55
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: No entiendo que pasa con mi FOR

Cita:
Iniciado por quimfv Ver Mensaje
Pasa que no lo puedes hacer asi.... dentro de un string no puedes poner codigo

Código PHP:
Ver original
  1. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  2.           "prodvolumen, ".
  3.           "prodpzas, ".
  4.           "simtrozosconsumo, ".
  5.           "split_part(prodescuadria,'x',1) as part1, ".
  6.           "split_part(prodescuadria,'x',2) as part2, ".
  7.           "prodlargo ".
  8.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  9.                                   "b.simtrozosconsumo ".
  10.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  11.                                               "simtrozosconsumo ".
  12.                                     "FROM simulaciones ".
  13.                                     "WHERE profolio IN (";
  14.  
  15. //Para cada elemento agrego el valor al la cadena $sql
  16. for($i = 1; $i <= $cont; $i++){
  17.      $variable = $_POST["campo".$i];
  18.      if($i!=1) $sql .=",";
  19.      $sql .="'".$variable."'";
  20. }
  21.  
  22. $sql .=") AND patcodigo IN (";
  23.  
  24. ////Aqui un for similar al anterior
  25.  
  26. //// ))b,esquemaprograma a  <--- Aqui hay un error
  27.  
  28. $sql .=")) b,esquemaprograma a WHERE a.profolio IN (";
  29.  
  30. ////Aqui un for similar al anterior
  31.  
  32. $sql .=") AND a.patcodigo IN (";
  33.  
  34. ////Aqui un for similar al anterior
  35.  
  36. $sql .=") AND a.profolio=b.profolio ".
  37.           "AND a.esqcodigo=b.esqcodigo ".
  38.           "AND a.patcodigo=b.patcodigo ".
  39.           "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo)";
  40.  
  41. ///Aqui hay otro error
  42. $sql .="c,produccionsimulada a ";
  43.  
  44. $sql .="WHERE a.simcodigo=c.simcodigo  ".
  45.           "ORDER BY prodvolumen DESC";
  46.  
  47. //Con esto podras ver si se ha construido bien la query
  48. echo $sql."<br />";

MUCHAS GRACIAS QUIM !!!

  #21 (permalink)  
Antiguo 27/02/2013, 11:58
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: No llega a la $variable

Haber, quieres que los datos se mezclen? que te aparescan desordenados? o por lo menos eso es lo que te estoy entendiendo
__________________
Genio es todo aquel que conoce sus cualidades

Etiquetas: html, llega, select, sql, variable, 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 17:29.