Foros del Web » Programando para Internet » PHP »

resultados de mysql en una cadena y eliminar elementos de la cadena...

Estas en el tema de resultados de mysql en una cadena y eliminar elementos de la cadena... en el foro de PHP en Foros del Web. Hola... bueno ando un poco loco con esto... ya me he mirado el manual de php pero no acabo de dar con la solucion.... resulta ...
  #1 (permalink)  
Antiguo 06/01/2004, 13:31
 
Fecha de Ingreso: enero-2002
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta resultados de mysql en una cadena y eliminar elementos de la cadena...

Hola...

bueno ando un poco loco con esto... ya me he mirado el manual de php pero no acabo de dar con la solucion....

resulta que quiero que los resultados de una consulta de mysql se me muestren en una cadena, o sea de la forma 1,4,5,6,123,3456

la consulta es lo tipico de seleccionar las ids de una tabla

"SELECT id FROM tabla"

Pense que con esto me funcionaria pero no es asi :

Código PHP:
$sql="SELECT id FROM tabla";
$result=mysql_query($sql,$link);
$row=mysql_fetch_array($result);
$row2=implode(",",$row); 
pero asi no me devuelve un listado de los resultados en forma de cadena , si no una cadena con el ultimo resultado... se que con un bucle recorriendo todos los resultados de mysql seria muy facil, pero quiero evitar esto porque entonces relentizara mucho la ejecucion de la pagina ya que hay muchisimos registros.

y despues la otra duda (que no he podido practicar porque si no me sale el paso anterior...) es una vez tenga la cadena con las ids 2,3,7,12,232 como podria eliminar un valor en concreto y seguir manteniendo el formato de cadena?

Saludos y gracias
  #2 (permalink)  
Antiguo 06/01/2004, 13:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El bucle te hace falta para recorrer tu consulta obtenida .. si ranlentiza la ejecución de tu aplicación tendrás que ver para que usas esa série de "ID" .. por qué si es para que un "humano" los borre, para eso tienes técnicas de paginación de datos en los que sólo muestras "pantallazos" de X registros y ofreces links de desplazamiento por toda esa consulta realizada.

A todo eso .. lo ideal sería que no generases una "cadena" sino un array con esos ID's (datos) así es mas simple eliminar un elemento de ese array. Todo depende del fin que le des a esa "cadena" de "ID's" ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 06/01/2004, 14:06
 
Fecha de Ingreso: enero-2002
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Hola,

lo quiero utilizar para crear un sistema de "mensajes no leidos" de unos foros que desarrolle hace un tiempo.

No quiero hacerlo por fechas de cookies o sesiones, porque al leer el ultimo mensaje ya saldrian los demas como leidos y no es cierto.

tampoco quiero guardar en la base de datos el estado de cada usuario para cada mensaje porque ha 3000 posts y 900 usuarios... seria una carga muy grande para la bd.

Entonces lo que se me ocurrio es, en un campo nuevo del la tabla de usuarios incluir desde un principio todas las IDS de los mensajes del foro, en formato de cadenas (1,3,12,45...) y a partir de hay esos serian los mensajes sin leer.

A partir de hay cada vez que el usuario entrase y leyese el mensaje de borraria la ID de esa lista, y cada vez que otro usuario añadiese una nueva respuesta al post se añdiria la ID de nuevo a la lista.

De esta forma (si lo consigo hacer), tan solo tendria que añadir un campo TEXT a la tabla de usuarios de la base de datos, y creo que seria la forma "más ligera" de implementar este sistema de mensajes no leidos....

de todas formas se aceptan sugerencias....

saludos!
  #4 (permalink)  
Antiguo 06/01/2004, 14:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo usaría una tabla extra que relacione al usuario con los "ID's" de mensajes leidos.

En esa tabla guardaría los ID's de mensajes leidos en relación 1->N (1 usuario N mensajes leidos).

Normalmente el nº de mensajes leidos por un usuario de un foro suele ser menor al de mensajes publicados. Si hay más respuestas a un mensaje .. o bien borro ese ID de la tabla de "mensajes_leidos" o incluso usaría un campo extra que indique el estado ("mensajes nuevos no leidos") a modo de "flag" (bandera) para ese ID en esa tabla (todo usuario un UPDATE sin WHERE ya que afectaría ese mensaje "nuevo" a todos los usuarios).

Así se hacen más sencillas las consultas y determinaciones de mensaje leido o no leido.

Sería una tabla tipo:

id_mensajes_leidos
id_usuario
id_mensaje
estado_mensajes_nuevos

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 13:59.