Foros del Web » Programando para Internet » PHP »

Formulario q modifique consulta sql

Estas en el tema de Formulario q modifique consulta sql en el foro de PHP en Foros del Web. Hola, estoy diseñando una sencilla aplicación, q lee los datos de una bdd según una determinada consulta y muestra los mismos en una tabla. Ahora ...
  #1 (permalink)  
Antiguo 24/04/2005, 19:17
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Formulario q modifique consulta sql

Hola,

estoy diseñando una sencilla aplicación, q lee los datos de una bdd según una determinada consulta y muestra los mismos en una tabla. Ahora lo que me gustaría hacer es que a través de enlaces de texto en la cabecera de cada columna de la tabla, poder modificar la consulta sql para q ordenase la tabla según el índice pulsado.

P. ej: Tengo una tabla con precio y descuento. Me gustaría que pulsando sobre el texto de precio me la ordenase por ese dato.

Problema: Básicamente dos. No sé como hacer un formulario q pueda funcionar como quiero (sin checkboxes ni nada parecido). El otro es sobre como decirle al script que modifique la consulta. En teoría a través del formulario le enviaría la consulta a otro script que formatearía la tabla, pero yo quiero que lo haga sobre la misma página, por lo que todo el código está en la misma página php. ¿Es posible?

Un saludo, y gracias de antemano!
  #2 (permalink)  
Antiguo 24/04/2005, 19:51
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, 8 meses
Puntos: 102
Sí, es posible...

Primero, ya que lo quieres hacer mediante enlaces, creo lo mejor es pasar parámetros por la URL... y recojerlos con $_GET .. espero no haya problema con esto (busca si lo hay).

Segundo tu enlace será referido hacia la misma página con una variable que llevará el nombre del campo a ordenar... algo así como:
Código:
<a href="pagina.php?orden=nombre">Nombre</a>
... podrás ocupar $_SERVER['PHP_SELF'] y mysql_field_name() para facilitar la tarea...

Tercero, agregar la parte correspondiente a ti QUERY para que haga dicho orden... (ORDEN BY). Ejemplo:
Código PHP:
$query"SELECT * FROM tabla"// consulta general
if(isset($_GET['orden'])) $query.= " ORDEN BY ".$_GET['orden']; 
... El proceso sería similar si quiesieses ordenar en forma ascendente ó descendente (ASC ó DESC)...

Verás que es cuestión de armar una consulta SQL adecuada... quizá debas buscar respecto a esto primero... aunque lo que necesitas es lo que expuse...

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 25/04/2005, 05:14
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Muchas gracias por la respuesta. No había pensado lo de los enlaces, ya q pensaba q sólo se podía por formularios, pero sin duda parece el mejor método .

Lo dicho, mil gracias y un saludo!
  #4 (permalink)  
Antiguo 25/04/2005, 16:38
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Una duda con esto. Si por ejemplo quiero filtrar primero por un valor, y luego por otro pero recordando el primero, ¿lo podría hacer?.

Ej: En mi aplicación puedo seleccionar q sólo salgan los registros por 'tipo' (con un enlace ?tipo=xxxx)

Entonces me carga la página correctamente de esta forma http://url.com/pagina?tipo=xxxx

Ahora quiero sobre esos registros filtrar por 'precio', pero si lo hago como antes me carga la url http://url.com/pagina?precio=xxxx , por lo q pierdo el filtro de tipo.

Es decir, necesito q a partir de la primera url, le añada '&precio=xxxx', pero no sé si se puede hacer con enlaces. ¿Es posible?

Un saludo y muchas gracias!
  #5 (permalink)  
Antiguo 25/04/2005, 16:54
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
Cita:
Iniciado por simonvlc
Ej: En mi aplicación puedo seleccionar q sólo salgan los registros por 'tipo' (con un enlace ?tipo=xxxx)
Puedes hacerlo sin ningun tipo de problema, quedaría algo así como:

Código PHP:
$query"SELECT * FROM tabla"// consulta general
if(isset($_GET['orden'])) $query.= " ORDEN BY ".$_GET['orden']; 
if(isset(
$_GET['tipo'])) $query.=" WHERE tipo='".$_GET['tipo']."'"
PD: Con los condicionales if(isset()) vas comprobando si las variables están definidas o no, puedes pasar todos los filtros por url y luego comprobar si están definidos y, en caso afirmativo, trabajar con ellos.
  #6 (permalink)  
Antiguo 25/04/2005, 17:41
 
Fecha de Ingreso: abril-2005
Mensajes: 16
Antigüedad: 19 años
Puntos: 0
Gracias keleriano, el problema es q no sé como pasar otro parámetro a la url una vez he cargado uno. Cuando he cargado la url para q filtre por tipo la url se queda así: http://url.com?tipo=xxxx . Y si ahora pulso sobre un enlace de tipo http://url.com?orden=xxxx, carga esa url, pero no mantiene el tipo. La idea es q una vez filtrado, al pulsar sobre un enlace de orden, este se añadiese a la url q ya está cargada, de forma q quedase así http://url.com?tipo=xxxx&orden=xxxx.

La verdad es q es complicado de explicar. Gracias de todas formas, voy a seguir intentándolo. Un saludo!
  #7 (permalink)  
Antiguo 26/04/2005, 03:15
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
No entiendo bien tu consulta la verdad pero si que debería dejarte haciendo esto:

Código HTML:
<a href="?orden=orden&tipo=tipo">Enlace</a> 
Luego para recuperar los datos solamente usar el array $_GET
  #8 (permalink)  
Antiguo 26/04/2005, 04: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, 8 meses
Puntos: 102
Cita:
necesito q a partir de la primera url, le añada '&precio=xxxx', pero no sé si se puede hacer con enlaces. ¿Es posible?
... intenta con las 2, no estoy seguro...:
1) $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']
2) $_SERVER['REQUEST_URI']

Solo añadirias el &nuevavariable=valor... Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 07:25.