Foros del Web » Programando para Internet » PHP »

enviar un array de checkbox seleccionados y armar sql

Estas en el tema de enviar un array de checkbox seleccionados y armar sql en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar necesito enviar desde php un array con los valores de un grupo de checkbox , colocarlos en una sentencia ...
  #1 (permalink)  
Antiguo 04/12/2012, 13:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
enviar un array de checkbox seleccionados y armar sql

hola amigos espero me puedan ayudar

necesito enviar desde php un array con los valores de un grupo de checkbox , colocarlos en una sentencia sql y insertarlos a una base de datos

Código PHP:
Ver original
  1. <input type='checkbox' name='opcion[]' value=" . $fila['id_categoria']."  id=" . $fila['nom_categoria']." />"


en el servidor hago lo siguiente , en opciones tengo el array
Código PHP:
Ver original
  1. if(isset($_POST['procesar'])){
  2.  $opciones = $_POST['opcion'];
  3. }

y armo la sentencia sql

Código PHP:
Ver original
  1. $ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,:fec_fin_actividad,:hor_ini_actividad,:hor_fin_actividad,:fen_actividad,:vol_actividad,:ban_actividad,:nba_actividad,:rep_actividad,:obs_actividad,1,:opciones)");

pero no me funciona , que estoy haciendo mal?



esta sentencia sql si me funciona pero yo lo necesito con variables
Código PHP:
Ver original
  1. $ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,:fec_fin_actividad,:hor_ini_actividad,:hor_fin_actividad,:fen_actividad,:vol_actividad,:ban_actividad,:nba_actividad,:rep_actividad,:obs_actividad,1,array[2,1])");
  #2 (permalink)  
Antiguo 04/12/2012, 13:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: enviar un array de checkbox seleccionados y armar sql

Podrías usar implode para unirlo y así formar la sentencia de SQL, ejemplo rápido para que tengas una idea

Código PHP:
Ver original
  1. <input type="checkbox" name="foo[]" value="foo" />
  2. <input type="checkbox" name="foo[]" value="bar" />
  3. <input type="checkbox" name="foo[]" value="baz" />
  4. <input type="checkbox" name="foo[]" value="bat" />
  5. <input type="checkbox" name="foo[]" value="candy" />
  6. <input type="checkbox" name="foo[]" value="fruits" />
Código PHP:
Ver original
  1. <?php
  2. $where = array();
  3. if( !empty($_POST['foo']) ){
  4.     $where[] = ' foo = "' . implode('" AND foo = "', $_POST['foo']) . '"';
  5. }
  6. $qry = 'SELECT * FROM foo_table ' . ( ( !empty($where) ) ? ' WHERE ' . implode(' AND ', $where) : '' );

Todo eso puede imprimir algo como
SELECT * FROM foo_table WHERE foo = "foo" AND foo = "bar" AND foo = "baz"
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/12/2012, 13:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

abimaelrc gracias por responder


a la sentencia sql debo de pasarle un parametro asi array[2,1]
  #4 (permalink)  
Antiguo 04/12/2012, 13:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: enviar un array de checkbox seleccionados y armar sql

No entendí.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 04/12/2012, 13:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

hola asi me funciona , osea colocando los valores del array , pero lo necesito es que sea variable

Código PHP:
Ver original
  1. $ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,.,1,array[2,1])");
  #6 (permalink)  
Antiguo 04/12/2012, 14:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: enviar un array de checkbox seleccionados y armar sql

Cuando hagas el bind solo es cuestión de declararlo. Algo así
Código PHP:
Ver original
  1. $ins->bindValue(':valorQueQuieresRemplazar', 'array[' . implode(',', $_POST['foo']) . ']', PDO::PARAM_STR);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 04/12/2012, 14:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

abimaelrc gracias por responder pero estoy confundido un poco y te expongo como lo estoy realizando

<input type="checkbox" name="opcion[]" value="1" />
<input type="checkbox" name="opcion[]" value="2" />
<input type="checkbox" name="opcion[]" value="3" />

$opciones= array();
if( !empty($_POST['opcion']) ){
$opciones[] = ' opcion= "' . implode('" AND opcion = "', $_POST['opcion']) . '"';
}


como lo coloco en esta parte?
Código PHP:
Ver original
  1. $ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,.,1,array[2,1])");
  #8 (permalink)  
Antiguo 04/12/2012, 14:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 6 meses
Puntos: 1517
Respuesta: enviar un array de checkbox seleccionados y armar sql

Lo que te coloqué fue otro ejemplo, no ese, mira el ejemplo del bindValue.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 04/12/2012, 14:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

voy en esta parte

pero obtengo errores

$ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,...,1,'array[' . implode(',', $_POST['opcion']) . ']')");
  #10 (permalink)  
Antiguo 04/12/2012, 16:05
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 10 años, 5 meses
Puntos: 17
Respuesta: enviar un array de checkbox seleccionados y armar sql

Código PHP:
Ver original
  1. ...
  2. $sqlValues = "array[";
  3. foreach ($_POST['opcion'] AS $id => $value)
  4.    $sqlValues .= $value . ", ";
  5. $sqlValues = substr($sqlValues, 0, -2) . "]";
  6. ...

Suerte!
__________________
Hermann D. Schimpf
Visita mis repositorios de:
Clases Java: http://code.google.com/p/javaclassesrepository/
Clases PHP: http://code.google.com/p/phpclassesrepository/
  #11 (permalink)  
Antiguo 04/12/2012, 16:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

hschimpf gracias por responder , estoy haciendo lo que me indicas pero no logro realizar la inserccion, que estoy haciendo mal?

lo estoy realizando de la siguiente manera

Código PHP:
Ver original
  1. $sqlValues = "array[";
  2.             foreach ($_POST['opcion'] AS $id => $value)
  3.             $sqlValues .= "'$value'";
  4.             $sqlValues .= "]";

Código PHP:
Ver original
  1. $ins = $db->prepare("SELECT inserciones(:fec_ini_actividad,:fec_fin_actividad,:hor_ini_actividad,:hor_fin_actividad,:fen_actividad,:vol_actividad,:ban_actividad,:nba_actividad,:rep_actividad,:obs_actividad,1,:sqlValues)");
  #12 (permalink)  
Antiguo 04/12/2012, 16:10
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 10 años, 5 meses
Puntos: 17
Respuesta: enviar un array de checkbox seleccionados y armar sql

Actualize la respuesta porque estaba mal. Quedaba una coma de mas al final.

Suerte!
__________________
Hermann D. Schimpf
Visita mis repositorios de:
Clases Java: http://code.google.com/p/javaclassesrepository/
Clases PHP: http://code.google.com/p/phpclassesrepository/
  #13 (permalink)  
Antiguo 04/12/2012, 16:40
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.852
Antigüedad: 9 años, 2 meses
Puntos: 6
Respuesta: enviar un array de checkbox seleccionados y armar sql

hschimpf gracias por responder tengo un problema , el cual es cuando no envio ningun checkbox , se que puedo validar eso con el if pero no se donde colocarlo

Código PHP:
Ver original
  1. if(isset($_POST['procesar'])){
  2. }

Etiquetas: armar, checkbox, seleccionados, sql, 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 20:47.