elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Problema con checkbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con checkbox  (Leído 9,595 veces)
Angel Zero

Desconectado Desconectado

Mensajes: 92


ZERO


Ver Perfil WWW
Problema con checkbox
« en: 15 Octubre 2011, 07:05 am »

hola a todos, espero esten bien :D.

He logrado crear el checkbox, pero lo que no he podido lograr, es que la informacion se guarde en la base de datos, necesito ayuda con esto.

Citar
<td class="small" align="right">Descripcion de accesorios:</td><td class="informacion" align="left">
   
   <form action=registrar.php method=post>   
   
   <input type="checkbox" name="accesorios" value="aire" > Aire
   <input type="checkbox" name="accesorios" value="pintura" > pintura
        <input type="checkbox" name="accesorios" value="portavasos" > portavasos
        <input type="checkbox" name="accesorios" value="rines" > rines
   </form>
   
   </td>
   
   </tr>
este es el codigo que puse para que el checkbox saliera.

Citar
<?php
//1. Crear conexión a la Base de Datos
$conexion = mysql_connect("localhost","root","");
if (!$conexion) {
die("Fallo la conexión a la Base de Datos: "  . mysql_error());
}
//2. Seleccionar la Base de Datos a utilizar
$seleccionar_bd = mysql_select_db("redmotor_redmotor", $conexion);
if (!$seleccionar_bd) {
die(“Fallo la selección de la Base de Datos: ” . mysql_error());
}
//3. Tomar los campos provenientes del Formulario
$aire = $_POST['accesorios'];
//4. Insertar campos en la Base de Datos (No inserto el id_empleado ya que se genera automaticamente)
$insertar = mysql_query(“INSERT INTO empleados (aire)
VALUES (‘{$accesorios}’);
if (!$insertar) {
die(“Fallo en la insercion de registro en la Base de Datos: ” . mysql_error());
}
//4. Cerrar conexión a la Base de Datos
mysql_close($conexion);
?>

no les voy a negar que no tengo idea de que hacer o como hacer el php, busque y encontre algunos, los edite segun lo que entiendo, pero aun asi no me funciona, les agradeceria toda la ayuda posible con esto.

Gracias.


En línea

Zero
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #1 en: 15 Octubre 2011, 10:01 am »

Intenta con la función filter_input_array().

Código
  1. $aDatos = filter_input_array(INPUT_POST);

Supongamos que tienes el siguiente formulario HTML:


Código
  1. <form method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
  2.  
  3.  <input type="text" name="email" />
  4.  <input type="text" name="sevendigits" />
  5.  <input type="text" name="zerototwenty" />
  6.  
  7.  <input type="checkbox" name="checkboxes[]" value="cb1" />
  8.  <input type="checkbox" name="checkboxes[]" value="cb2" />
  9.  <input type="checkbox" name="checkboxes[]" value="cb3" />
  10.  
  11.  <input type="hidden" name="validurl" value="http://elhacker.net" />
  12.  
  13.  <input type="submit" value="Submit" />
  14.  
  15. </form>

Haciéndolo a la vieja usanza sería así:

Código
  1. $email = $_POST['email'];
  2. $sevendigits = $_POST['sevendigits'];
  3. $zerototwenty = $_POST['zerototwenty'];
  4. // ... and so on.
  5.  
  6. if(empty($email)){
  7.  // Empty email, show error or do something else.
  8.  return;
  9. }
  10.  
  11. if(!empty($sevendigits)){
  12.  if(preg_match("/^(\d{7})$/",$sevendigits)){
  13.    $sevendigits = intval($sevendigits);
  14.  }
  15.  else {
  16.    // Not seven digits
  17.  }
  18. }
  19. else {
  20.  // Error, sevendigits wasn't submitted.
  21. }
  22.  
  23. // ... and so on, you get the idea.

Y con la función filter_input_array():

Código
  1. <?php
  2.  
  3. // Works only in PHP 5.2.0 or later.
  4.  
  5. $filter = array(
  6.  
  7.   // This ensures that $_POST['email'] is actually a
  8.   // valid email address.
  9.   'email' => FILTER_VALIDATE_EMAIL,
  10.  
  11.   // This filter verifies that $_POST['sevendigits'] is
  12.   // exactly a seven digit number using a regular expression.
  13.   'sevendigits' => array('filter'  => FILTER_VALIDATE_REGEXP,
  14.                          'options' => array('regexp' => '/^\d{7}$/')
  15.                          ),
  16.  
  17.   // Make sure that $_POST['zerototwenty'] is a number
  18.   // 0 to 20 using the min_range and max_range specs.
  19.   'zerototwenty' => array('filter'  => FILTER_VALIDATE_INT,
  20.                           'options' => array('min_range' => 0,
  21.                                              'max_range' => 20)
  22.                           ),
  23.  
  24.   // Verify that the incoming $_POST['checkboxes'] from
  25.   // the checkbox list is actual an array like we expect.
  26.   'checkboxes' => array('filter' => FILTER_VALIDATE_INT,
  27.                         'flags'  => FILTER_REQUIRE_ARRAY,
  28.                         ),
  29.  
  30.   // Make sure that the hidden URL field is a valid
  31.   // properly formatted URL.
  32.   'validurl' => FILTER_VALIDATE_URL,
  33.  
  34.   // ----- A few other filter examples not included
  35.   // ----- in the <form> sample above.  I just felt like
  36.   // ----- experimenting with a few other filters.
  37.  
  38.   // This field must be a boolean type.  If mustbeboolean is
  39.   // "true", "1", "TRUE" or some other value that represents
  40.   // true then this will be true.  Otherwise, it will be false.
  41.   'mustbeboolean' => array('filter' => FILTER_VALIDATE_BOOLEAN),
  42.  
  43.   // Encode a URL that we need encoded from $_POST['encodeurl']
  44.   'encodeurl' => array('filter' => FILTER_SANITIZE_ENCODED),
  45.  
  46.   // This dosen't exist in the form, I'm just using it to show
  47.   // what the result will be when an input doesn't exist.
  48.   'doesnotexist' => FILTER_VALIDATE_INT
  49.  
  50. );
  51.  
  52. // Filter and sanitize the incoming $_POST[] with the filter above.
  53. $inputs = filter_input_array( INPUT_POST, $filter );
  54.  
  55. // Here's an example of checking if $_POST['email'] made it
  56. // past our FILTER_VALIDATE_EMAIL filter.
  57. if( empty($inputs['email']) ) {
  58.   echo "Empty or invalid email entered.";
  59. }
  60.  
  61. ?>
  62.  

Esta última función agrega una capa de seguridad/filtrado.


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Hurubnar

Desconectado Desconectado

Mensajes: 299



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #2 en: 15 Octubre 2011, 13:28 pm »

Buenas Angel Zero, he supuesto lo que quieres hacer, pero como no me acuerdo de cómo iban los CheckBox, te lo hago con simples Text... Ya cambiarás tú lo demás.

  • Para hacerlo necesitarás un hosting que soporte PHP y MySQL (en el ejemplo uso miarroba.com)
  • Deberás poseer una base de datos en MySQL (en este caso mysql.webcindario.com)

Y seguir los siguientes pasos:
  • Conectarte a la Base de Datos
  • Crear tabla en la DB
  • Crear el documento que contiene los <input type="text" ... (en vez de CheckBox)
  • Enviar la información lograda en el doc. de los CheckBox a la tabla que hemos creado.

Establecemos la conexión con la Base de Datos (conex.php):
Código
  1. <?php
  2. $res = mysql_connect ("mysql.webcindario.com", "usuario", "pass");
  3. If ($res==0){
  4. echo ("Ha habido un error");
  5. }
  6.  
  7. $b = mysql_select_db("el_DB_que_usaras");
  8. if ($b==0){
  9. // Si hay un error aparecera el siguiente mensaje
  10. echo ("Ha habido un error");
  11. }
  12. ?>

Crearemos la tabla que guardará en un futuro la información que le enviemos (creartabla.php):
Código
  1. <?php
  2. include("conex.php"); //necesitamos llamar al archivo que establece la conexión
  3.  
  4. $rs = mysql_query ("CREATE TABLE nombre_de_tabla(
  5. valor0 VARCHAR(30) NOT NULL,
  6. valor1 VARCHAR(10) NOT NULL)",$res);
  7.  
  8. If ($rs==0){
  9. // Si hay un error aparecera el siguiente mensaje
  10. echo "Ha habido un error";
  11. }
  12. ?>

Por último crearemos el documento en el que introduciremos los datos que luego se guardarán en la Base de Datos (inicio.php):
Código
  1. <html>
  2. <head>
  3. <title>Titulo de la página</title>
  4. </head>
  5.  
  6. <body>
  7. <form action="inicio.php" method=post>
  8. <table>
  9. <tr>
  10. <td>Valor 0:</td>
  11. <td><input type=text name="vherri"></td>
  12. </tr>
  13. <tr>
  14. <td>Valor 1</td>
  15. <td><input type=text name="vpk"></td>
  16. </tr>
  17. <tr>
  18. <td></td>
  19. <td><input type=submit name="to" value="Entrar">
  20. </tr>
  21. <tr>
  22. </tr>
  23. </table>
  24. </form>
  25. </body>
  26. </html>
  27.  
  28. <?php
  29. // Establecemos la conexion
  30. include("conex.php");
  31.  
  32. $sarr = mysql_query("INSERT INTO nombre_de_tabla (valor0, valor1) values ('$vherri', '$vpk')", $res);
  33. if($sarr==0){
  34. // Si hay un error aparecera el siguiente mensaje
  35. echo "Ha habido un error";
  36. }
  37. ?>

Este último archivo (inicio.php) será la página que verá la gente, en el que introducirán dos valores (de máximo 30 y 10 caracteres, respectivamente) y enviarán los datos a la Base de Datos (para guardarlos) al pulsar el botón "Entrar".

Me ha costado lo mío escribir este sencillo código (soy un novato en PHP), no te lo hice con los CheckBox porque no me acuerdo de cómo se enviaban sus valores ni sé lo que quieres hacer con certeca (¿si está "checkeado" Aire o pintura qué valor quieres introducir en la tabla?).

Si explicas con esmero qué pretendes hacer, quizá te pueda ayudar con el código real y no con un ejemplo (como ahora).

Un saludo,
atte. Herio
« Última modificación: 15 Octubre 2011, 13:37 pm por Herio » En línea

Angel Zero

Desconectado Desconectado

Mensajes: 92


ZERO


Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #3 en: 15 Octubre 2011, 17:12 pm »

les mostrare graficamente que es lo que deseo hacer, pero claro esta que voy a probar con lo que me han dicho, aunque no entiendo mucho, tratare de leer y entender ;)

aca les dejo algunas imagenes con lo que se desea hacer, para que me puedan enterner mejor

en esta imagen muestro la base de datos del xammp, ese espacio es donde deberia de guardarse las seleccion de los chechbox, es decir, si le doy a "Aire" deberia de guardarse aire, y si le doy a pintura deberia de guardarse "Aire, pintura".


y en esta muestro la pagina donde se hace el registro de los vehiculos, y como se verian los checkbox


Muchas gracias por la ayuda ;)
En línea

Zero
Hurubnar

Desconectado Desconectado

Mensajes: 299



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #4 en: 15 Octubre 2011, 18:44 pm »

Aquí te dejo una página que trata sobre el mismo tema en inglés (el envío de la información de los CheckBox seleccionados a una tabla en MySQL):
http://www.ozzu.com/programming-forum/mysql-php-and-checkboxes-t25807.html

Y en la segunda foto vi que tienes una opción "S<?>" cuando en realidad quieres decir "SÍ". Para solucionarlo, en vez de escribir "SÍ" escribe lo siguiente en el código HTML:
Código
  1. S&Iacute

Un saludo,
atte. Herio
« Última modificación: 15 Octubre 2011, 18:46 pm por Herio » En línea

Hurubnar

Desconectado Desconectado

Mensajes: 299



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #5 en: 15 Octubre 2011, 19:10 pm »

Buenas:
Ya te hice un ejemplo Angel Zero. Te queda modificar alguna opción (nombre_de_tala, usuario, pass, mysql.webcindario.com...).

Necesitas 2 archivos:
  • conex.php
  • cheek.php

    Contenido de conex.php:
    Código
    1. <?php
    2. $res = mysql_connect ("mysql.webcindario.com", "usuario", "pass");
    3. If ($res==0){
    4. echo ("Ha habido un error");
    5. }
    6.  
    7. $b = mysql_select_db("el_DB_que_usaras");
    8. if ($b==0){
    9. // Si hay un error aparecera el siguiente mensaje
    10. echo ("Ha habido un error");
    11. }
    12. ?>

    Contenido de cheek.php:
    Código
    1. <html>
    2. <body>
    3.  
    4. <form action="cheeck.php" method=post>
    5. <table>
    6. <tr>
    7. <td>Valor 0</td>
    8. <td><input type="checkbox" name="val0" VALUE="Aire" />Aire</td>
    9. </tr>
    10. <tr>
    11. <td></td>
    12. <td><input type=submit name="to" value="Entrar">
    13. </tr>
    14. </table>
    15. </form>
    16.  
    17. </body>
    18. </html>
    19.  
    20. <?php
    21. // Establecemos la conexion.
    22. include("conex.php");
    23.  
    24. // Comprobamos si el CheckBox de "Aire" esta seleccionado.
    25. if ($val0 != ""){
    26.  
    27. // Si "Aire" esta seleccionado introduciremos su valor en la tabla
    28. $sarr = mysql_query("INSERT INTO nombre_de_tabla (valor0) values ('$val0')", $res);
    29. if($sarr==0){
    30. // Si hay un error aparecera el siguiente mensaje
    31. echo "Ha habido un error";
    32. }
    33. }
    34. ?>


    Espero que te sirva, cualquier duda, ya sabes.
    atte. Herio
« Última modificación: 15 Octubre 2011, 19:14 pm por Herio » En línea

Angel Zero

Desconectado Desconectado

Mensajes: 92


ZERO


Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #6 en: 15 Octubre 2011, 20:12 pm »

Bueno, con este codigo logre hacer que el checkbox, me guardara en la ubicacion "accesorios" de mi base de datos

Citar
<td class="small" align="right">Descripcion de accesorios:</td><td class="informacion" align="left"><input type="checkbox" name="accesorios" value="Aire" />Aire</td></tr>

Ahora lo que necesito es poder poner mas de un checkbox, y que a su vez, me guarde en el mismo campo de "accesorios" valores diferentes y separados por comas.

Citar
accesorios: aire, pintura, vasos,

sera posible? Gracias por la ayuda :D
En línea

Zero
Hurubnar

Desconectado Desconectado

Mensajes: 299



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #7 en: 15 Octubre 2011, 20:46 pm »

Citar
Bueno, con este codigo logre hacer que el checkbox, me guardara en la ubicacion "accesorios" de mi base de datos

Citar
<td class="small" align="right">Descripcion de accesorios:</td><td class="informacion" align="left"><input type="checkbox" name="accesorios" value="Aire" />Aire</td></tr>

¿Con qué código? Éso que has escrito es código HTML, nada más.

Intenta explicarte mejor.  :-X
En línea

Angel Zero

Desconectado Desconectado

Mensajes: 92


ZERO


Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #8 en: 16 Octubre 2011, 16:37 pm »

pues si, es codigo html, pero eso logro ponerme la respuesta en la base de datos, ahora lo que intento es poner exactamente lo mismo, con diferentes cosas y que me guarde en el mismo lugar (accesorios)

Gracias.
En línea

Zero
Hurubnar

Desconectado Desconectado

Mensajes: 299



Ver Perfil WWW
Re: Problema con checkbox
« Respuesta #9 en: 16 Octubre 2011, 17:05 pm »

Es imposible que con solamente código HTML introduzcas datos en un DB, pero creo adivinar lo que estás haciendo... Quizás te ayude esta explicación: http://www.forosdelweb.com/f21/mysql-varios-valores-uno-109735/

Un saludo,
atte. Herio

PD Tienes nuevo MP
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con checkbox y base de datos
PHP
betocube 5 6,256 Último mensaje 21 Abril 2011, 22:33 pm
por betocube
problema checkbox onchange y php [solucionado]
PHP
soru13 0 2,047 Último mensaje 3 Julio 2012, 15:02 pm
por soru13
problema con checkbox (me tiene de cabeza)
Programación Visual Basic
rapbyone 3 2,128 Último mensaje 29 Abril 2014, 19:09 pm
por abkanis
Problema al almacenar valor de Checkbox
Programación Visual Basic
rapbyone 2 3,453 Último mensaje 6 Enero 2015, 13:12 pm
por leomoon45
Problema con checkbox
Programación Visual Basic
rapbyone 4 2,104 Último mensaje 6 Enero 2015, 17:46 pm
por silver_axe007
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines