Foros del Web » Programando para Internet » PHP »

guardar varios checkbox

Estas en el tema de guardar varios checkbox en el foro de PHP en Foros del Web. Hola, como estan?... Necesito saber si es posible tener varios checkbox clickeados y guardarlos todos como un solo valor para una tabla de la base ...
  #1 (permalink)  
Antiguo 11/06/2012, 08:14
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 0
guardar varios checkbox

Hola, como estan?...

Necesito saber si es posible tener varios checkbox clickeados y guardarlos todos como un solo valor para una tabla de la base de datos.

Les doy lo que tengo, y si se puede mejorar...

Código PHP:
<?php require_once('Connections/formulario.php'); ?>
<?php 
require_once('Connections/localhost.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO prueba (prueba) VALUES (%s)",
                       
GetSQLValueString($_POST['obs'], "text"));

  
mysql_select_db($database_localhost$localhost);
  
$Result1 mysql_query($insertSQL$localhost) or die(mysql_error());
}

mysql_select_db($database_formulario$formulario);
$query_Recordset1 "SELECT * FROM falla_calefon";
$Recordset1 mysql_query($query_Recordset1$formulario) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction?>">
  <label for="obs3"></label>
  <table border="1">
    <tr>
      <td>&nbsp;</td>
      <td>falla_calefon</td>
    </tr>
    <?php do { ?>
      <tr>
        <td><input name="obs" type="checkbox" id="obs" value="<?php echo $row_Recordset1['falla_calefon']; ?>" />
        <label for="obs"></label></td>
        <td><?php echo $row_Recordset1['falla_calefon']; ?></td>
      </tr>
      <?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
  </table>
  <p>
    <input type="submit" name="enviar" id="enviar" value="Enviar" />
  </p>
  <input type="hidden" name="MM_insert" value="form1" />
</form>
</body>
</html>
<?php
mysql_free_result
($Recordset1);
?>
Como se dan cuenta, aqui aparece un checkbox por cada valor de la tabla, pero al momento de guardar los datos en la otra base de datos solo me guarda uno de los varios marcados...

Gracias ;)
  #2 (permalink)  
Antiguo 11/06/2012, 08:23
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 9 meses
Puntos: 32
Respuesta: guardar varios checkbox

El problema es que todos los checkbox se llaman igual.
Porque no le asignas 1 nombre diferente a cada checkbox.
Código PHP:
Ver original
  1. $i = 0;
  2.  do{
  3.     echo "<tr><td><input name='obs_".$i."' type='checkbox' id='obs_".$i."' value='".$row_Recordset1['falla_calefon']."'/>
  4.             <label for='obs_".$i."'></label></td>
  5.             <td>".$row_Recordset1['falla_calefon']."</td>
  6.             </tr>";
  7.     $i++;
  8.   } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));

Espero sirva, saludos.
__________________
http://www.latinium.com.ar/
  #3 (permalink)  
Antiguo 11/06/2012, 09:08
Avatar de exitoso23487  
Fecha de Ingreso: enero-2009
Mensajes: 49
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: guardar varios checkbox

Por otro lado puedes manejar los checkbox como vector, es decir en el nombre colocarias "obs[]"
y al momento de realizar el "insert" lo colocarias dentro de un ciclo for, asegurandote que solo se insertarán aquellos checkboxes seleccionados.
Código PHP:
for($i=0;$i<sizeof($obs);$i++){
//todo el codigo de insertar en la BD

Espero haber comprendido tu duda y que te sirva.
  #4 (permalink)  
Antiguo 11/06/2012, 09:14
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: guardar varios checkbox

Vale, te entiendo, pero como hago luego para guardar los valores seleccionados separados por una coma???

Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO prueba (prueba) VALUES (%s)",
                       
GetSQLValueString($_POST['obs'], "text")); 

Etiquetas: checkbox, formulario, html, mysql, sql, tabla
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:31.