Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Formulario (https://www.clubdelphi.com/foros/showthread.php?t=36025)

halizia 29-09-2006 13:43:14

Formulario
 
hola,

quiero hacer un pequeño formulario, donde haya una serie de checkboxes y un boton que cuando le de, se vaya a una funcion, que compruebe que hay al menos un checkbox seleccionado, que consulte en la base de datos aquellos campos que he seleccionado con los checkboxes y los muestra por pantalla. pero no se como hacerlo, el resultado de la consulta quiero que se muestre en el misma página, es decir, debajo del formulario.

Gracias

D-MO 29-09-2006 16:26:33

Hola halizia, si lo que deseas es que los datos se muestrn abajo del formulario deberás hacer uso de Ajax, ya que es la única forma(al menos que conozco) en que puede interactuar php-javascript, ya que el primero será el que haga la conexión a la base de datos y el último validará los checkboxes.

Ajax no es nada complicado, puedes revisar este truco que he colocado en la sección de trucos del club en el cual muestro como crear un pequeño formulario de contacto utilizando Ajax.

El formulario podría ser así:
Código:

<form name="frm">
  <input type="checkbox" name="checkbox1" value="1" />Checkbox1<br>
  <input type="checkbox" name="checkbox2" value="2" />Checkbox2<br>
  <input type="checkbox" name="checkbox3" value="3" />Checkbox3<br>
  <input type="button" name="button" value="Enviar" onClic="validar();" />
</form>

Para poder validar los checkboxes, como ya dije antes, necesitas hacer uso de javascript, que mas o menos sería de la siguiente manera:

Código:

function validar(){
  if (document.frm.checkbox1.checked==true || document.frm.checkbox2.checked==true || document.frm.checkbox3.checked==true){
      enviar();
  } else {
      alert('Debes seleccionar al menos una casilla');
  }
}

Ahora que ya has validado el formulario, si al menos hay un checkbox seleccionado, hará la llamada a la función enviar, en el cual tendrás que recoger los datos de los checkbox activos y enviarlos a el script php que se conectará a la base de datos y te devolverá los datos que deseas, lo cual se podrá hacer de la siguiente manera:

Código:

var obj;
var div;
var pVars;
function crearObjeto() {
        if (window.XMLHttpRequest) {     
                return new XMLHttpRequest();
        } else if (window.ActiveXObject) {
                return new ActiveXObject("Microsoft.XMLHTTP");
        }
}

function procesar(){
  pVars  = '&cb1='+encodeURI(document.frm.checkbox1.checked);
  pVars += '&cb2='+encodeURI(document.frm.checkbox2.checked);
  pVars += '&cb3='+encodeURI(document.frm.checkbox3.checked);
 
  obj=crearObjeto();
  obj.onreadystatechange = cambio;
  obj.open("POST",'script.php', true);
  obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  obj.send(pVars);
}
function cambio(){
  div = document.getElementById("rdiv");
  if(obj.readyState == 4){
      div.innerHTML = obj.responseText;
  } else {
      div.innerHTML='Cargando...';
  }
}

Recuerda que deberás colocar un div con el id "rdiv" en el lugar que desees que se muestre el resultado, ya que a este se le agregará el resultado obtenido por la consulta a la bas e de datos.

Ahora, en el script php deberás tomar los datos enviados utilizando el método post, mas o menos de la siguiente manera:
Código PHP:

<?php
$cb1 
$_POST['cb1'];
$cb2 $_POST['cb2'];
$cb3 $_POST['cb3'];

/* 
Aquí has la consulta y luego has que se muestre el resultado que desees.
*/
?>

No he tenido la oportunidad de probarlo, pero si algo anda mal avísame y miramos que es.

Espero te sirva de algo.
Saludo.

halizia 02-10-2006 17:08:27

Gracias por tu ayuda, pero me da error, yo lo he puesto todo en un mismo fichero y no hace nada :S

dec 02-10-2006 17:23:32

Hola,

Arriba, el compañero Darwin, no ha tratado de ponerte un ejemplo "que funcione", sino más bien, darte una serie de ideas válidas para que tú pudieras continuar adelante. Es decir, no se trataba de copiar y pegar el código en un archivo: eso no va a funcionar, obviamente.

Ayer topé con una traducción al español de cierto artículo sobre AJAX... tal vez quisieras echarle un vistazo.

Por otro lado, en estos Foros, decir que algo "te da error" y que "no hace nada" no significa mucho, más bien todo lo contrario.

Siempre hay mensajes de error (o casi siempre, vaya) y los programas siempre hacen algo (o casi siempre) aunque no sea lo que esperamos. Si pretendes conseguir ayuda, por favor, expláyate y describe el problema lo mejor que puedas.

halizia 02-10-2006 20:11:40

pues siento decirte q no hace nada :(
ejecuto el fichero, despues de arreglar algun que otro fallo, y al pulsar el boton (habiendo señalado previamente algun checkbox)no muestra ninguna advertencia ni escribe nada en pantalla.

Saludos

D-MO 02-10-2006 20:24:34

Hola halizia, porque no pones todo el código del fichero que has creado con lo que doy arriba para revisarlo y ver que es lo que está dando problema.

Saludos.

dec 02-10-2006 20:32:37

Hola,

Yo añadiría que si el error "no se ve"... tendremos que intentar que esto no ocurra así. En Firefox (que es el navegador en que suelo probar este tipo de cosas) cuentas con extensiones que te facilitan la tarea de desarrollo, y, entre otras, está FireBug, que, probablemente, te ofrecerá información sobre errores (además de otras cosas) que, aparentemente, acaso, no se muestran.

Me consta que para otros navegadores existen otras herramientas, o que, en todo caso, pueden configurarse los navegadores para que fuerzen los errores de JavaScript, por ejemplo,... tendrías que investigar un tanto sobre esto: cómo depurar errores de JavaScript en los navegadores que suelas utilizar.

D-MO 02-10-2006 21:35:17

Ahora que lo mencionas David, creo que todos los navegadores traen con sigo una "Consola Javascript" desde la que se pueden ver las advertencias, errores, etc... del lenguaje.

En mi firefox se encuentra en "Tools->JavaScript Console"

Saludos.

dec 02-10-2006 21:44:38

Hola,

Cita:

Empezado por Darwin
Ahora que lo mencionas David, creo que todos los navegadores traen con sigo una "Consola Javascript" desde la que se pueden ver las advertencias, errores, etc... del lenguaje.

En mi firefox se encuentra en "Tools->JavaScript Console"

Sí, así es la verdad; sin embargo, me parece (no estoy seguro) que a veces esa consola puede "desactivarse" o algo así... o desactivarse, en todo caso, los errores de JavaScript. En todo caso existen ciertas herramientas (para FireFox existe incluso un depurador "a lo grande" para JavaScript, ahora, un servidor no supo cómo sacarle partido, lo que no quiere decir que sea malo, tal vez todo lo contrario), digo, que además de la consola pueden emplearse otras herramientas en las que apoyarnos: en el caso de Firefox existen extensiones muy, muy curiosas: véase Web Developer.

D-MO 02-10-2006 22:07:51

Cita:

Empezado por dec

Jejejej, instalada desde que la mencionaste hace algunas semanas.

Saludos.

dec 02-10-2006 22:13:52

Hola,

Cita:

Empezado por Darwin
Jejejej, instalada desde que la mencionaste hace algunas semanas.

Y ya no podrás vivir sin ella... :eek: :D :)


La franja horaria es GMT +2. Ahora son las 16:48:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi