Foros del Web » Programando para Internet » PHP »

Problema con PHP y MySQL

Estas en el tema de Problema con PHP y MySQL en el foro de PHP en Foros del Web. Buenas Tardes, Necesito listar en dos columnas unos checkbox con sus nombres, esto sería las categorias de un sistema para poder seleccionar sus categorias y ...
  #1 (permalink)  
Antiguo 20/06/2013, 12:57
 
Fecha de Ingreso: junio-2012
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Problema con PHP y MySQL

Buenas Tardes,

Necesito listar en dos columnas unos checkbox con sus nombres, esto sería las categorias de un sistema para poder seleccionar sus categorias y gardarlas en la base de datos.

Hasta aquí perfecto.

El problema es que cuando actualizo un articulo que se encuentra en la categoría con id 29, también se selecciona la categoría 9. (Pero no la 19).

Utilizo la función de PHP strstr(), dejo aquí el código para ver si me podéis ayudar.

Código:
 <?php $result = mysql_query("SELECT * FROM familias WHERE padre != '0'");  
                $i=0; 
        if ($row = mysql_fetch_array($result)){  
        echo "<table border = '0'> \n";  
               echo "<tr>"; 
               do { 
			  if (strstr($fami,$row['id'])) {
			   $marcar = "checked=\"checked\"";
			  }else{
			 $marcar = "";
			  }
                     echo "<td><p><input name='familia[]' ".$marcar." id='familia[]' type='checkbox' value='".$row['id']."' />".$row['nombre']."</p></td> \n";  
                     $i++; 
                 if($i%2==0){ 
                          echo "</tr><tr>"; 
                  } 
               } while ($row = mysql_fetch_array($result));  
           echo "</tr></table> \n";  
         } else {  
        echo "<center>No hay categorias que mostrar</center>";  
        }
        ?>
La variable $fami es el campo de familia en la tabla artículos de la base de datos por lo tanto contiene un 29.

Espero su ayuda muchas gracias.
  #2 (permalink)  
Antiguo 20/06/2013, 13:25
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con PHP y MySQL

y por qué no comparas así

if ($fami==$row ['id']) {

?
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 20/06/2013, 13:32
 
Fecha de Ingreso: junio-2012
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema con PHP y MySQL

Porque la variable $fami contiene varios numero que hacen referencia a la categoría, ejemplo: 48,13,3.

Y el $row['id'] saca el id de cada categoría.

Gracias.
  #4 (permalink)  
Antiguo 20/06/2013, 14:07
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema con PHP y MySQL

Mmm y porque no usar por ejemplo...

if (in_array($row['id'], explode($fami,',')){}

vamos, no es lo mas recomendable, pero así como lo tienes es la forma mas "sencilla", lo mejor sería que desde un comienzo $fami sea un array para evitar la conversión en cada loop...

Por ultimo, no entiendo la manía (no lo digo por ti, si no en general) de usar doWhile cuando este no es lo correcto al recorrer registros de una base de datos...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 21/06/2013, 01:20
 
Fecha de Ingreso: junio-2012
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema con PHP y MySQL

Cita:
Iniciado por Nemutagk Ver Mensaje
Mmm y porque no usar por ejemplo...

if (in_array($row['id'], explode($fami,',')){}

vamos, no es lo mas recomendable, pero así como lo tienes es la forma mas "sencilla", lo mejor sería que desde un comienzo $fami sea un array para evitar la conversión en cada loop...

Por ultimo, no entiendo la manía (no lo digo por ti, si no en general) de usar doWhile cuando este no es lo correcto al recorrer registros de una base de datos...
Hola Nemutagk, no me ha funcionado, lo he solucionado "reservando" los 10 primeros id, y por ahora con las categorías que tengo funciona bien.

Utilizo el DoWhile porque empecé así, ¿Me podrías decir que forma es la correcta para recorrer registros?

Muchas Gracias por tu ayuda
  #6 (permalink)  
Antiguo 21/06/2013, 01:37
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con PHP y MySQL

Entonces convierte $fami en un array y compara con in_array(), no se entiende dónde está la dificultad.
__________________
Fere libenter homines, id quod volunt, credunt.
  #7 (permalink)  
Antiguo 21/06/2013, 07:30
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema con PHP y MySQL

Cita:
Iniciado por drieraperez Ver Mensaje
Hola Nemutagk, no me ha funcionado, lo he solucionado "reservando" los 10 primeros id, y por ahora con las categorías que tengo funciona bien.

Utilizo el DoWhile porque empecé así, ¿Me podrías decir que forma es la correcta para recorrer registros?

Muchas Gracias por tu ayuda
De que no te funciona primero di el PORQUE no funciona, y luego muestra como lo has implementado...

Lo de doWhile es por una sencilla razón, pero es difícil entender sin un ejemplo, supongamos que quieres obtienes X registros de una base de datos pero aun no hay registros en la base de datos, por lo tanto tu sentencia SQL te devuelve 0 objetos, que pasa con while y doWhile en este caso:

a) while primero verifica si tiene registros que mostrar ANTES de hacer el primer loop, por lo tanto si no hay registros while detiene su funcionamiento

b) doWhile primero hace una pasada SUPONIENDO que existe al menos UN REGISTRO, pero como no hay registros es seguro que arrojará un alert como menos ya que intentarás acceder a datos que no existen, ya que termino de dar la primera vuelta es entonces que while verifica si hay mas datos que mostrar
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: checkbox, 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 14:47.