Foros del Web » Programando para Internet » PHP »

paso de parámetros php

Estas en el tema de paso de parámetros php en el foro de PHP en Foros del Web. Creo que lo que tendrías que explicar no es tanto el código (que ya se ha visto) sino cómo es el flujo de operaciones que ...

  #31 (permalink)  
Antiguo 19/09/2008, 02:49
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: paso de parámetros php

Creo que lo que tendrías que explicar no es tanto el código (que ya se ha visto) sino cómo es el flujo de operaciones que haces.

Es decir, a mi no me queda claro del todo. CREO que lo que haces es algo como:
1. Se carga consulta.php devolviendo el formulario vacío.
2. Se rellena el formulario y se envía de nuevo a consulta.php
3. Se devuelve el enlace a condiciones.php con los campos seleccionados
4. al pinchar se abre condiciones.php

¿Es así o cómo es?
  #32 (permalink)  
Antiguo 19/09/2008, 10:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: paso de parámetros php

Cita:
Iniciado por catri Ver Mensaje
[...] Si paso todo por GET, soluciono el problema de las variables pero me aparece otros, y es que me obliga a hacer la consulta y luego añadir las condiciones, pq sino no pasa ningún parámetro. [...]
Y se supone debemos entenderlo ... un error al momento de plantear temas es suponer quien nos lee sabe lo que hacemos y cómo lo hacemos, o que esta dedicado a atendernos.

Te invito a que simplifiques tu problema. Muestra lo que haces --el proceso-- con apenas uno o dos parámetros; pero es importante ver bien, qué es lo que haces; insisto, estarás haciendo una reasignación en algún lugar. No sé ni de cuántos archivos estamos hablando. Entonces, ¿podrías crear un --muy-- mini-sistema replicando lo mejor posible lo que haces?.


Cita:
Iniciado por catri Ver Mensaje
Y Jam, si fuese una experta en php, no tendría estos problemas, yo creo que es obvio.
Es demasiado obvio. Mi invitación es a que te detengas a leer un poco, créeme que en muchos casos (y creo este es uno, sino no lo haría) es la solución más breve y más efectiva. Tus dudas son teóricas, el error parece ser demasiado simple... demasiado.

Saludos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #33 (permalink)  
Antiguo 19/09/2008, 10:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: paso de parámetros php

Hola:

Para pasar variables por url, lo mejor es usar un formulario... ten en cuenta que si tienes caracteres especiales con un enlace debes "escaparlos" (creo que en php es con url_encode()), pero con un form, el navegador lo hace solo... y si quieres darle al botón aspecto de enlace, siempre puedes maquillarlo con estilos.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #34 (permalink)  
Antiguo 22/09/2008, 01:24
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola, muchas gracias a todos, voy a intentar explicar el proceso.



Tengo un página consulta.php donde se muestran las tablas que se pueden consultar y tb se encuentran los textarea donde el usuario pone los campos por los que quiere consultar.

Código HTML:
<form action="consulta.php" method="POST">

                                <input type="text" name="campo1" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo2" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo3" size="9" maxlength="50" class="consulta">

                                <br>

                                <br>

                                <input type="text" name="campo4" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo5" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo6" size="9" maxlength="50" class="consulta">

                                <br>

                                <br>

                                <input type="text" name="campo7" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo8" size="9" maxlength="50" class="consulta">

                                <input type="text" name="campo9" size="9" maxlength="50" class="consulta">
	
Una vez especificados esos campos, el usuario tiene dos opciones:



1. ejecutar la consulta directamente, cn lo que salen todos los datos de los campos seleccionados.


Código HTML:
<input type="submit"  value="Ejecutar consulta" class="boton">
							</form> 
2. establecer condiciones sobre los campos seleccionados, para ellos nos vamos mediante enlace a condiciones.php.

Código PHP:
<a class="boton" href="condiciones.php?campo1=<?php echo $campo1?>&campo2=<?php echo $campo2?>&campo3=<?php echo $campo3?>&campo4=<?php echo $campo4?>&campo5=<?php echo $campo5?>&campo6=<?php echo $campo6?>&campo7=<?php echo $campo7?>&campo8=<?php echo $campo8?>&campo9=<?php echo $campo9?>&cadenaSQL=<?php echo $cadenaSQL?>">Añadir condiciones</a>
PROBLEMA: me pasa bien los parámetros si primero ejecuto la consulta y salen todos los campos y a continuacion le doy al enlace de condiciones.php, pero lo que quiero es que el usuario puede establecer las condiciones antes de ejecutar la consulta.



Muchas gracias a todos.

Saludos.

Última edición por jam1138; 22/09/2008 a las 01:32 Razón: Arreglo código ...
  #35 (permalink)  
Antiguo 22/09/2008, 01:42
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola, voy a poner el código pero trabajando con una bd ficticica y dos campos de consulta, un minisistema como dice jam a ver si así se ve más claro lo que estoy haciendo:

Miniconsulta.php


Código PHP:
<?
    session_start
();
    if (
$_SESSION["acceso"] == 0)
    {   
        
        
header("Location: index.php");
        
session_unset();
        
session_destroy();
        exit();
    }
    else {
?>

<html>
    <head>
    
        <?php
            
require_once('baseDeDatos.php');
        
?>
        
        ...
                <table height="10%">
                    
                
                    
                    <tr >
                        <?//BASES DE DATOS?>
                        <td align="right">
                            
                            <TABLE border="2"  width="10" class="consulta" align="left">
                                <TR>
                                    <TD width="20" colspan="3" valign="top" align="center" bgcolor="#CFCFCF">
                                        CLIENTES
                                    </TD>                
                                </TR>
                                
                                <TR>
                                    <TD width="20" colspan="3" valign="top" align="center">
                                        Nombre
                                    </TD>
                                </TR>
                                
                                <TR>
                                    <TD width="20" colspan="3" valign="top" align="center">
                                        DNI
                                    </TD>
                                </TR>
                            
                            </TABLE>
                            
                        </td>
                        ...            
                            </TABLE>
                            
                        </td>
                        <?//FIN DE LAS BASES DE DATOS?>
                    </tr>        
                    
                    <tr>
                        
                        <td>
                        </td>
                        <td align="center">
                            
                            <?//FORMULARIO PARA QUE EL CLIENTE ESCOJA LOS CAMPOS DE CONSULTA?>
                            <form action="consulta.php" method="POST">
                                <br>
                                <br>
                                <br>
                                <input type="text" name="campo1" size="10" maxlength="50" class="consulta">
                                <input type="text" name="campo2" size="10" maxlength="50" class="consulta">
                                <br>
                                <br>
                                
                                <input type="submit"  value="Ejecutar consulta" class="boton">
                        
                            </form>
                            
                            <br>
                            <br>
                            <?PHP
                            
                                $conexion
=conectar_db();
                                
                                
//campos de consulta que desea el cliente 
                                
$campo1 $_POST['campo1'];
                                
$campo2 $_POST['campo2'];
                                
                        
                                
                                
//CONSULTA A LA BASES DE DATOS                                                
                            
                                
if ($campo1 != "" && $campo2 != "")

                                {
//hacemos la consulta por los dos campos
                                    
$cadenaSQL="SELECT distinct $campo1,$campo2 FROM clientes,pedidos,productos WHERE DNI = DNIPer AND Codigo = CodigoPro";
                                }elseif (
$campo1 != "" && $campo2 == "")
                                    
                                    {
//hacemos la consulta por los un campo
                                        
$cadenaSQL="SELECT distinct $campo1 FROM clientes,pedidos,productos WHERE DNI = DNIPer AND Codigo = CodigoPro";
                                                            
                                                    }                
                                
                                
?>    
                                
                                <?//PASAR LAS VARIABLES POR PARAMETRO A CONDICIONES.PHP?>
                                
                                <A class="boton" href = "condiciones.php?campo1=<?php echo "$campo1";?> && campo2=<?php echo "$campo2";?>&& campo3=<?php echo "$campo3";?>
                                    && campo4=<?php echo "$campo4";?>&& campo5=<?php echo "$campo5";?>&& campo6=<?php echo "$campo6";?>&& cadenaSQL=<?php echo "$cadenaSQL";?>">Añadir condiciones</A>    
                                
                                <br>
                                <br>
                                <br>                                                
                                <div id="resultadoConsulta" class="div"  align="center" style="width: 400px; height: 200px";> 
                                
                                ...
        </table>

        
    </body>

<?
    
}//cierra el if del principio

?>            
</html>
Minicondiciones.php


require_once('baseDeDatos.php');


$conexion=conectar_db();

$condicion1 = $_GET['campo1']; $condicion2 = $_GET['campo2'];
$cadenaSQL = $_GET['cadenaSQL'];

echo "$condicion1";
echo "$condicion2";
echo "$cadenaSQL";

...

Última edición por jam1138; 22/09/2008 a las 01:48
  #36 (permalink)  
Antiguo 22/09/2008, 10:01
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: paso de parámetros php

Bien... Creo que he entendido por dónde va el problema.

Haces lo siguiente:
1. Se carga www.ejemplo.com/consulta.php
Cuando eso carga por primera vez, es evidente que no ha recibido ningún campo1, campo2, campo3... Así que el enlace de añadir condiciones queda como
condiciones.php?campo1=&campo2=&campo3=&campo4=&.. . porque los <?php echo $campo1; ?> no devuelve nada porque $campo1 no se ha recibido aún.

1.1. Si haces click ahora, lógicamente los campo1, campo2, etc están en blanco.
1.2. Si realizas la consulta, vuelves a consulta.php pero esta vez sí que le estás pasando campo1, campo2, campo3, etc. Así que ahora el enlace está bien.


Esto, lógicamente, no puede funcionar, porque estás intentando construir el enlace con PHP antes de tener los valores que van en el enlace. No puedes ir hacia el futuro y luego volver al pasado.


En lugar de esto, lo que tendrías que hacer o bien es construir el enlace con Javascript, o bien hacer submit del formulario cambiando el action con Javascript.
  #37 (permalink)  
Antiguo 23/09/2008, 02:03
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola,
muchas gracias. Intentaré lo que me dices. Ahora estoy probandolo de otra forma,
si me sale ya os lo comento.

Gracias.
Saludos,
Carmen.
  #38 (permalink)  
Antiguo 29/09/2008, 02:59
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola a tod@s!!

Bueno, para solucionar el problema lo que he hecho es hacerlo al contrario, es decir, en vez de pasar los campos por los que quiere consultar, le dejo q vaya a condiciones.php y alli mediante menus desplegables que pueda elegir los campos a los que quiere establecer condiciones, y luego desde ahi, si que me llevo la condicion a la página de consulta.php y realizo la consulta.

Por ahora el paso de parámetro no me ha dado ningun problemas, y además, pienso que es más lógico hacerlo de esta manera, ya que yo puedo consultar por unos campos, pero establecer condiciones en otros distintos, y así es como lo hago ahora.

Muchas gracias por vuestra ayuda. En cuanto me surja algo que no se como solucionarlo os lo comento.

Gracias.
Saludos,
Carmen.
  #39 (permalink)  
Antiguo 01/10/2008, 01:43
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola a tod@s,
ya me ha surjido un problemilla. Bueno, el paso de parámetros lo hago

Código:
header("Location: consulta.php?condicion=<?php echo $condicion;?>");
pero en consulta aunque en la url si esta en valor de $condicion, sin embargo si lo imprimo sólo imprime una parte de la variable.

Ejemplo: Si la variable $condicion tiene codProducto>1, pues sólo imprime en consulta 1;?>

Alguna idea del fallo.
Muchas gracias.
Saludos
  #40 (permalink)  
Antiguo 01/10/2008, 08:41
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: paso de parámetros php

... ¿pero qué no estás dentro de PHP?, ¿por qué vuelves a "entrar" en PHP para utilizar el echo?. Eso es más que básico!
Código PHP:
header("Location: consulta.php?condicion=".$condicion); 
PD: no leí tu descripción del problema, solo vi el código. Pruébalo ...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #41 (permalink)  
Antiguo 02/10/2008, 01:30
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Muchas gracias jam,
puede ser básico pero no encontraba cómo hacerlo, ya he pasado todo lo que necesitaba y va todo bien.

El resultado es:

Código PHP:
header("Location: consulta.php?condiciont=".$condiciont."&sumat=".$sumat."&mediat=".$mediat."&agrupart=".$agrupart); 
muchas gracias!!

Saludos

Última edición por jam1138; 02/10/2008 a las 08:25
  #42 (permalink)  
Antiguo 02/10/2008, 08:26
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: paso de parámetros php

Cita:
Iniciado por catri Ver Mensaje
puede ser básico pero no encontraba cómo hacerlo, ya he pasado todo lo que necesitaba y va todo bien.
Lo encontrarías en cualquier tutorial de PHP. Es de lo más básico, primer capítulo. Ya sugerí antes mejor dedicaras un tiempo a aprender; en serio, estas cosas no se deberían ni preguntar ...

Pero bien que lo solucionaste

Por cierto, igual pon atención en cómo coloreas el código aquí en el foro (solo basta una etiqueta), te lo he tenido que corregir más de una vez .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #43 (permalink)  
Antiguo 14/10/2008, 03:30
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola a tod@s,
me ha surgido una nueva duda. He estado mirando en manuales y foros pero no lo encuentro, asi que os la planteo aqui, para ver si se puede hacer o no.

El caso es que yo guardo en una variable llamada $condicion, el campo y la condicion establecida.

ejemplo: $condicion=codigo>3

Entonces, cuando yo sta variable la paso por parametro, aqui viene el problema:

¿existe la posibilidad de ponerla? select.... from...where $condicion

Porque lo que si se puede es poner codigo=$condicion, pero claro, yo en la variable llevo ya el nombre del campo y el valor, todo junto.

He probado cn comillas simples y dobles, sin comillas, el caso es que no lo coge

¿alguien sabe si esto se puede hacer?

Muchas gracias.
Saludos.
  #44 (permalink)  
Antiguo 14/10/2008, 08:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: paso de parámetros php

Usa urlencode para codificar la variable correctamente al pasarla por parametro.

Saludos.
  #45 (permalink)  
Antiguo 15/10/2008, 01:43
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Gracias GatorV,
pero mi problema no es que no se pase correctamente, porque se pasa sin ningún problema.
Lo que yo quiero es poder usar esa variable al hacer la consulta para establecer las condiciones, y aqui esta el problema, que no funciona. Porque la variable contiene tanto el nombre del campo como el valor.

Muchas gracias.
  #46 (permalink)  
Antiguo 15/10/2008, 09:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: paso de parámetros php

¿Y cual es el problema?, si ya pasaste la variable correctamente y todo como dices, solo arma correctamente tu SQL y puedes realizar la consulta.

Saludos.
  #47 (permalink)  
Antiguo 16/10/2008, 02:22
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Cita:
Iniciado por GatorV Ver Mensaje
¿Y cual es el problema?, si ya pasaste la variable correctamente y todo como dices, solo arma correctamente tu SQL y puedes realizar la consulta.

Saludos.
Pues ahi esta el problema, que yo pongo:


Código PHP:
$cadenaSQL="SELECT distinct $campo1 FROM almacen,producto,promocion,ventas,fecha WHERE cod_almacen = cod_almacenV AND cod_producto = cod_productoV AND cod_promocion = cod_promocionV AND fecha = fechaV AND $condicion"
Y no funciona, he puesto el $condicion entre comillas simples, dobles y nada, no hace nada, y el resto de consulta si funciona pq sin meter el $condicion, va perfectamente.

Gracias.Saludos
  #48 (permalink)  
Antiguo 16/10/2008, 10:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: paso de parámetros php

Imprime la consulta usando echo $cadenaSQL; para que veas como se esta generando.

Saludos.
  #49 (permalink)  
Antiguo 20/10/2008, 03:11
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola, la verdad es que imprime toda la consulta bien menos el $condicion, creo que el problema es que no lo construyo bien.

Pero ya tengo una idea de como solucionarlo. en cuanto lo tenga lo comento.
Muchas gracias.
Saludos.
  #50 (permalink)  
Antiguo 20/10/2008, 03:20
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Cita:
Iniciado por catri Ver Mensaje
Hola, la verdad es que imprime toda la consulta bien menos el $condicion, creo que el problema es que no lo construyo bien.

Pero ya tengo una idea de como solucionarlo. en cuanto lo tenga lo comento.
Muchas gracias.
Saludos.
creo que no se puede hacer lo que quiero, y que es necesario que lea el contenido de esa variable y lo transforme en campo=$variable porque así si que coge el valor.

Ya comento el resultado.
Saludos.
  #51 (permalink)  
Antiguo 23/10/2008, 01:27
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

hola,
tengo $condicion=nombre==1

Alguien puede decirme cómo puedo sacar el nombre del campo(nombre) y el valor(1) así como el operador (==), y tenerlo en distintas variables para poder construir bien la consulta.

Se que mi problema esta ahí, pero he stado mirando funciones y no encuentro respuesta.

Gracias.Saludos.
  #52 (permalink)  
Antiguo 28/10/2008, 02:32
 
Fecha de Ingreso: abril-2008
Mensajes: 69
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: paso de parámetros php

Hola, gracias a tod@s.

Ya he resuelto mi problema mediante la concatenación de variables y cadenas en php.

Gracias otra vez, y hasta otra. Saludos.
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:23.