PHP - Problemas con un FORM

 
Vista:
Imágen de perfil de Toni

Problemas con un FORM

Publicado por Toni (10 intervenciones) el 09/12/2008 16:24:07
Hola a todos,

Tengo actualmente un FORM que contiene 4 combos. Cada uno de ellos, se debería de utilizar para montar la clausula WHERE en una consulta, y actualmente, funciona de esta manera.

Se utiliza los GETS para comprobar si tienen información, e ir montando la cadena del WHERE.

El problema es el siguiente:

Debo hacer lo mismo, pero que cada combo sea único en la seleccion, y si selecciono el primero, NO tenga en cuenta el resto, y si selecciono el cuarto, tampoco tenga en cuenta al resto, etc.
No consigo limpiar las variables recibidas por GET, y se monta la clausula WHERE con los combos1 and combo2 . . .

¿Se deberian de montar FORMS para cada combo, o se puede montar una funcion en cada onChange para poder limpiar el valor del combo?, y en este caso, ¿como se puede hacer?.

Grácias por vuestra paciencia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con un FORM

Publicado por mikel (9 intervenciones) el 10/12/2008 19:34:06
hola, mira te tengo 2 sugerencias:

sugerencia 1:

-Colocas un control text (con nombre: cadena) dentro de tu formulario (q para el ejemplo se llamara "form") .

-En cada uno de los 4 controles tipo lista(o combo como tu lo llamas) colocas el siguiente codigo en el evento onchanged :

En el combo llamado combo1:

<select name="combo1" onChange=form.cadena.value=form.combo1.options[form.combo1.selectedIndex].value;>

En el combo llamado combo2:

<select name="combo2" onChange=form.cadena.value=form.combo2.options[form.combo2.selectedIndex].value;>

ya asi susecivamente con los 4 combos.

-Luego montas tu CLAUSULA WHERE con este valor q tienes almacenado el el control text.

En resumen capturas el ultimo valor seleccionado en cualkiera de lso 4 combos.
y lo almacenas en el control text.

- si deseas puedes hacer invisible el control text, aunq seria mejor que el usuario pueda ver cual es el valor ultimo q ha elegido, debido a q el usuario pue haber estado eligiendo varia sveces en lso distintos combos y nesesitara saber cual es el valor q realmente va a enviar en la transaccion.

* podrias leer algo aceraca de javascript para q puedas tener mayor control en el formulario y manejar sus controles a tu antojo.

sugerencia 2:

podrias reemplazar o agregar controles "boton de accion" o tbm conocido en c++ como "radio buton", para q sean elecciones exclusivas. pero eso albergaria mas codigo q en la sugerencia 1 , q a mi parecer es inesesario.

de cualkier manera me cuentas como te fue.

saludos desde CHIMBOTE-PERU.... ;- )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

RE:Problemas con un FORM

Publicado por Toni (10 intervenciones) el 11/12/2008 08:46:27
Ante todo, muchas gracias por tu respuesta.

Si visitas el sitio http://www.nerin.cat, podras comprobar cómo esta funcionanado actualmente el problema que tengo.

Si seleccionas un combo, lo hace perfecto, pero si seleccionas otro, los parametros pasados no se limpian.

¿Hay alguna opcion para limpiar los parametros, justo antes de hacer el submit?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un FORM

Publicado por mikel (9 intervenciones) el 11/12/2008 15:51:07
este es el ejemplo q extraje de mi codigo , aca obligo q el ususairo escriba un contenido en lso campos de ape_nom y

textfield , si no es asi, manda un mensaje de alerta y detieen el envio. todo esto se evalua en el evento onsubmit q se

dispara cuando El usuario envía un formulario


-------------------------------------------------------------------------------------------------------------

<form id="form3" name="form3" method="post" action="exito.html" onsubmit="var envio=false;if(ape_nom.value=='' ||

textfield.value=='')alert('Debe ingresar nombre y símbolo. Ambos datos son obligatorios.');else envio=true;return envio">

-------------------------------------------------------------------------------------------------------------



adaptandolo a tu problema:

1)colocas esta funcion en cualkier parte de tu codigo .DENTRO DE LA PORCION DE CODIGO HTML

-----------------------------------------------

<script LANGUAGE="JavaScript">
<!--

function Limpiar(){

<!-- colocas el codigo de limpiar tus variables, como dices. una ves q termine de ejecutar el codigo de esta funcion recien enviara lso datos del formulario a tu pagina de destino. -->

}

</script>

-----------------------------------------------


2) EN LA DECLARACION DEL FORMULARIO COLOCAS:


----------------------------------------------------------------------------------------------------------

<form id="form3" name="form3" method="post" action="exito.html" onsubmit= Limpiar();>

---------------------------------------------------------------------------------------------------------


para mas info acerca de los eventos , cheka esta pagina:
http://www.elcodigo.net/tutoriales/javascript/javascript5.html

weno espero te ayude en algo. de todas maneras me cuentas el avance :

SALUDOS DESDE CHMBOTE -PERU

PD: ESTA XEVERE TU PÀGINA, USASTE ALGUNA HERRAMIENTA REPORTEADORA?? ME PARECE Q
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un FORM

Publicado por mikel (9 intervenciones) el 11/12/2008 15:53:17
este es el ejemplo q extraje de mi codigo , aca obligo q el ususairo escriba un contenido en lso campos de ape_nom y

textfield , si no es asi, manda un mensaje de alerta y detieen el envio. todo esto se evalua en el evento onsubmit q se

dispara cuando El usuario envía un formulario


-------------------------------------------------------------------------------------------------------------

<form id="form3" name="form3" method="post" action="exito.html" onsubmit="var envio=false;if(ape_nom.value=='' ||

textfield.value=='')alert('Debe ingresar nombre y símbolo. Ambos datos son obligatorios.');else envio=true;return envio">

-------------------------------------------------------------------------------------------------------------



adaptandolo a tu problema solo harias 2 cosas:

1)colocas esta funcion en cualkier parte de tu codigo .DENTRO DE LA PORCION DE CODIGO HTML

-----------------------------------------------

<script LANGUAGE="JavaScript">
<!--

function Limpiar(){

<!-- colocas el codigo de limpiar tus variables, como dices. una ves q termine de ejecutar el codigo de esta funcion recien enviara lso datos del formulario a tu pagina de destino. -->

}

</script>

-----------------------------------------------


2) EN LA DECLARACION DEL FORMULARIO COLOCAS:


----------------------------------------------------------------------------------------------------------

<form id="form3" name="form3" method="post" action="exito.html" onsubmit= Limpiar();>

---------------------------------------------------------------------------------------------------------


para mas info acerca de los eventos , cheka esta pagina:
http://www.elcodigo.net/tutoriales/javascript/javascript5.html

weno espero te ayude en algo. de todas maneras me cuentas el avance :

SALUDOS DESDE CHMBOTE -PERU

PD: ESTA XEVERE TU PÀGINA, USASTE ALGUNA HERRAMIENTA REPORTEADORA PARA DISEÑAR TUS REPORTES??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

RE:Problemas con un FORM

Publicado por Toni (10 intervenciones) el 11/12/2008 16:15:20
Toda la página está hecha en php, tanto los cambios de color de las distintas filas como las cargas de los combos, como la presentacion de datos.

Probaré lo que me comentas y te digo algo.

Gracias y saludos desde Barcelona - España
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un FORM

Publicado por MIKEL (9 intervenciones) el 12/12/2008 04:48:16
No estoy seguro si la alternativa de solucion anteiror funciona, debido a q a pesar q limpies los valores d ela svariables antes de enviar el formulario, puede q cuando realmente se envie el formulario vuelva a llenar la svariables con los valores de todoslos combos.En ves de eso me parece q la solucion fulminante a tu problema seria q en ves q intentes limpiar las variables , modifikes el valor de los combos antes de enviar el formulario, aca te dejo el codigo para q te ayude.


1)creas 4 funciones:
-esto lo haces en la porcion de codigo html, si al editar tu pagina no usas nada de codiho html pues solo debes poner la

etiketas de <html> y </html> , dentro de ellas colocar el siguiente codigo javascript.

ejemplo:

codigo php
codigo php
....
....

<html>
codigo javascript
</html>

-lo q hace las funciones que cuando selecciones un elemento de cualkier combo, los demas combos tendran que seleccionar su

primer elemento (-Any- , -Obres- , -Autors- , -direccion-) y por lo tanto su valor seria cero, entonces al procesar tu

consulta descartarias ese valor.
Me imagino q en el codigo q usas para montar tu clausula where descartas akellos combos q tengan como valor cero, osea losq

tengan seleccionado el texto (-Any- , -Obres- ,-Autors- , -direccion-)

-finalmente despues de cada funcoin recien mandas los datos del formulario con la funcoin submit().


-------------------------------CODIGO JAVASCRIPT----------------------------------------------------------
<script LANGUAGE="JavaScript">
<!--

function restaura1()
{

<!-- esta funcion la llamas desde el evento onchanges del combo llamado cmbAny-->

form.cmbObra.selectedIndex=0;
form.cmbAutor.selectedIndex=0;
form.cmbDireccio.selectedIndex=0;
submit()


}

function restaura2()
{

<!-- esta funcion la llamas desde el evento onchanges del combo llamado cmbObra-->

form.cmbAny.selectedIndex=0;
form.cmbAutor.selectedIndex=0;
form.cmbDireccio.selectedIndex=0;
submit()
}


function restaura3()
{

<!-- esta funcion la llamas desde el evento onchanges del combo llamdo cmbAutor-->

form.cmbAny.selectedIndex=0;
form.cmbObra.selectedIndex=0;
form.cmbDireccio.selectedIndex=0;
submit()

}

function restaura4()
{

<!-- esta funcion la llamas desde el evento onchanges del combo llamado cmbDireccio-->

form.cmbAny.selectedIndex=0;
form.cmbObra.selectedIndex=0;
form.cmbAutor.selectedIndex=0;
submit()
}


//-->
</script>
-------------------------------fin de codigo javascript--------------------------------------------------


2) llamas a cada funcion en el evento ONCHANGED de cada combo

---------------------------------------------------------------------------------

<form method=GET action='obres_de_teatre.php'><tr bgcolor=#FFCC66>
<td width= 8% valign=top><select class=Obres name=cmbAny width=95% onchange=restaura1()>
<option selected value=0>- Anys -</option>
<option value=2008>2008</option>
.................................
................................
.................................

</select>


<td width=28% valign=top><select class=Obres name=cmbObra width=95% onchange=restaura2()>
<option selected value=0>- Obres -</option>
<option value=A_cal_jutge>A cal jutge</option>
...........................................
..........................................
..........................................
</select>

<td width=28% valign=top><select class=Obres name=cmbAutor width=95% onchange=restaura3()>
<option selected value=0>- Autors -</option>
<option value=A._Massina>A. Massina</option>
...........................................
..........................................
..........................................
</select>


<td width=28% valign=top><select class=Obres name=cmbDireccio width=95% onchange=restaura4()>
<option selected value=0>- Direcció -</option>
<option value=Anton_Recasens,_Marc>Anton Recasens, Marc</option>
...........................................
..........................................
..........................................
</select>

---------------------------------------------------------------------------------

SALUDOS DESDE CHIMBOTE-PERU

"IMPOSIBLE, SIGNIFICA QUE NO HAS ENCOTRADO SOLUCION"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

RE:Problemas con un FORM

Publicado por Toni (10 intervenciones) el 15/12/2008 09:30:17
El problema sigue sin funcionar, pero de todas maneras gracias por todo.

Intentaré encontrar otra alternativa, como crear un form para cada combo, pero creo que no es el camino correcto.

De nuevo gracias por todo, y saludos desde Barcelona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un FORM

Publicado por reaven (7 intervenciones) el 15/12/2008 16:08:39
La solucion mas facil es hacer una funcion javascript generica que te reseteara todos los valores de los combos de tu formulario y te hara un submit de ese mismo forumlario....

por ejemplo :

function resetForm(id_combo)
{
for(i in documents.forms[0].elements){
Te recorres todos los elementos del form por js, y miras si Si es combo comparas con tu id (que sera el que no necesitas resetear) y si es distinto , le dices que el selected index = 0. Y cuando termine de resetear todos los combos haces un form.submit() . De tu formulario .
}
}

No se si conoceras mucho javascript pero es la unica manera de resetear los combos. Se me han ocurrido un par mas pero son un poco "guarras" comp por ejemplo cuando hagas la carga de la pagina comprobar si tienen valores los combos y en un input type hidden guardar un serializado de sus valores y el id del combo... y cuando hagas un submit tambien te llegara el valor de este hidden . Le haces un explode y sabras que valor tenia cada combo antes de la carga de esa pagina, y de ahi tratas la info como mas gustes..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

RE:Problemas con un FORM

Publicado por Toni (10 intervenciones) el 15/12/2008 17:01:25
Grácias a todos por responder.

Actualmente, en el onChange de cada combo, llamo a una función tal como:

function f1()
{
document.sel.cmbObra.selectedindex=0;
document.sel.cmbAutor.selectedindex=0;
document.sel.cmbDireccio.selectedindex=0;
document.sel.submit();
}

siendo el "sel" el nombre del Form, y los combos correspondientes.

Pero sigo sin obtener resultados.

Volveré a revisar todo el programa por si se ha colado algún "Gnomo"

Os comento algo, y saludos desde Barcelona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Toni

RE:Problemas con un FORM

Publicado por Toni (10 intervenciones) el 30/12/2008 15:13:51
CONSEGUIDO! ! !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar