Foros del Web » Programando para Internet » PHP »

Envio de datos checkbox.

Estas en el tema de Envio de datos checkbox. en el foro de PHP en Foros del Web. Tengo un pequeño cacao mental con el tema de cliente-servidor y por ese motivo me esta dando problemas este tema, os cuento. Genero unos checkbox ...
  #1 (permalink)  
Antiguo 06/10/2011, 05:38
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 12 años, 11 meses
Puntos: 8
Envio de datos checkbox.

Tengo un pequeño cacao mental con el tema de cliente-servidor y por ese motivo me esta dando problemas este tema, os cuento.

Genero unos checkbox de manera dinámica, cada uno tiene un valor(value) distinto, el tema esta a la hora de intentar recoger su valor, la idea que yo tenia y que creo que esta mal era la de darle un mismo name a los chekbox y asi recogerlos en un array con $_REQUEST, pero solo me cojer el ultimo valor que selecciono por lo tengo no encuentro manera de enviar todos los datos que selecciono, pongo código que lo veréis mejor.

Código PHP:
<form id="formhastag" action="prueba.php" method="post" name="f1">>
        <? foreach( $consult as $v){ ?>
            <b>
                     <table border='1'>
                    <tr>
                      <td>Nombre:</td>
                      <td><?=$v->NAME?></td>
                      <td ><?/$nombre=convertHastag($var=$v->NAME);
                              
//print_r($nombre);
                              
if(is_array($nombre)){ 
                                  echo 
"<table border='1'>";
                                  
$i=0;
                                foreach(
$nombre as $nombreht){
                                    echo 
"<tr>";
                                    
$i++;
                                      echo 
"<td>".$nombreht."</td><td><input name='hastag' type='checkbox' value='$nombreht'/></td>";
                                      echo 
"</tr>";
                                  }
                                  echo 
"</table>";
                              }
                              elseif(
is_string($nombre)){
                                  echo 
"<table border='1'><tr><td>";
                                  
$i++;
                                  echo 
$nombre."</td><td><input name='hastag' type='checkbox' value='$nombre'/>";
                                  echo 
"</td></tr></table>";
                              }
                      
?></td>
                      
                    </tr>
                     
                    <tr>
                      <td>Director:</td>
                      <td><?=$datosPelicula['Director']?></td>
                      <td><?
                      
//convertHastag($var=$datosPelicula['Director']);
                      
$director=convertHastag($var=$datosPelicula['Director']);
                      
//print_r($director);
                      
echo "<table border='1'>";
                      foreach(
$director as $directorht){
                             echo 
"<tr><td>".$directorht."</td><td><input name='hastag' type='checkbox' value='$directorht'/></td></tr>";
                          }
                          echo 
"</table>";
                      
?></td>
Como veis los genero en función de arrays, se que el error esta en el name puesto que yo queria mandarlo todo en un array poniendo el mismo name, la dificultad reside en que como veis hay dos apartados: Nombre y Director, cada uno de ellos genera varios inputs, pero eso es variable ya que por ejemplo Nombre puede generar 3, 4, 5 ... inputs al igual que Director es totalmente dinámico según los datos que reciba.

Código PHP:
 $conn = new CConnectionDB;
        
$conn->connect();
        echo 
"<b>";
        if (empty(
$conn)){
            echo 
"Conexion BBDD no realizada |";
        }
        else{
            echo 
"Conexion BBDD establecida | ";
        }
        
        
$hastags $_REQUEST[hastag];
        
        if(!
$hastags){
            echo 
"Elemento vacio";
        }
        else{
            
print_r($hastags);
        }
        
?> 
Aqui es donde simplemente quiero mostrarlo, siempre me muestra el ultimo valor seleccionado.
  #2 (permalink)  
Antiguo 06/10/2011, 05:54
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Envio de datos checkbox.

En vez de name='hastag' usa name='hastag[]'.

Así se guardan en un array ;).
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 06/10/2011, 06:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 12 años, 11 meses
Puntos: 8
Respuesta: Envio de datos checkbox.

Gracias Eleazan, lo he solucionado solo .

Lo que he hecho es que con un contador he ido modificando los elementos y en la pagina los he recogido con un $_REQUEST.

Os pongo el codigo:

Código PHP:
$i=0;
if(is_array($nombre)){ 
                                  echo "<table border='1'>";
                                  
                                foreach($nombre as $nombreht){
                                    echo "<tr>";
                                    
                                      echo "<td>".$nombreht."</td><td><input name='hastag_".$i."' type='checkbox' value='$nombreht'/></td>";
                                      echo "</tr>";
                                      $i++;
                                  }
                                  echo "</table>";
                              }
                              elseif(is_string($nombre)){
                                  echo "<table border='1'><tr><td>";
                                  
                                  echo $nombre."</td><td><input name='hastag_".$i."' type='checkbox' value='$nombre'/>";
                                  $i++;
                                  echo "</td></tr></table>";
                              }
                      ?></td>
                      
                    </tr>
                     
                    <tr>
                      <td>Director:</td>
                      <td><?=$datosPelicula['Director']?></td>
                      <td><?
                      
//convertHastag($var=$datosPelicula['Director']);
                      
$director=convertHastag($var=$datosPelicula['Director']);
                      
//print_r($director);
                      
echo "<table border='1'>";
                      foreach(
$director as $directorht){
                             echo 
"<tr><td>".$directorht."</td><td><input name='hastag_".$i."' type='checkbox' value='$directorht'/></td></tr>";
                          
$i++;
                      }
                          echo 
"</table>";
Código PHP:
$hastags $_REQUEST;
        
        if(!
$hastags){
            echo 
"Elemento vacio";
        }
        else{
            
print_r($hastags);
        } 

De esta manera puedo hacerlo tratar los datos parecido ha como yo queria, ya que puedo iterar, partiendo de hastag_ y tirar de nuevo con el contador.

Buscare si hay alguna funcion que me diga la dimension del array aunque eso no es problema.

Gracias!
  #4 (permalink)  
Antiguo 06/10/2011, 07:05
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Envio de datos checkbox.

Para saber los elementos de un array: count

De todas formas, creo q deberías dar un vistazo a la posible solucion que te dí.. es más "limpia" ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 06/10/2011, 07:31
 
Fecha de Ingreso: mayo-2011
Mensajes: 64
Antigüedad: 12 años, 11 meses
Puntos: 8
Respuesta: Envio de datos checkbox.

Cita:
Iniciado por Eleazan Ver Mensaje
Para saber los elementos de un array: count

De todas formas, creo q deberías dar un vistazo a la posible solucion que te dí.. es más "limpia" ;)
Tenias razón es mas limpia y menos engorrosa, cuantas mas armas y alternativas se tenga mejor, gracias!
  #6 (permalink)  
Antiguo 06/10/2011, 13:11
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Envio de datos checkbox.

Cita:
Iniciado por albertomozgz Ver Mensaje
Tenias razón es mas limpia y menos engorrosa, cuantas mas armas y alternativas se tenga mejor, gracias!
Yo hay dudas "tontas" q pone la gente, q yo resolveria de una forma, y alguien pone otra forma... y me quedo

Siempre se aprenden nuevas cosas... :)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 06/10/2011, 13:22
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Envio de datos checkbox.

Cita:
Iniciado por Eleazan Ver Mensaje
Para saber los elementos de un array: count

De todas formas, creo q deberías dar un vistazo a la posible solucion que te dí.. es más "limpia" ;)
usa sizeof no count para contar elementos de un array. Aunque supuestamente es un alias, en un simple benchmark muestra que funciona mas rápido :/

Precálculo del Tamaño de un Array: Sizeof / Count

Código PHP:
Ver original
  1. //sin precálculo
  2. for ($i=0; $i<sizeOf($array); $i++);
  3. //con precálculo
  4. $size= count($array);
  5. for ($i=0; $i<$size; $i++);

Y he dejado la más fácil para el final: absolutamente sí, siempre, debemos pre calcular el tamaño de un array de PHP a la hora de iterarlo, utilizando de manera indistinta la función count o su alias sizeof. Si no lo hacemos, un gatito será asesinado de forma horrible.



Fuente: http://www.lostiemposcambian.com/blo...zacion-de-php/
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 06/10/2011 a las 13:28

Etiquetas: variables
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 13:00.