Foros del Web » Programando para Internet » PHP »

array a partir de opciones de checkbox

Estas en el tema de array a partir de opciones de checkbox en el foro de PHP en Foros del Web. Necesito crear un array a partir de un grupo de checkboxes que corresponden a colores. quiero que al enviar el formulario, se ecriban todos los ...
  #1 (permalink)  
Antiguo 23/06/2008, 03:50
Avatar de PedroRodas  
Fecha de Ingreso: noviembre-2005
Ubicación: Cádiz
Mensajes: 393
Antigüedad: 18 años, 5 meses
Puntos: 0
array a partir de opciones de checkbox

Necesito crear un array a partir de un grupo de checkboxes que corresponden a colores. quiero que al enviar el formulario, se ecriban todos los colores seleccionados .

Así, mi primera duda es si lo mejor es crear el array de colores seleccionados o primero creo el array con todos los colores y luego filtro con un FOR solo aquellos que han sido seleccionado.

He estado investigando un poco y he visto que se podia hacer tanto con javascript usando getElementsByName y tambien con php, que es el lenguaje en el que quiero hacerlo. Pero no he entendido muy bien.

Muchas gracias de antemano.
__________________
Genial concierto de Roger Waters, Pink Floyd siguen vivos!!!
  #2 (permalink)  
Antiguo 23/06/2008, 05:01
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: array a partir de opciones de checkbox

Lo mas logico y normal (creo yo) seria que guardaras los colores en el array una vez elegidos, no antes.
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #3 (permalink)  
Antiguo 23/06/2008, 08:18
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: array a partir de opciones de checkbox

Hombre, puedes recorrer los checkboxes con JavaScript y crear un array que pases serializado por POST, pero esa opción es más complicada (y anti-accesible) que nombrar los checkboxes como un array:
Código HTML:
<input type="checkbox" name="opcion[0]">
<input type="checkbox" name="opcion[1]">
<input type="checkbox" name="opcion[2]"> 
Este es un "pequeño gran" truco, que facilita la vida muchísimo, ya que PHP, al recibir los datos por POST, automáticamente crea un array, de tal forma que puedes recorrer las opciones con un foreach:

Código PHP:
foreach ($_POST["opcion"] as $op) {
array_push($opciones,$op);

De esta forma obtendrás un array con todas las opciones. Aquí tienes un ejemplo para verlo claro:
Código PHP:
<html>
<head></head>
<body>
<form method="post">
<input type="checkbox" name="opcion[0]" value="certificado">Certificado<br>
<input type="checkbox" name="opcion[1]" value="urgente">Urgente<br>
<input type="checkbox" name="opcion[2]" value="seguro">Seguro<br>
<input type="submit">

<?php

print_R
($_POST);

?>
</body>
</html>
  #4 (permalink)  
Antiguo 23/06/2008, 10:52
Avatar de PedroRodas  
Fecha de Ingreso: noviembre-2005
Ubicación: Cádiz
Mensajes: 393
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: array a partir de opciones de checkbox

Muchas gracias por tu aporte isra, pero yo estoy empezando con el php y no consigo entender del todo como implementar esto que me dices.

Te explico un poco mejor:

Dentro de mi formulario tengo un apartado con checkboxes. Me gustaria crear un array con los chekboxes seleccionados para insertarlo como parte del body de un mail que se me envia con phpmailer (supongo que es lo mismo usarlo para esto que para cualquier otra cosa).

mucash gracias de antemano, cada vez queda un poco menos...
__________________
Genial concierto de Roger Waters, Pink Floyd siguen vivos!!!
  #5 (permalink)  
Antiguo 24/06/2008, 05:11
Avatar de PedroRodas  
Fecha de Ingreso: noviembre-2005
Ubicación: Cádiz
Mensajes: 393
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: array a partir de opciones de checkbox

A ver, voy a intentar explicarme lo mejor posible:

Tengo mi formulario, con una serie de opciones. Los datos del formulario los voy guardando en variables, de esta forma:

$modelo = $_POST['modelo'];

Cuando llego a las opciones para elegir el color quiero conseguir crear un array a partir de las opciones elegidas en un conjunto de checkboxes.

Estoy tiendo problemas para crear el array. He intentado esto:

Código PHP:
$i=0;
    if (
$_POST['verde']){
    
$colores[$i]="verde";
    
$i++;}
    if (
$_POST['rojo']){
    
$colores[$i]="rojo";
    
$i++;}
    if (
$_POST['azul']){
    
$colores[$i]="azul";
    
$i++;}
    for (
$i=0;$i<$colores.length;$i++)
    {echo 
$colores[$i];} 
No se muy bien como plantearlo. Mi idea final es que todo vaya quedando ordenado en el body de un phpmailer.

Os dejo el codigo que tengo hasta ahora:

Código PHP:
 $tmp_name $_FILES['archivo']['tmp_name'];
 
$name $_FILES['archivo']['name'];
 
$empresa $_POST['empresa'];
 
$contacto $_POST['contacto'];
 
$email $_POST['email'];
 
$direccion $_POST['direccion'];
 
$ciudad $_POST['ciudad'];
 
$telefono $_POST['telefono'];
 
$fax $_POST['fax'];
         if(
$_POST['nosencontro']== '- Selecciona -'){
        
$nosencontro='';
        }
        else{
        
$nosencontro=$_POST['nosencontro'];
        }
// para que no nos llegue el texto "- Selecciona -" establezco que si es esa la opcion seleccionada, se reemplace por ningun texto de forma que quede vacio este campo en el formulario que nos llega
 
$especifique $_POST['especifique'];
 
$material $_POST['material'];
 
$modelo $_POST['modelo'];
    
AQUI QUIERO PONER EL ARRAY CON LOS CHECKBOXES SELECCIONADOS:
    
 
$archivo $_FILES['archivo']['name'];
 
$comentario $_POST['comentario'];
 
 
 
$mail->Body "<h3>Datos de la empresa</h3><hr></br>
 <b>Empresa:</b> "
.$empresa."<br/><b>Persona de contacto:</b> ".$contacto."<br/>
 <b>E-mail:</b> "
.$email."<br/><b>Direcci&oacute;n:</b> ".$direccion."<br/>
 <b>Ciudad:</b> "
.$ciudad."<br/> <b>Tel&eacute;fono:</b> ".$telefono."<br/>
 <b>Fax:</b> "
.$fax."<br/><h3>Donde nos conocieron</h3><hr> <b>Nos encontr&oacute;:</b> ".$nosencontro."<br/>
 <b>Especifique:</b> "
.$especifique."<br/><h3>Datos para la muestra</h3><hr> <b>Material:</b> ".$material."<br/>
 <b>Modelo:</b> "
.$modelo."<br/> <b>Color:".AQUI DEBE DE PONERSE EL ELEMENTO QUE CONTENGA LOS COLORES ELEGIDOSO UN BUCLE QUE RECORRA EL ARRAY Y VAYA ESCRIBIENDO LOS VALORES."</b><br/>
 <b>Logotipo / Archivo:</b> "
.$archivo."<br/><h3>Comentarios</h3><hr> <b>Comentario:</b> ".$comentario."<br/>"
Muchas gracias de antemano por cualquier aportación.
__________________
Genial concierto de Roger Waters, Pink Floyd siguen vivos!!!
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 10:49.