Foros del Web » Programando para Internet » PHP »

Checkbox y Textarea a Mysql

Estas en el tema de Checkbox y Textarea a Mysql en el foro de PHP en Foros del Web. Buenas, Me he quedado clavada en esto y no consigo encontrar la solución. He creado un formulario de ausencias al trabajo, en el que cada ...
  #1 (permalink)  
Antiguo 08/04/2012, 08:34
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Checkbox y Textarea a Mysql

Buenas,

Me he quedado clavada en esto y no consigo encontrar la solución. He creado un formulario de ausencias al trabajo, en el que cada usuario indique su nombre y apellido, día de la ausencia y motivo de la misma.

El caso es que son 3 los posibles motivos, y el 3º es el que me esta dando poblemas:
Código HTML:
<tr><td><label>C) Asunto Particular</label></td>
<td><input type="checkbox" name="asunto_particular[]" value="1" /> No Retribuible <br />
	<input type="checkbox" name="asunto_particular[]" value="2" /> Recuperable <br /><br />
	 <textarea rows="2" cols="30"></textarea></td></tr> 
La idea es que el usuario pueda seleccionar uno, o los dos checkbox e inserte algo de texto en el <textarea>. El fallo esta cuando lo envio a la base de datos, el proceso hecho seria este:

Código PHP:
<?php 

 
if (isset($_POST["nombre"])) 
        {
           
$nombre $_POST["nombre"];
           
$apellidos $_POST["apellidos"];
           
$dia_ausencia $_POST["calendario"];
           
$razones_trabajo $_POST["razones_trabajo"];
           
$licencia_convenio $_POST["licencia_convenio"];
           
$asunto_particular $_POST["asunto_particular"];
             
 
$query 'INSERT INTO ausencias (nombre, apellidos, dia_ausencia, razones_trabajo, licencia_convenio, asunto_particular) VALUES (\''.$nombre.'\',\''.$apellidos.'\',\''.$dia_ausencia.'\',\''.$razones_trabajo.'\',\''.$licencia_convenio.'\',\''.$asunto_particular.'\')';
mysql_query($query) or die(mysql_error());
                            
        echo
"Datos enviados";
        }    
    
?>
En la base de datos, en la tabla de ausencias tengo un campo llamado "asunto_particular" de tipo text que es en el que me gustaría que se guardara la información de los dos checkbox y de el textarea.
Muchas gracias de antemano :)
  #2 (permalink)  
Antiguo 08/04/2012, 09:14
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Checkbox y Textarea a Mysql

1 - $_POST['asunto_particular']
devuelve una matriz por lo tanto si la inserta directamente en un campo de text
lo unico que se te deberia de grabar es algo como " array "


2 - Fijate en la variable
$_POST['asunto_particular'];

Solo esta definida si el usuario hace un check en uno de los asuntos particulares
deberias de decirle al sistema que hacer en caso de que el usuario no seleccione ninguna y que hacer en caso de que si.


3 - No veo como optines los datos del textarea, no tiene nombre.

Voy hacer un ejemplo que va englobar el punto 1 y 2 y trabajare con la funcion isset


Código PHP:
Ver original
  1. # Compruebo si la variable esta definida o sea si el usuario hizo click en una de las opciones.
  2.     if( isset($_POST['asunto_particular']) ){
  3.        
  4.                 # verifico si el usuario ha seleccionado las dos opciones
  5.                 if( count($_POST['asunto_particular']) > 1 ){
  6.                     # si selecciono dos opciones entonces tomo los valores y lo concateno en la variable asuntos particulares.
  7.                     $asunto_particular = $_POST['asunto_particular'][0]." ".$_POST['asunto_particular'][1];
  8.                 }else{
  9.                     # de lo contrario solo tomo la opcion seleccionada por el usuario.
  10.                     $asunto_particular = $_POST['asunto_particular'][0];
  11.                 }
  12.     } else {
  13.         #si el usuario no selecciono ninguna opcion entonces asuntos_particulares se almacena vacia.
  14.             $asunto_particular = "";
  15.     }
  16.        
  17.    
  18.    
  19.    
  20.      if (isset($_POST["nombre"]))  
  21.         {
  22.            $nombre = $_POST["nombre"];
  23.            $apellidos = $_POST["apellidos"];
  24.            $dia_ausencia = $_POST["calendario"];
  25.            $razones_trabajo = $_POST["razones_trabajo"];
  26.            $licencia_convenio = $_POST["licencia_convenio"];
  27.            $asunto_particular = $asunto_particular;
  28.              
  29.  $query = 'INSERT INTO ausencias (nombre, apellidos, dia_ausencia, razones_trabajo, licencia_convenio, asunto_particular) VALUES (\''.$nombre.'\',\''.$apellidos.'\',\''.$dia_ausencia.'\',\''.$razones_trabajo.'\',\''.$licencia_convenio.'\',\''.$asunto_particular.'\')';
  30. mysql_query($query) or die(mysql_error());
  31.                              
  32.         echo"Datos enviados";
  33.         }

en caso de que quieras convertir el valor devuelto por asunto_particular en un texto entonces crea una funcion para tal fin.

ej.


Código PHP:
Ver original
  1. function getAsunto($value){
  2.        
  3.         switch( $value ){
  4.             case 1:
  5.                 $msg =  'No Retribuible';
  6.             break;
  7.            
  8.             case 2:
  9.                 $msg =  'Recuperable';
  10.             break; 
  11.  
  12.             default:
  13.                          $msg = 'Indefinido';
  14.                    
  15.         }
  16.        
  17.         return $msg;
  18.        
  19.     }

$asunto_particular = getAsunto($_POST['asunto_particular'][0]);
  #3 (permalink)  
Antiguo 08/04/2012, 10:08
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Checkbox y Textarea a Mysql

Solucionado, muchísimas gracias gjx2.

Etiquetas: checkbox, formulario, mysql, sql, tabla, textarea, usuarios
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 08:11.