Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Añadir atributo checked a un checkbox dinamicamente

Estas en el tema de Añadir atributo checked a un checkbox dinamicamente en el foro de PHP en Foros del Web. Hola amigos, Necesito vuestra para resolver lo siguiente: Tengo una pagina que inserta registros en una base de datos en la cual tengo el siguiente ...
  #1 (permalink)  
Antiguo 18/02/2014, 22:29
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Añadir atributo checked a un checkbox dinamicamente

Hola amigos,

Necesito vuestra para resolver lo siguiente:

Tengo una pagina que inserta registros en una base de datos en la cual tengo el siguiente formulario (pongo solo la parte de los checkbox):

Código PHP:
                <label>¿Transporte p&uacute;blico?</label>    
            <
input type="checkbox" name="trans_publico" value="1"><br />
        <
label>¿Hay agua potable?</label>
            <
input type="checkbox" name="agua_potable" value="1"><br />
        <
label>¿Hay aseos p&uacute;blicos?</label>
            <
input type="checkbox" name="aseos" value="1"><br /><br /> 
Si estoy en lo cierto, al seleccionar cualquiera de los checkbox, se guardará un "1" en mi base de datos y si no se selecciona se guardará un "0". Almenos he comprobado con phpmyAdmin que se guardan esos valores mirando la tabla en cuestión (los guardo como boleanos).

En la página que tengo creada para "ver detalles del registro" se muestran como "1" y "0" esos campos de esta forma:

Cita:
Transporte público: 0
Agua potable: 1
Aseos: 1

PREGUNTA 1: ¿Qué debería hacer para que en lugar de "1" y "0" mostrara un "sí" o "no"?
PREGUNTA 2:
El problema lo tengo al recoger esos valores guardados en la DB ya que la página de "editar registro" contiene el mismo formulario pero no me marca los checkbox que tienen guardado el valor "1", sacandome todos los checkbox sin marcar. Este es el codigo de la pagina "editar registro":

Código PHP:
<?php
include("pages/seguridad.php");
include(
"pages/conexion.php");
?>
<h2>EDITAR EXCURSION</h2>    
<?php include("pages/menu_gestor.php");
//Se muestran los campos guardados en la db y si no se tocan se volverán a mandar los mismos
if(isset($_POST["boton"])){ $id=$_POST["id"];
                            
$denominacion=$_POST["denominacion"];
                            
$dir_calle=$_POST["dir_calle"];
                            
$dir_num=$_POST["dir_num"];
                            
$dir_piso=$_POST["dir_piso"];
                            
$dir_letra=$_POST["dir_letra"];
                            
$dir_cp=$_POST["dir_cp"];
                            
$localidad=$_POST["localidad"];
                            
$provincia=$_POST["provincia"];
                            
$contacto=$_POST["contacto"];
                            
$tlf_contacto=$_POST["tlf_contacto"];
                            
$correo=$_POST["correo"];
                            
$coordenadasGPS=$_POST["coordenadasGPS"];
                            
$observaciones=$_POST["observaciones"];
                            
$link_foto=$_POST["link_foto"];
                            
$puntuacion=$_POST["puntuacion"];
                            
$tipo=$_POST["tipo"];
                            
$trans_publico=$_POST["trans_publico"];
                            
$agua_potable=$_POST["agua_potable"];
                            
$aseos=$_POST["aseos"];                        
    
$sql="UPDATE sitios SET denominacion='$denominacion',dir_calle='$dir_calle',dir_num='$dir_num',dir_piso='$dir_piso',dir_letra='$dir_letra',dir_cp='$dir_cp',localidad='$localidad',provincia='$provincia',contacto='$contacto',tlf_contacto='$tlf_contacto',correo='$correo',coordenadasGPS='$coordenadasGPS',link_foto='$link_foto',puntuacion='$puntuacion', tipo='$tipo' WHERE idSitios=$id"
$res=mysql_query($sql,$conexion); //ahora actualizaremos la consulta:

$sql2="UPDATE excursiones SET trans_publico='$trans_publico',agua_potable='$agua_potable',aseos='$aseos' WHERE idSitios=$id"
$res2=mysql_query($sql2,$conexion); //ahora actualizaremos la consulta:


    
if(($res)&&($res2)){echo "Datos actualizados correctamente.<br/><a href='index.php?p=detalle_albergues&id=".$_POST['id']."'>Seguir viendo la ficha</a>";
        }else{echo 
"Error en la actualizacion, revise los datos de nuevo.";}
        
//a partir de aquí es cuando todavía no se le ha dado al botón, me recojo el id del hidden de abajo,q también es el del UPDATE...WHRE idcontactos..
        
}else{$id=$_GET["id"];
    
$sql="SELECT * FROM sitios WHERE idSitios=$id";      
    
$sql2="SELECT * FROM excursiones WHERE idSitios=$id";
      
$consulta=mysql_query($sql,$conexion);
          
$registro=mysql_fetch_array($consulta);
      
$consulta2=mysql_query($sql2,$conexion);      
        
$registro2=mysql_fetch_array($consulta2);
?>
    <form method="post" action="index.php?p=editar_excursiones">
        <label>Nombre:</label><br/>
            <input type="text" name="denominacion" value="<?php echo $registro["denominacion"];?>"/><br/>
        <label>Calle:</label><br/>
            <input type="text" name="dir_calle" value="<?php echo $registro["dir_calle"];?>"/><br/>
        <label>Numero:</label><br/>
            <input type="text" name="dir_num" value="<?php echo $registro["dir_num"];?>"/><br/>
        <label>Piso:</label><br/>
            <input type="text" name="dir_piso" value="<?php echo $registro["dir_piso"];?>"/><br/>
        <label>Letra:</label><br/>
            <input type="text" name="dir_letra" value="<?php echo $registro["dir_letra"];?>"/><br/>
        <label>C.P:</label><br/>
            <input type="text" name="dir_cp" value="<?php echo $registro["dir_cp"];?>"/><br/>
        <label>Localidad</label><br/>
            <input type="text" name="localidad" value="<?php echo $registro["localidad"];?>"/><br/>
        <label>Provincia</label><br/>
            <input type="text" name="provincia" value="<?php echo $registro["provincia"];?>"/><br/>
        <label>contacto:</label><br/>
            <input type="text" name="contacto" value="<?php echo $registro["contacto"];?>"/><br/>
        <label>Telefono contacto:</label><br/>
            <input type="text" name="tlf_contacto" value="<?php echo $registro["tlf_contacto"];?>"/><br/>
        <label>Correo:</label><br/>
            <input type="text" name="correo" value="<?php echo $registro["correo"];?>"/><br/>
        <label>Coordenadas GPS:</label><br/>
            <input type="text" name="coordenadasGPS" value="<?php echo $registro["coordenadasGPS"];?>"/><br/>
        <label>Observaciones:</label><br/>
            <input type="text" name="observaciones" value="<?php echo $registro["observaciones"];?>"/><br/>
        <label>Foto:</label><br/>
            <input type="text" name="link_foto" value="<?php echo $registro["link_foto"];?>"/><br/>
        <label>Puntuacion */10:</label><br/>
            <input type="text" name="puntuacion" value="<?php echo $registro["puntuacion"];?>"/><br/>    
        <label>Tipo de Sitio:</label><br/>
            <input type="text" name="tipo" readonly="readonly" value="<?php echo $registro["tipo"];?>"/><br/><br />            
    <!--segunda consulta-->
        <label>¿Transporte p&uacute;blico?</label>    
            <input type="checkbox" name="trans_publico" [B]NO SE QUE PONER AQUI PARA QUE TENGA EL ATRIBUTO CHECKED SI ESTE CAMPO CONTIENE UN "1" [/B]/><br />
        <label>¿Hay agua potable?</label>
            <input type="checkbox" name="agua_potable" [B]NO SE QUE PONER AQUI PARA QUE TENGA EL ATRIBUTO CHECKED SI ESTE CAMPO CONTIENE UN "1" [/B] /><br />
        <label>¿Hay aseos p&uacute;blicos?</label>
            <input type="checkbox" name="aseos" [B]NO SE QUE PONER AQUI PARA QUE TENGA EL ATRIBUTO CHECKED SI ESTE CAMPO CONTIENE UN "1"[/B] /><br />            
        <input type="hidden" name="id" value="<?php echo $id;?>"/><!--me mando el id oculto,será obligatorio para la consulta para actualizar el q sea en concreto no todos-->
        <input type="submit" name="boton" value="Editar"/><!--al darle al botón el id que me mando es el de POST de arriba-->
</form>
<?php  
}
?>
<br/>
<a href='index.php?p=excursiones'>Volver al listado</a>
Como veis, la información proviene de 2 tablas pero las consultas se que las tengo bien.
Se me olvidaba decir que no quiero usar javascript

Ojala alguien pudiera orientarme pq tengo la cabeza como un bombo después de probar mil cosas!!

Última edición por yakrum; 18/02/2014 a las 22:39
  #2 (permalink)  
Antiguo 19/02/2014, 02:23
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Código PHP:
Ver original
  1. <?php if ($registro["agua_potable"]) echo "si"; else echo "no"; ?>

Perdón, no era lo que pedías, EDITO

Código PHP:
Ver original
  1. <input type="checkbox" name="agua_potable" <?php if ($registro["agua_potable"]) echo "value='checked'"; ?> /><br />
  #3 (permalink)  
Antiguo 19/02/2014, 02:56
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Hola,

Lo primero que creo que deberías saber es que en un formulario (tipo post en este caso) solo se añadirán al array $_POST los checkbox que están chequeados y se les asigna el valor que tengas en el atributo value, en este caso "1".

Respecto a las preguntas:

Pregunta 1:
Mi recomendación es que utilices lo siguiente:

Código PHP:
echo ($registro["agua_potable"])?'Sí':'No'
Pregunta 2:
Para que salgan los checkbox seleccionados NO hay que cambiar su valor. Basta con añadir el atributo checked="checked". Con el fin de hacer el formulario 'populated', mi recomendación respecto al código sería la siguiente:

Código HTML:
<input type="checkbox" name="agua_potable" value="1"<?php echo (isset($agua_potable))?'checked="checked"':(($registro['agua_potable'])?'checked="checked"':'');?>>
De esta manera quedará en el formulario el valor dado en caso de que falle la validación del mismo, y así el usuario no tendrá que chequearlo de nuevo.

Espero que ayude.

Saludos.
__________________
Yesterday was the only easy day. Deportes de aventura

Última edición por supercoco79; 19/02/2014 a las 03:06
  #4 (permalink)  
Antiguo 19/02/2014, 06:56
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Lo primero:

MUCHISIAS GRACIAS por la ayuda lolainas y supercoco79, he podido hacer que me muestre el "SI" o "NO" en lugar del valor guardado.

Sin embargo al querer añadir el atributo checked a los checkbox que tienen un "1" asignado en la DB me estoy comiendo la cabeza porque me saca errores de variable no definida
Cita:
Notice: Undefined index: trans_publico
Notice: Undefined index: agua_potable
Notice: Undefined index: aseos
Cosa que no entiendo pq creo que sí están definidas

He probado con las 2 maneras que me habeis aconsejado y el error es el mismo..

Pongo todo el codigo del archivo de "editar_excursiones" para que veais como queda con la recomendación de supercoco79:

Código PHP:
<?php
include("pages/seguridad.php");
include(
"pages/conexion.php");
?>
<h2>EDITAR EXCURSION</h2>    
<?php include("pages/menu_gestor.php");
//Se muestran los campos guardados en la db y si no se tocan se volverán a mandar los mismos
if(isset($_POST["boton"])){ $id=$_POST["id"];
                            
$denominacion=$_POST["denominacion"];
                            
$dir_calle=$_POST["dir_calle"];
                            
$dir_num=$_POST["dir_num"];
                            
$dir_piso=$_POST["dir_piso"];
                            
$dir_letra=$_POST["dir_letra"];
                            
$dir_cp=$_POST["dir_cp"];
                            
$localidad=$_POST["localidad"];
                            
$provincia=$_POST["provincia"];
                            
$contacto=$_POST["contacto"];
                            
$tlf_contacto=$_POST["tlf_contacto"];
                            
$correo=$_POST["correo"];
                            
$coordenadasGPS=$_POST["coordenadasGPS"];
                            
$observaciones=$_POST["observaciones"];
                            
$link_foto=$_POST["link_foto"];
                            
$puntuacion=$_POST["puntuacion"];
                            
$tipo=$_POST["tipo"];
                            
$trans_publico=$_POST["trans_publico"];
                            
$agua_potable=$_POST["agua_potable"];
                            
$aseos=$_POST["aseos"];                            
    
$sql="UPDATE sitios SET denominacion='$denominacion',dir_calle='$dir_calle',dir_num='$dir_num',dir_piso='$dir_piso',dir_letra='$dir_letra',dir_cp='$dir_cp',localidad='$localidad',provincia='$provincia',contacto='$contacto',tlf_contacto='$tlf_contacto',correo='$correo',coordenadasGPS='$coordenadasGPS',link_foto='$link_foto',puntuacion='$puntuacion', tipo='$tipo' WHERE idSitios=$id"
$res=mysql_query($sql,$conexion); //ahora actualizaremos la consulta:

$sql2="UPDATE excursiones SET trans_publico='$trans_publico',agua_potable='$agua_potable',aseos='$aseos' WHERE idSitios=$id"
$res2=mysql_query($sql2,$conexion); //ahora actualizaremos la consulta:

    
if(($res)&&($res2)){echo "Datos actualizados correctamente.<br/><a href='index.php?p=detalle_excursiones&id=".$_POST['id']."'>Seguir viendo la ficha</a>";
        }else{echo 
"Error en la actualizacion, revise los datos de nuevo.";}
        
//a partir de aquí es cuando todavía no se le ha dado al botón, me recojo el id del hidden de abajo,q también es el del UPDATE...WHRE idcontactos..
        
}else{$id=$_GET["id"];
    
$sql="SELECT * FROM sitios WHERE idSitios=$id";      
    
$sql2="SELECT * FROM excursiones WHERE idSitios=$id";
      
$consulta=mysql_query($sql,$conexion);
          
$registro=mysql_fetch_array($consulta);
      
$consulta2=mysql_query($sql2,$conexion);      
        
$registro2=mysql_fetch_array($consulta2);
?>
    <form method="post" action="index.php?p=editar_excursiones">
        <label>Nombre:</label><br/>
            <input type="text" name="denominacion" value="<?php echo $registro["denominacion"];?>"/><br/>
        <label>Calle:</label><br/>
            <input type="text" name="dir_calle" value="<?php echo $registro["dir_calle"];?>"/><br/>
        <label>Numero:</label><br/>
            <input type="text" name="dir_num" value="<?php echo $registro["dir_num"];?>"/><br/>
        <label>Piso:</label><br/>
            <input type="text" name="dir_piso" value="<?php echo $registro["dir_piso"];?>"/><br/>
        <label>Letra:</label><br/>
            <input type="text" name="dir_letra" value="<?php echo $registro["dir_letra"];?>"/><br/>
        <label>C.P:</label><br/>
            <input type="text" name="dir_cp" value="<?php echo $registro["dir_cp"];?>"/><br/>
        <label>Localidad</label><br/>
            <input type="text" name="localidad" value="<?php echo $registro["localidad"];?>"/><br/>
        <label>Provincia</label><br/>
            <input type="text" name="provincia" value="<?php echo $registro["provincia"];?>"/><br/>
        <label>contacto:</label><br/>
            <input type="text" name="contacto" value="<?php echo $registro["contacto"];?>"/><br/>
        <label>Telefono contacto:</label><br/>
            <input type="text" name="tlf_contacto" value="<?php echo $registro["tlf_contacto"];?>"/><br/>
        <label>Correo:</label><br/>
            <input type="text" name="correo" value="<?php echo $registro["correo"];?>"/><br/>
        <label>Coordenadas GPS:</label><br/>
            <input type="text" name="coordenadasGPS" value="<?php echo $registro["coordenadasGPS"];?>"/><br/>
        <label>Observaciones:</label><br/>
            <input type="text" name="observaciones" value="<?php echo $registro["observaciones"];?>"/><br/>
        <label>Foto:</label><br/>
            <input type="text" name="link_foto" value="<?php echo $registro["link_foto"];?>"/><br/>
        <label>Puntuacion */10:</label><br/>
            <input type="text" name="puntuacion" value="<?php echo $registro["puntuacion"];?>"/><br/>    
        <label>Tipo de Sitio:</label><br/>
            <input type="text" name="tipo" readonly="readonly" value="<?php echo $registro["tipo"];?>"/><br/><br />            
    <!--segunda consulta-->
        <label>¿Transporte p&uacute;blico?</label>
            <input type="checkbox" name="trans_publico" value="1"<?php echo (isset($trans_publico))?'checked="checked"':(($registro['trans_publico'])?'checked="checked"':'');?>><br />
        <label>¿Hay agua potable?</label>
            <input type="checkbox" name="agua_potable" value="1"<?php echo (isset($agua_potable))?'checked="checked"':(($registro['agua_potable'])?'checked="checked"':'');?>><br />
        <label>¿Hay aseos p&uacute;blicos?</label>
            <input type="checkbox" name="aseos" value="1"<?php echo (isset($aseos))?'checked="checked"':(($registro['aseos'])?'checked="checked"':'');?>><br />
        <input type="hidden" name="id" value="<?php echo $id;?>"/><!--me mando el id oculto,será obligatorio para la consulta para actualizar el q sea en concreto no todos-->
        <input type="submit" name="boton" value="Editar"/><!--al darle al botón el id que me mando es el de POST de arriba-->
</form>

<?php  
}
?>
<br/>
<a href='index.php?p=excursiones'>Volver al listado</a>
Y una duda que me queda..poqué hay que poner el atributo value='1'..no se supone que el valor de ese atributo debería cogerlo de la base de datos?
  #5 (permalink)  
Antiguo 19/02/2014, 07:16
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Cita:
Iniciado por yakrum Ver Mensaje
Notice: Undefined index: trans_publico
Notice: Undefined index: agua_potable
Notice: Undefined index: aseos
Hola de nuevo.
Estos errores anteriores no corresponden con variables no definidas sino con índices no definidos. La pregunta es: ¿cómo importas estos valores desde la db? El array que te da errores es el $registro con los índices 'agua_potable', 'trans_publico' y 'aseos'. Aségurate que se guardan en el array $registro cuando haces la importación desde la db.

Cita:
Iniciado por yakrum Ver Mensaje
Y una duda que me queda..poqué hay que poner el atributo value='1'..no se supone que el valor de ese atributo debería cogerlo de la base de datos?
No. Ese valor es el que se asigna a la variable $_POST['agua_potable'] en el caso de que el checkbox esté seleccionado, y nada más. Si no está seleccionado, entonces $_POST['agua_potable'] devuelve NULL.
__________________
Yesterday was the only easy day. Deportes de aventura
  #6 (permalink)  
Antiguo 19/02/2014, 08:29
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

De nuevo, muchas gracias supercoco79, por aclararme mi duda sobre el atributo value='1'

Pensaba que el error que tenía era por no definir las variables que salían (vamos, que entendía mal el error)

Revisando el código con la ayuda que me has prestado he podido resolverlo ya que tenía asignado otro array que no guardaba esos indices.. lo explico "graficamente": (pongo el caso "aseos" pero he modificado también el codigo para 'trans_publico' y 'agua_potable'

He cambiado esto:
Código PHP:
Ver original
  1. <input type="checkbox" name="aseos" value="1"<?php echo (isset($aseos))?'checked="checked"':(($registro['aseos'])?'checked="checked"':'');?>><br />

Por esto:
Código PHP:
Ver original
  1. <input type="checkbox" name="aseos" value="1"<?php echo (isset($aseos))?'checked="checked"':(($registro2['aseos'])?'checked="checked"':'');?>><br />

Es decir..que los almaceno en el array "$registro2" y los estaba declarando en el array "$registro" creo que ahí estaba mi error.

Ahora sí me muestra los chekbox marcados/desmarcados si guardan valor '1' o '0' en la base de datos.

Pero sorprendentemente tengo 1 error que no me esperaba:

Error nuevo 1)
Si al editar el registro desmarco un chekbox para que la base de datos almacene un '0' en ese campo, me vuelve a dar el error
Código PHP:
NoticeUndefined indextrans_publico
Notice
Undefined indexagua_potable
Notice
Undefined indexaseos 
Dependiendo de qué chekboxes estén desmarcados...pero en la base de datos SÍ almacena el '0' correspondiente.

Qué estoy haciendo erroneamente?

Muchas gracias de nuevo, me estas ayudando a aprender de mis errores!!
  #7 (permalink)  
Antiguo 19/02/2014, 12:40
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Pego el codigo de los 3 archivos que uso:

Este 'detalle_excursiones' es una página que saca por pantalla, leyendo de la base de datos los valores de los campos almacenados para consultar la ficha de la excursion, la particularidad que tiene es que consulta a 2 tablas 'sitios' y 'excursiones'.
Este es su codigo:

Código PHP:
Ver original
  1. <?php
  2.     @include("pages/seguridad.php");
  3.     include("pages/conexion.php");
  4.     //Toma de variables con GET
  5.         $id=$_GET["id"];
  6.         $sql="SELECT * FROM sitios WHERE idSitios=$id";
  7.         $sql2="SELECT * FROM excursiones WHERE idSitios=$id";
  8.     //Consultamos a la DB y miramos cuantos resultados obtenemos
  9.         $consulta=mysql_query($sql,$conexion);
  10.         $consulta2=mysql_query($sql2,$conexion);
  11.         $contador=mysql_num_rows($consulta);
  12. ?>
  13. <h2>ESTAS EN GESTION DE EXCURSIONES</h2><br/>
  14. <?php
  15. include ("pages/menu_gestor.php");
  16. //Obtenemos los datos y los mostramos
  17.     if($contador>0){
  18.         $registro=mysql_fetch_array($consulta);
  19.             echo "Denominaci&oacute;n: ".$registro["denominacion"]."<br/>";
  20.             echo "Direcci&oacute;n: ".$registro["dir_calle"].", Nº: ".$registro["dir_num"].", Piso: ".$registro["dir_piso"].", Letra: ".$registro["dir_letra"]."<br/>";
  21.             echo "CP: ".$registro["dir_cp"]."   Localidad: ".$registro["localidad"]."  -  Provincia: ".$registro["provincia"]."<br/>";
  22.             echo "Contacto: ".$registro["contacto"]."<br/>";
  23.             echo "Tel&eacute;fono de contacto: ".$registro["tlf_contacto"]."<br/>";
  24.             echo "Coordenadas GPS: ".$registro["coordenadasGPS"]."<br/>";
  25.             echo "Puntuaci&oacute;n: ".$registro["puntuacion"]."<br/>";
  26.             echo "Observaciones: ".$registro["observaciones"]."<br/>";
  27.             echo "Foto: ".$registro["link_foto"]."<br/>";
  28.            
  29.         $registro2=mysql_fetch_array($consulta2);
  30.             echo "¿Se puede llegar con transporte p&uacute;blico?: "; echo($registro2["trans_publico"])?'SI.<img src="img/otros/accept.png" width="16" height="16" title="SI">':'NO.'; //Con estructura If abreviada
  31.             echo "<br />¿Hay agua potable?: "; echo($registro2["agua_potable"])?'SI.':'NO.';
  32.             echo "<br />¿Hay aseos p&uacute;blicos? "; echo($registro2["aseos"])?'SI.':'NO.';
  33.             echo "<br /><a href='index.php?p=editar_excursiones&id=".$registro["idSitios"]."' title='Editar'><img src='img/otros/editar.png' width='22' height='21'></a>";     
  34.     }else{
  35.         echo "<h2>La busqueda no ha dado resultados.</h2>";
  36.     }
  37.     echo "<a href='index.php?p=excursiones'>Volver al listado</a>";
  38.     echo "<a href='index.php?p=eliminar_excursiones&id=".$registro["idSitios"]."' title='Eliminar'><img src='pages/buscador/img/eliminar.png' width='22' height='21'></a>";
  39. ?>
  #8 (permalink)  
Antiguo 19/02/2014, 12:41
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Este 'insertar_excursiones' es el tipico formulario con varios campos, la particularidad que tiene es una parte del formulario va a la tabla 'sitios' y otra parte va a la tabla 'excursiones' (la que guarda los valores de los checkboxs); ambas tablas tiene un campo que se llama 'idSitio' que guarda el mismo valor para que se relacionen los datos correspondientes mediante ese "id". Este es su codigo:

Código PHP:
Ver original
  1. <?php include("pages/seguridad.php"); include("pages/conexion.php");?> <!--configuramos el acceso y la conexion llamando a los archivos-->
  2. <h2>INSERTAR EXCURSION</h2>
  3. <?php include("pages/menu_gestor.php");?><!--insertamos el menu del gestor-->
  4. <div id="formulario">
  5.     <?php $error = ''; /*al cargar la pagina por primera vez, el mensaje de error lo ponemos sin texto*/
  6.         if(isset($_POST["boton_enviar_formulario"])){
  7.                 $denominacion= isset($_POST['denominacion']) ? $_POST['denominacion']: '';
  8.                 $dir_calle= isset($_POST['dir_calle']) ? $_POST['dir_calle']: '';
  9.                 $dir_num= isset($_POST['dir_num']) ? $_POST['dir_num']: '';
  10.                 $dir_piso= isset($_POST['dir_piso']) ? $_POST['dir_piso']: '';
  11.                 $dir_letra= isset($_POST['dir_letra']) ? $_POST['dir_letra']: '';
  12.                 $dir_cp= isset($_POST['dir_cp']) ? $_POST['dir_cp']: '';
  13.                 $localidad= isset($_POST['localidad']) ? $_POST['localidad']: '';
  14.                 $provincia= isset($_POST['provincia']) ? $_POST['provincia']: '';
  15.                 $contacto= isset($_POST['contacto']) ? $_POST['contacto']: '';
  16.                 $tlf_contacto= isset($_POST['tlf_contacto']) ? $_POST['tlf_contacto']: '';
  17.                 $correo= isset($_POST['correo']) ? $_POST['correo']: '';
  18.                 $coordenadasGPS= isset($_POST['coordenadasGPS']) ? $_POST['coordenadasGPS']: '';
  19.                 $observaciones= isset($_POST['observaciones']) ? $_POST['observaciones']: '';
  20.                 $link_foto= isset($_POST['link_foto']) ? $_POST['link_foto']: '';
  21.                 $puntuacion= isset($_POST['puntuacion']) ? $_POST['puntuacion']: '';
  22.                 $tipo= isset($_POST['tipo']) ? $_POST['tipo']: '';
  23.                 $trans_publico= isset($_POST['trans_publico']) ? $_POST['trans_publico']: '';
  24.                 $agua_potable= isset($_POST['agua_potable']) ? $_POST['agua_potable']: '';
  25.                 $aseos= isset($_POST['aseos']) ? $_POST['aseos']: '';      
  26.                 if(trim($denominacion) == ''){
  27.                     $error = '<div class="errormsg">Escribe una DENOMINACI&Oacute;N para el sitio, por favor.</div>';
  28.                 }
  29.                 else if(trim($dir_calle) == ''){
  30.                     $error = '<div class="errormsg">Escribe una CALLE por favor.</div>';
  31.                 }
  32.                 else if(trim($dir_num) == ''){
  33.                     $error = '<div class="errormsg">Escribe tu TEL&Eacute;nFONO DE CONTACTO por favor.</div>';
  34.                 }
  35.                 else if(trim($localidad) == ''){
  36.                     $error = '<div class="errormsg">Escribe una LOCALIDAD por favor.</div>';
  37.                 }
  38.                 else if(trim($provincia) == ''){
  39.                     $error = '<div class="errormsg">Escribe la PROVINCIA por favor.</div>';
  40.                 }
  41.                 else if(!validarTelefono($tlf_contacto)){
  42.                     $error = '<div class="errormsg">El tel&eacute;fono proporcionado NO ES VALIDO, comprueba el n&uacute;mero por favor.</div>';
  43.                 }
  44.                 else if(!validarCorreo($correo)){
  45.                     $error = '<div class="errormsg">La direcci&oacute;n de EMAIL NO ES VALIDA, escribe la direcci&oacute;n correctamente.</div>';
  46.                 }
  47.                 if($error == ''){
  48.                         if(get_magic_quotes_gpc()){
  49.                             $mensaje = stripslashes($mensaje);
  50.                         }
  51.                         $sql="INSERT INTO sitios (denominacion, dir_calle, dir_num, dir_piso, dir_letra, dir_cp, localidad, provincia, contacto, tlf_contacto, correo, coordenadasGPS, observaciones, link_foto, puntuacion, tipo ) VALUES ('$denominacion', '$dir_calle', '$dir_num', '$dir_piso', '$dir_letra', '$dir_cp', '$localidad', '$provincia', '$contacto', '$tlf_contacto', '$correo', '$coordenadasGPS', '$observaciones', '$link_foto', '$puntuacion', '$tipo')"; //esta es la consulta
  52.                         $res=mysql_query($sql,$conexion); //ejecuta la consulta, pero si me devuelve false hacemos la siguiente condición
  53.                     if($res){
  54.                         echo "Sitio insertado correctamente";
  55.                         $sql2="SELECT * FROM sitios WHERE denominacion='$denominacion'";      
  56.                         $consulta2=mysql_query($sql2,$conexion2);    
  57.                         $registro2=mysql_fetch_array($consulta2);
  58.                         $idSitios=$registro2["idSitios"];
  59.                         //segunda insercion
  60.                         $sql="INSERT INTO excursiones (idSitios, trans_publico, agua_potable, aseos) VALUES ('$idSitios','$trans_publico','$agua_potable','$aseos')"; //esta es la consulta
  61.                         $res=mysql_query($sql,$conexion);
  62.                         }else{
  63.                             echo "No se ha insertado correctamente.";}
  64.                 }
  65.             }  
  66.             if(!isset($_POST['boton_enviar_formulario']) || $error != ''){
  67.             ?>
  68.             <!--Mensaje de error por si  falta de rellenar un campo obligatorio al pulsar el boton_enviar_formulario-->
  69.             <?=$error;?>
  70.     <form method="post" action="index.php?p=insertar_excursiones">
  71.         <label>Denominaci&oacute;n:</label>
  72.             <input type="text" name="denominacion" value="<?php echo isset($_POST['denominacion']) ? $_POST['denominacion']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  73.         <label>Calle:</label>
  74.             <input type="text" name="dir_calle" value="<?php echo isset($_POST['dir_calle']) ? $_POST['dir_calle']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  75.         <label>N&uacute;mero:</label>
  76.             <input type="text" name="dir_num" value="<?php echo isset($_POST['dir_num']) ? $_POST['dir_num']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  77.         <label>Piso:</label>
  78.             <input type="text" name="dir_piso" value="<?php echo isset($_POST['dir_piso']) ? $_POST['dir_piso']: '';?>"/><br/>
  79.         <label>Letra:</label>
  80.             <input type="text" name="dir_letra" value="<?php echo isset($_POST['dir_letra']) ? $_POST['dir_letra']: '';?>"/><br/>
  81.         <label>C.P:</label>
  82.             <input type="text" name="dir_cp" value="<?php echo isset($_POST['dir_cp']) ? $_POST['dir_cp']: '';?>"/><br/>
  83.         <label>Localidad:</label>
  84.             <input type="text" name="localidad" value="<?php echo isset($_POST['localidad']) ? $_POST['localidad']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  85.         <label>Provincia:</label>
  86.             <input type="text" name="provincia" value="<?php echo isset($_POST['provincia']) ? $_POST['provincia']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  87.         <label>Contacto:</label>
  88.             <input type="text" name="contacto" value="<?php echo isset($_POST['contacto']) ? $_POST['contacto']: '';?>"/><br/>
  89.         <label>Tel&eacute;fono Contacto:</label>
  90.             <input type="text" name="tlf_contacto" value="<?php echo isset($_POST['tlf_contacto']) ? $_POST['tlf_contacto']: '';?>"/><span class="obligatorio_insertar">*</span><br/>
  91.         <label>Correo:</label>
  92.             <input type="text" name="correo" value="<?php echo isset($_POST['correo']) ? $_POST['correo']: '';?>"/><br/>
  93.         <label>Coordenadas GPS:</label>
  94.             <input type="text" name="coordenadasGPS" value="<?php echo isset($_POST['coordenadasGPS']) ? $_POST['coordenadasGPS']: '';?>"/>
  95.             <!--Botones de gps-->
  96.                 <a href="https://maps.google.es/" target="_blank" class="coordenadas_google" title="Consultar coordenadas en Google">Google</a>
  97.                 <a href="http://sigpac.mapa.es/fega/visor/" target="_blank" class="coordenadas_sigpac" title="Consultar coordenadas en SigPac">SigPac</a>
  98.                 <a href="http://www.montanasegura.com/" target="_blank" class="coordenadas_mide" title="Consultar coordenadas en MIDE">M.I.D.E.</a><br/>
  99.         <label>Observaciones:</label>                          
  100.             <input type="textarea" cols="40" rows="3" name="observaciones" value="<?php echo isset($_POST['observaciones']) ? $_POST['observaciones']: '';?>"> </textarea><br/>
  101.         <label>Foto:</label>
  102.             <input type="text" name="link_foto" value="<?php echo isset($_POST['link_foto']) ? $_POST['link_foto']: '';?>"/><br/>
  103.         <label>Puntuaci&oacute;n:</label>
  104.             <input type="text" name="puntuacion" value="<?php echo isset($_POST['puntuacion']) ? $_POST['puntuacion']: '';?>"/><br/>
  105.         <label>Tipo de Sitio:</label>
  106.             <input type="text" name="tipo" value=""/><br />
  107.         <label>¿Se puede llegar con transporte p&uacute;blico?</label> 
  108.             <input type="checkbox" name="trans_publico" value="1"><br />
  109.         <label>¿Hay agua potable?</label>
  110.             <input type="checkbox" name="agua_potable" value="1"><br />
  111.         <label>¿Hay aseos p&uacute;blicos?</label>
  112.             <input type="checkbox" name="aseos" value="1"><br /><br />             
  113.         <br /><br />
  114.         Los campos marcados con '<span class="obligatorio_insertar">*</span>' son obligatorios para poder almacenar los datos.
  115.         <br /><br />
  116.         <input type="submit" name="boton_enviar_formulario" value="Insertar Excursi&oacute;n" title="Insertar"/><!--con lo q llegue en  boton_enviar_formulario lo recojo arriba-->
  117.     </form>
  118.         <?php
  119.             }
  120.             //Verificacion de direccion correcta de e-mail
  121.             function validarCorreo($correo){
  122.                 return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|nombre|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$correo));
  123.             }
  124.             //Verificacion de numero de telefono valido
  125.             function validarTelefono($tlf_contacto){
  126.                 return (preg_match('/^[0-9]{9,9}$/', $tlf_contacto));
  127.             }
  128.         ?>
  129. </div>
  130. <br />
  131. <a href='index.php?p=excursiones'>Volver al listado</a>
  #9 (permalink)  
Antiguo 19/02/2014, 12:41
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Y por ultimo tengo el 'editar_excursiones', que como expliqué al abrir este topic, contiene un formulario que se rellena con los valores guardados en la base de datos y permite modificarlos. La particularidad que tiene es que recibe y escribe los datos en las 2 tablas 'sitios' y 'excursiones'.
Este es su codigo:
Código PHP:
Ver original
  1. <?php
  2. include("pages/seguridad.php");
  3. include("pages/conexion.php");
  4. ?>
  5. <h2>EDITAR EXCURSION</h2>  
  6. <?php include("pages/menu_gestor.php");
  7. //Se muestran los campos guardados en la db y si no se tocan se volverán a mandar los mismos
  8. if(isset($_POST["boton"])){ $id=$_POST["id"];
  9.                             $denominacion=$_POST["denominacion"];
  10.                             $dir_calle=$_POST["dir_calle"];
  11.                             $dir_num=$_POST["dir_num"];
  12.                             $dir_piso=$_POST["dir_piso"];
  13.                             $dir_letra=$_POST["dir_letra"];
  14.                             $dir_cp=$_POST["dir_cp"];
  15.                             $localidad=$_POST["localidad"];
  16.                             $provincia=$_POST["provincia"];
  17.                             $contacto=$_POST["contacto"];
  18.                             $tlf_contacto=$_POST["tlf_contacto"];
  19.                             $correo=$_POST["correo"];
  20.                             $coordenadasGPS=$_POST["coordenadasGPS"];
  21.                             $observaciones=$_POST["observaciones"];
  22.                             $link_foto=$_POST["link_foto"];
  23.                             $puntuacion=$_POST["puntuacion"];
  24.                             $tipo=$_POST["tipo"];
  25.                             $trans_publico=$_POST["trans_publico"];
  26.                             $agua_potable=$_POST["agua_potable"];
  27.                             $aseos=$_POST["aseos"];                        
  28.    
  29. $sql="UPDATE sitios SET denominacion='$denominacion', dir_calle='$dir_calle', dir_num='$dir_num', dir_piso='$dir_piso', dir_letra='$dir_letra', dir_cp='$dir_cp', localidad='$localidad', provincia='$provincia', contacto='$contacto', tlf_contacto='$tlf_contacto', correo='$correo', coordenadasGPS='$coordenadasGPS', observaciones='$observaciones', link_foto='$link_foto', puntuacion='$puntuacion', tipo='$tipo' WHERE idSitios=$id";
  30. $res=mysql_query($sql,$conexion); //ahora actualizaremos la consulta:
  31.  
  32. $sql2="UPDATE excursiones SET trans_publico='$trans_publico', agua_potable='$agua_potable', aseos='$aseos' WHERE idSitios=$id";
  33. $res2=mysql_query($sql2,$conexion); //ahora actualizaremos la consulta:
  34.  
  35.     if(($res)&&($res2)){echo "Datos actualizados correctamente.<br/><a href='index.php?p=detalle_excursiones&id=".$_POST['id']."'>Seguir viendo la ficha</a>";
  36.         }else{echo "Error en la actualizacion, revise los datos de nuevo.";}
  37.         //a partir de aquí es cuando todavía no se le ha dado al botón, me recojo el id del hidden de abajo,q también es el del UPDATE...WHRE idcontactos..
  38.         }else{$id=$_GET["id"];
  39.     $sql="SELECT * FROM sitios WHERE idSitios=$id";      
  40.     $sql2="SELECT * FROM excursiones WHERE idSitios=$id";
  41.       $consulta=mysql_query($sql,$conexion);
  42.         $registro=mysql_fetch_array($consulta);
  43.       $consulta2=mysql_query($sql2,$conexion);   
  44.         $registro2=mysql_fetch_array($consulta2);
  45. ?>
  46.     <form method="post" action="index.php?p=editar_excursiones">
  47.         <label>Nombre:</label><br/>
  48.             <input type="text" name="denominacion" value="<?php echo $registro["denominacion"];?>"/><br/>
  49.         <label>Calle:</label><br/>
  50.             <input type="text" name="dir_calle" value="<?php echo $registro["dir_calle"];?>"/><br/>
  51.         <label>Numero:</label><br/>
  52.             <input type="text" name="dir_num" value="<?php echo $registro["dir_num"];?>"/><br/>
  53.         <label>Piso:</label><br/>
  54.             <input type="text" name="dir_piso" value="<?php echo $registro["dir_piso"];?>"/><br/>
  55.         <label>Letra:</label><br/>
  56.             <input type="text" name="dir_letra" value="<?php echo $registro["dir_letra"];?>"/><br/>
  57.         <label>C.P:</label><br/>
  58.             <input type="text" name="dir_cp" value="<?php echo $registro["dir_cp"];?>"/><br/>
  59.         <label>Localidad</label><br/>
  60.             <input type="text" name="localidad" value="<?php echo $registro["localidad"];?>"/><br/>
  61.         <label>Provincia</label><br/>
  62.             <input type="text" name="provincia" value="<?php echo $registro["provincia"];?>"/><br/>
  63.         <label>Contacto:</label><br/>
  64.             <input type="text" name="contacto" value="<?php echo $registro["contacto"];?>"/><br/>
  65.         <label>Telefono contacto:</label><br/>
  66.             <input type="text" name="tlf_contacto" value="<?php echo $registro["tlf_contacto"];?>"/><br/>
  67.         <label>Correo:</label><br/>
  68.             <input type="text" name="correo" value="<?php echo $registro["correo"];?>"/><br/>
  69.         <label>Coordenadas GPS:</label><br/>
  70.             <input type="text" name="coordenadasGPS" value="<?php echo $registro["coordenadasGPS"];?>"/><br/>
  71.         <label>Observaciones:</label><br/>
  72.             <input type="textarea" cols="40" rows="3" name="observaciones" value="<?php echo $registro["observaciones"];?>"/><br/>
  73.         <label>Foto:</label><br/>
  74.             <input type="text" name="link_foto" value="<?php echo $registro["link_foto"];?>"/><br/>
  75.         <label>Puntuacion */10:</label><br/>
  76.             <input type="text" name="puntuacion" value="<?php echo $registro["puntuacion"];?>"/><br/>  
  77.         <label>Tipo de Sitio:</label><br/>
  78.             <input type="text" name="tipo" readonly="readonly" value="<?php echo $registro["tipo"];?>"/><br/><br />        
  79.     <!--segunda consulta-->
  80.         <label>¿Se puede llegar con transporte p&uacute;blico?</label><!--hay que cambiar el array $registro por $registro2 ya que ese array es el que guarda la segunda consulta que contiene estos valores -->
  81.             <input type="checkbox" name="trans_publico" value="1"<?php echo (isset($trans_publico))?'checked="checked"':(($registro2['trans_publico'])?'checked="checked"':'');?>><br />
  82.         <label>¿Hay agua potable?</label>
  83.             <input type="checkbox" name="agua_potable" value="1"<?php echo (isset($agua_potable))?'checked="checked"':(($registro2['agua_potable'])?'checked="checked"':'');?>><br />
  84.         <label>¿Hay aseos p&uacute;blicos?</label>
  85.             <input type="checkbox" name="aseos" value="1"<?php echo (isset($aseos))?'checked="checked"':(($registro2['aseos'])?'checked="checked"':'');?>><br /><br />
  86.         <input type="hidden" name="id" value="<?php echo $id;?>"/><!--me mando el id oculto,será obligatorio para la consulta para actualizar el q sea en concreto no todos-->
  87.         <input type="submit" name="boton" value="Editar"/><!--al darle al botón el id que me mando es el de POST de arriba-->
  88.     </form>
  89. <?php  
  90.     }
  91. ?>
  92. <br/>
  93. <a href='index.php?p=excursiones'>Volver al listado</a>

Pongo todo esto para ver si alguien me orienta/ayuda a resolver el error que tengo ahora mismo (ya solucioné que me salieran marcados los checkboxes correctamente), el error que tengo es este:

Si al editar un registro desmarco un chekbox para que la base de datos almacene un '0' en ese campo, me vuelve a dar el error:
Código PHP:
Ver original
  1. Notice: Undefined index: trans_publico
  2. Notice: Undefined index: agua_potable
  3. Notice: Undefined index: aseos
Dependiendo de qué chekboxes estén desmarcados...pero en la base de datos SÍ almacena el '0' correspondiente.

Qué estoy haciendo erroneamente?
  #10 (permalink)  
Antiguo 20/02/2014, 02:56
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Cita:
Iniciado por yakrum Ver Mensaje
De nuevo, muchas gracias supercoco79, por aclararme mi duda sobre el atributo value='1'


Pero sorprendentemente tengo 1 error que no me esperaba:

Error nuevo 1)
Si al editar el registro desmarco un chekbox para que la base de datos almacene un '0' en ese campo, me vuelve a dar el error
Código PHP:
NoticeUndefined indextrans_publico
Notice
Undefined indexagua_potable
Notice
Undefined indexaseos 
Dependiendo de qué chekboxes estén desmarcados...pero en la base de datos SÍ almacena el '0' correspondiente.

Qué estoy haciendo erroneamente?

Muchas gracias de nuevo, me estas ayudando a aprender de mis errores!!
Como te expliqué, si un checkbox no está seleccionado, por ejemplo, 'agua_potable', entonces cuando haces submit en el formulario, el índice 'agua_potable' dentro del array $_POST deja de existir y devuelve un valor NULL. Ahí está el NOTICE. No es un error, sino un WARNING que te da PHP en modo desarrollador. Si quieres que no aparezca, volvemos a la carga:

Código PHP:
$agua_potable = (array_key_exists('agua_potable'$_POST))?$_POST['agua_potable']:NULL
Este código evitará que te salga el WARNING, y no cambiará el funcionamiento.

Otros consejos que creo que tienes que tener en cuenta:

1. Tu formulario no está validado. Todos los campos deberían pasar una validación antes de ser enviado para evitar que se guarden datos inesperados.
2. Antes de guardar nada en tu db proveniente de un formulario, debes limpiar tus inputs para evitar código maltintencionado. Puedes usar la función nativa de PHP htmlspecialchars() http://us1.php.net/manual/es/functio...ecialchars.php

Mi recomendación es que adquieras un buen libro de PHP y MYSQL, y leas la documentación disponible en sus web oficiales.

Un saludo.
__________________
Yesterday was the only easy day. Deportes de aventura
  #11 (permalink)  
Antiguo 20/02/2014, 06:16
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

supercoco79 muchisimas gracias,

En este caso sí entendía que era un aviso (warning) y también sabía porqué venía (entendía que los checkbox no mandaban valor) pero no sabía como hacer que fueran "null" en ese caso.. MUCHAS GRACIAS por ayudarme a entender.

Sobre tus consejos, estoy con "PHP & MySQL for dummies" (Editorial ST) jeje y también con "PHP & MySQL" (Editorial ANAYA); y poco a poco me van saliendo las cosas.

En lo de la validación tienes toda la razón, ayer me di cuenta que al hacer una 'ficha nueva' en mi programa SÍ valido la información (que sea correcta y no contenga cosas que no quiero) pero cuando edito esa información, no lo valido...me pondré ahora manos a la obra.

Te agradezco tu paciencia y doy por cerrado este tema.
  #12 (permalink)  
Antiguo 20/02/2014, 06:27
 
Fecha de Ingreso: febrero-2014
Ubicación: España
Mensajes: 19
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Por si alguien consulta este topic, voy a poner como quedó el codigo del archivo 'editar' que es el que contiene los 'checkboxes con atributo dinamico checked' y que no da error ni warnings (pero no tiene validacion de los campos)

Código PHP:
Ver original
  1. <?php
  2. include("pages/seguridad.php");
  3. include("pages/conexion.php");
  4. ?>
  5. <h2>EDITAR EXCURSION</h2>  
  6. <?php include("pages/menu_gestor.php");
  7. //Se muestran los campos guardados en la db y si no se tocan se volverán a mandar los mismos
  8. if(isset($_POST['boton_editar'])){ $id=$_POST['id'];
  9.                             $denominacion=$_POST['denominacion'];
  10.                             $dir_calle=$_POST['dir_calle'];
  11.                             $dir_num=$_POST['dir_num'];
  12.                             $dir_piso=$_POST['dir_piso'];
  13.                             $dir_letra=$_POST['dir_letra'];
  14.                             $dir_cp=$_POST['dir_cp'];
  15.                             $localidad=$_POST['localidad'];
  16.                             $provincia=$_POST['provincia'];
  17.                             $contacto=$_POST['contacto'];
  18.                             $tlf_contacto=$_POST['tlf_contacto'];
  19.                             $correo=$_POST['correo'];
  20.                             $coordenadasGPS=$_POST['coordenadasGPS'];
  21.                             $observaciones=$_POST['observaciones'];
  22.                             $link_foto=$_POST['link_foto'];
  23.                             $puntuacion=$_POST['puntuacion'];
  24.                             $tipo=$_POST['tipo'];
  25.                             $trans_publico = (array_key_exists('trans_publico', $_POST))?$_POST['trans_publico']:NULL;     //si el checkbox se envía sin marcar, toma valor null
  26.                             $agua_potable = (array_key_exists('agua_potable', $_POST))?$_POST['agua_potable']:NULL;  //si el checkbox se envía sin marcar, toma valor null
  27.                             $aseos = (array_key_exists('aseos', $_POST))?$_POST['aseos']:NULL;                    //si el checkbox se envía sin marcar, toma valor null
  28.  
  29. $sql="UPDATE sitios SET denominacion='$denominacion', dir_calle='$dir_calle', dir_num='$dir_num', dir_piso='$dir_piso', dir_letra='$dir_letra', dir_cp='$dir_cp', localidad='$localidad', provincia='$provincia', contacto='$contacto', tlf_contacto='$tlf_contacto', correo='$correo', coordenadasGPS='$coordenadasGPS', observaciones='$observaciones', link_foto='$link_foto', puntuacion='$puntuacion', tipo='$tipo' WHERE idSitios=$id";
  30. $res=mysql_query($sql,$conexion); //ahora actualizaremos la consulta:
  31.  
  32. $sql2="UPDATE excursiones SET trans_publico='$trans_publico', agua_potable='$agua_potable', aseos='$aseos' WHERE idSitios=$id";
  33. $res2=mysql_query($sql2,$conexion); //ahora actualizaremos la consulta:
  34.  
  35.     if(($res)&&($res2)){echo "Datos actualizados correctamente.<br/><a href='index.php?p=detalle_excursiones&id=".$_POST['id']."'>Seguir viendo la ficha</a>";
  36.         }else{echo "Error en la actualizacion, revise los datos de nuevo.";}
  37.         //a partir de aquí es cuando todavía no se le ha dado al botón, me recojo el id del hidden de abajo,q también es el del UPDATE...WHRE idcontactos..
  38.         }else{$id=$_GET["id"];
  39.     $sql="SELECT * FROM sitios WHERE idSitios=$id";      
  40.     $sql2="SELECT * FROM excursiones WHERE idSitios=$id";
  41.       $consulta=mysql_query($sql,$conexion);
  42.         $registro=mysql_fetch_array($consulta);
  43.       $consulta2=mysql_query($sql2,$conexion);   
  44.         $registro2=mysql_fetch_array($consulta2);
  45. ?>
  46.     <form method="post" action="index.php?p=editar_excursiones">
  47.         <label>Nombre:</label><br/>
  48.             <input type="text" name="denominacion" value="<?php echo $registro["denominacion"];?>"/><br/>
  49.         <label>Calle:</label><br/>
  50.             <input type="text" name="dir_calle" value="<?php echo $registro["dir_calle"];?>"/><br/>
  51.         <label>Numero:</label><br/>
  52.             <input type="text" name="dir_num" value="<?php echo $registro["dir_num"];?>"/><br/>
  53.         <label>Piso:</label><br/>
  54.             <input type="text" name="dir_piso" value="<?php echo $registro["dir_piso"];?>"/><br/>
  55.         <label>Letra:</label><br/>
  56.             <input type="text" name="dir_letra" value="<?php echo $registro["dir_letra"];?>"/><br/>
  57.         <label>C.P:</label><br/>
  58.             <input type="text" name="dir_cp" value="<?php echo $registro["dir_cp"];?>"/><br/>
  59.         <label>Localidad</label><br/>
  60.             <input type="text" name="localidad" value="<?php echo $registro["localidad"];?>"/><br/>
  61.         <label>Provincia</label><br/>
  62.             <input type="text" name="provincia" value="<?php echo $registro["provincia"];?>"/><br/>
  63.         <label>Contacto:</label><br/>
  64.             <input type="text" name="contacto" value="<?php echo $registro["contacto"];?>"/><br/>
  65.         <label>Telefono contacto:</label><br/>
  66.             <input type="text" name="tlf_contacto" value="<?php echo $registro["tlf_contacto"];?>"/><br/>
  67.         <label>Correo:</label><br/>
  68.             <input type="text" name="correo" value="<?php echo $registro["correo"];?>"/><br/>
  69.         <label>Coordenadas GPS:</label><br/>
  70.             <input type="text" name="coordenadasGPS" value="<?php echo $registro["coordenadasGPS"];?>"/><br/>
  71.         <label>Observaciones:</label><br/>
  72.             <input type="textarea" cols="40" rows="3" name="observaciones" value="<?php echo $registro["observaciones"];?>"/><br/>
  73.         <label>Foto:</label><br/>
  74.             <input type="text" name="link_foto" value="<?php echo $registro["link_foto"];?>"/><br/>
  75.         <label>Puntuacion */10:</label><br/>
  76.             <input type="text" name="puntuacion" value="<?php echo $registro["puntuacion"];?>"/><br/>  
  77.         <label>Tipo de Sitio:</label><br/>
  78.             <input type="text" name="tipo" readonly="readonly" value="<?php echo $registro["tipo"];?>"/><br/><br />        
  79.     <!--segunda consulta-->
  80.         <label>¿Se puede llegar con transporte p&uacute;blico?</label><!--hay que cambiar el array $registro por $registro2 ya que ese array es el que guarda la segunda consulta que contiene estos valores -->
  81.             <input type="checkbox" name="trans_publico" value="1"<?php echo (isset($trans_publico))?'checked="checked"':(($registro2['trans_publico'])?'checked="checked"':'');?>><br />
  82.         <label>¿Hay agua potable?</label>
  83.             <input type="checkbox" name="agua_potable" value="1"<?php echo (isset($agua_potable))?'checked="checked"':(($registro2['agua_potable'])?'checked="checked"':'');?>><br />
  84.         <label>¿Hay aseos p&uacute;blicos?</label>
  85.             <input type="checkbox" name="aseos" value="1"<?php echo (isset($aseos))?'checked="checked"':(($registro2['aseos'])?'checked="checked"':'');?>><br /><br />
  86.         <input type="hidden" name="id" value="<?php echo $id;?>"/><!--me mando el id oculto,será obligatorio para la consulta para actualizar el q sea en concreto no todos-->
  87.         <input type="submit" name="boton_editar" value="Editar"/><!--al darle al botón el id que me mando es el de POST de arriba-->
  88.     </form>
  89. <?php  
  90.     }
  91. ?>
  92. <br/>
  93. <a href='index.php?p=excursiones'>Volver al listado</a>
  #13 (permalink)  
Antiguo 20/02/2014, 08:24
Avatar de supercoco79  
Fecha de Ingreso: octubre-2012
Ubicación: Islas Canarias
Mensajes: 115
Antigüedad: 11 años, 7 meses
Puntos: 35
Respuesta: Añadir atributo checked a un checkbox dinamicamente

Cita:
Iniciado por yakrum Ver Mensaje
supercoco79 muchisimas gracias,

En este caso sí entendía que era un aviso (warning) y también sabía porqué venía (entendía que los checkbox no mandaban valor) pero no sabía como hacer que fueran "null" en ese caso.. MUCHAS GRACIAS por ayudarme a entender.

Sobre tus consejos, estoy con "PHP & MySQL for dummies" (Editorial ST) jeje y también con "PHP & MySQL" (Editorial ANAYA); y poco a poco me van saliendo las cosas.

En lo de la validación tienes toda la razón, ayer me di cuenta que al hacer una 'ficha nueva' en mi programa SÍ valido la información (que sea correcta y no contenga cosas que no quiero) pero cuando edito esa información, no lo valido...me pondré ahora manos a la obra.

Te agradezco tu paciencia y doy por cerrado este tema.
De nada. Mucha suerte con el proyecto. Y no olvides las medidas de seguridad a tener en cuenta!!! Los formularios son la mejor entrada que tienen los hackers para hacer de las suyas.

Saludos.
__________________
Yesterday was the only easy day. Deportes de aventura

Etiquetas: php+bd+mysql
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:08.