Foro de Xeoweb Foro de Posicionamiento y Buscadores
Aprendiendo a Promocionar Páginas Web.
Xeoweb :: Sindicar
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   LoginLogin 
Congreso SEO para SEOs
Lista completa de checkbox y marcar los seleccionados

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Afelix
Me gusta MSN!


Registrado: 03 Feb 2006
Mensajes: 445
Ubicación: Toledo

MensajePublicado: Mie Oct 13, 2010 5:40 pm    Asunto: Lista completa de checkbox y marcar los seleccionados Responder citando

Buenas…
Necesito resolver este problemilla: Lista completa de checkbox desde mysql y marcar los seleccionados
Dispongo de 3 tablas MySQL:
Lista_empresas, lista_servicios, relación_empresas_servicios

Cada empresa puede tener disponible varios tipos de servicios, para tal fin tenemos la tabla que mantiene la relación de empresas con los tipos de servicios.

Partiendo de que estamos en un formulario de una determinada empresa para modificar datos. A dicha empresa le mostramos todos servicios disponibles de la tabla “lista_servicios” en una lista de <input type="checkbox"> y queremos que salgan marcados los servicios que tiene activos.

Esto es la estructura de las 3 tablas:
Lista_empresas: id_empresa |nombre_empresa
Lista_servicios: id_servicio | nombre_servicio
Relación_empresas_servicios: id_r | id_empresa | id_servicio


Este es el código PHP que tengo hasta el momento sin lograr el resultado final:

Código:
<?php
 include('conexio.php');

 echo "Empresa por URL: ".$_GET[id_empresa]."<hr>";
 
 
$sql =  " SELECT * FROM tipo_servicios ORDER BY nombre_servicio "  ;
$res = mysql_query($sql);
while($r = mysql_fetch_array($res)){


   $sql2 = " SELECT * FROM relacion_empresas_servicios WHERE id_empresa = '$_GET[id_empresa]' ";
   $res2=mysql_query($sql2);
   while($r2=mysql_fetch_array($res2)){

        if( $r2[id_empresa] == $_GET[id_empresa]) { $checked = "checked";} else { $checked = ""; }

        } // de while r2
       

 $num=$num+1;
  print("
<input type=\"checkbox\" name=\"actividades[',$num,']\" value=\"$r[id_servicio]\" class=\"corto\" $checked /> <label for=\"$r[nombre_servicio]\">$r[nombre_servicio]</label> <br />
       ");
if($num%2==0) { print("<br />"); }


               

} // de while $r
?>


He probado distintas consultas MysQL trabajando con uniones sin obtener el resultado deseado, en unos casos me salen los tipos de servicios repetidos, en otros solo sale el último servicio marcado, en otros me salen todos, en otros ninguno… estoy dando palos de ciego sin lograr resolver el problema.
_________________
Directorio de enlaces BudiWeb
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
JustMe
Vivo en Xeoweb


Registrado: 27 Sep 2005
Mensajes: 3070
Ubicación: Por ahí....

MensajePublicado: Mie Oct 13, 2010 6:11 pm    Asunto: Responder citando

No deberían NUNCA usarse "loops" de consultas a una base de datos, es ineficiente y con la mínima carga puede tumbar la base de datos, intenta algo como:
Código:
<?php
$id_empresa = intval($_GET[id_empresa]); ///Siempre, absolutamente siempre se debe "limpiar" lo que llegue del navegador
?>

La consulta sería así:

Código:
SELECT
  relacion_empresas_servicios.id_r,
  relacion_empresas_servicios.id_empresa,
  relacion_empresas_servicios.id_servicio,
  lista_servicios.nombre_servicio
FROM
  lista_servicios
  INNER JOIN relacion_empresas_servicios ON (lista_servicios.id_servicio = relacion_empresas_servicios.id_servicio)
  INNER JOIN lista_empresas ON (relacion_empresas_servicios.id_empresa = lista_empresas.id_empresa)
WHERE
  relacion_empresas_servicios.id_empresa = $id_empresa

_________________
PHP Data uri fier
Blog Gratis
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Afelix
Me gusta MSN!


Registrado: 03 Feb 2006
Mensajes: 445
Ubicación: Toledo

MensajePublicado: Mie Oct 13, 2010 6:27 pm    Asunto: Responder citando

Por qué no me sorprende que fueras tú el que respondiera ????

Gracias amigo Justme por tus buenos consejos, voy a intentarlo ...
_________________
Directorio de enlaces BudiWeb
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> Lenguajes de Programación Web Todas las horas son GMT
Respuesta Rápida y Acciones
 

 

Página 1 de 1


Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro

 


Logo diseñado por iLevante
Powered by phpBB © 2001, 2009 phpBB Group