Problema con submit y action

Bueno no se si esto se pueda hacer, tengo la siguiente situación:
Tengo un formulario con tres combobox asociados, al dar click al primero el segundo se carga con las opciones relacionadas e igual con el tercero. Al seleccionar un valor del combo la página se vuelve a cargar, o sea el action del form lo tengo " " así:
<form name="form1" id="form1" method="post" action="">
Tengo un archivo agrega.php para procesar los datos y guardarlos en la base de datos. El asunto es que al tener el action del form en " ", cuando le doy clic al botón de Enviar, no llama al archivo agrega.php y por consiguiente no guarda nada en la Base de datos. Si le pongo agrega.php en el action, con solo seleccionar un valor del primer combobox llama al archivo agrega.php.
Ya probé el archivo agrega.php y funciona si no le doy clic a ninguno de los combos.
Hay alguna forma de solucionar esto que no sea muy complicada pues estoy aprendiendo php!. ¿Se puede hacer algo con un vinculo (como <a href) para llamar a la pagina (agregar.php), enviarle los parámetros que recojo en un formulario a ese script y guardar los datos en la base de datos?.

3 Respuestas

Respuesta
1
Lo más fácil es que el formulario lo maneje el mismo archivo que lo pinta, así sabes en todo momento:
* ¿Tengo que volver a pintar el formulario rellenando otros campos? (el segundo o tercer combobox)
* ¿Tengo que procesar el formulario porque el usuario ya ha introducido datos en todos los comboboxes?
Revisa un poco la lógica de cómo se pinta el formulario, e intenta hacer un esquema en papel de las acciones que tiene que realizar el formulario (cuándo enviar, cuándo actualizar, etc...)
Respuesta
1
Tu problema si entendí bien.
Es que quieres tener unos combos dependientes.
Me gustaría preguntarte algo para poder ayudarte.
los combox son estaticos o dinamicos(los genes con php, tomando valores de una base de datos);
Mira si son estáticos eso lo puedes logar con javascript, y el script es sencillo solo un par de condiciones y listo, si generas el combo dinámicamente, tienes que usar ajax.
Te agradecería si contestas para poder ayudarte op expliccarte con más detalle
Los combos son dinámicos con php, toman valores de una base de datos. Eso me funciona bien pero como te digo, cada vez que selecciono un valor de un combo recarga la página por lo que el action debe estar en blanco. Si le pongo algo al action, con solo seleccionar el primer combo, me llama al archivo agregar.php
No se nada de ajax ni de javascript, pero agradecería tu ayuda.
PD. Estaba pensando en hacer un formulario con los combos y luego tomar los tres valores y pasarlos a otro formulario para luego llamar al archivo agregar.php que es el que los procesa y agrega en la base de datos...
La única forma de hacerlo sin actualizar toda la página es con ajax, este mono de ajax lo que hace es actualizar solo el div que le indiques, es de gran utilidad,
Mira aquí te dejo unos ejemplos de ajax en donde puedes ver su funcionamiento y de echo te permite descargar el código.
http://www.formatoweb.com.ar/ajax/select_dependientes.php
http://www.formatoweb.com.ar/ajax/select_dependientes_3_niveles.php
http://www.webintenta.com/combos-dependientes-ii.html
Respuesta
1
Lo que pides es un AJAX pero no se bien bien como lo habrás hecho por el lio que te hace. Puedes hacerle un botón que ponga agregar y con JavaScript puedes llamar a la página agrega.php o en vez de darle a un botón cuando haga algo determinado.
Para hacer esta llamada te voy a poner el código de la función y como va, te lo voy a poner cuando se produzca un evento onclick de un botón del form.
<input type="button" value="Enviar datos" onclick="enviadatos();">

<script languaje="text/javascript">

function enviadatos(){
 location.href="agrega.php";
}
</script>

Bueno seguro que te sirve así.
Perdona, no había caído en que tienes que mandar los datos del formulario...
Olvida el código que te he puesto antes y se modificaría para esto, es prácticamente igual pero cambiando alguna cosa.
<input type="button" value="Enviar datos" onclick="enviadatos();">
<script languaje="text/javascript">
function enviadatos(){
 document.getElementById('idformulario').action="agrega.php";
 document.getElementById('idformulario').submit;
}
</script>
Supongo que tendría que funcionar, acuérdate de poner el method del form.
Donde pone idformulario, tienes que poner el id de tu formulario.
Gracias experto. Lo hice tal cual y no funciona, al dar click al botón no hay ningún efecto, se queda en la misma página, no se va a la página agrega.php
Creo que hay un fallo en el código que te mandé, en la linea donde pone:
document.getElementById('idformulario').submit;
poner esto:
document.getElementById('idformulario').submit();

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas