Foros del Web » Programando para Internet » PHP »

Actualizar sucesivamente un campo en distintos registros de una tabla

Estas en el tema de Actualizar sucesivamente un campo en distintos registros de una tabla en el foro de PHP en Foros del Web. Hola a todos. A ver: Mirad, tengo una tabla llamada comentarios donde se recogen los comentarios que se hacen a noticias que están en una ...
  #1 (permalink)  
Antiguo 17/06/2010, 01:23
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Actualizar sucesivamente un campo en distintos registros de una tabla

Hola a todos. A ver:

Mirad, tengo una tabla llamada comentarios donde se recogen los comentarios que se hacen a noticias que están en una tabla llamada noticias. están relacionadas ambas tablas por el idnoticia que es un código aleatorio que se genera automáticamente en la tabla noticias al dar de alta a una noticia y que luego, cuando se está en la noticia en cuestión, al añadir un comentario se incorpora a la tabla comentarios en el campo idnoticiascom.

En esa tabla comentarios existe un campo llamado 'count' que recoge el número de comentario que sobre una noticia hace el que se está añadiendo en cuestión.

Es decir, si de la noticia con idnoticia=5263ef añado un primer comentario, en ese campo de la tabla comentario aparecerá el valor 1. cuando añada otro comentario en la noticia con idnoticia=5263ef, en ese nuevo comentario, el valor del campo count deberá ser 2 y así sucesivamente.

Si ahora añado un nuevo comentario pero a una noticia con idnoticia=88888ef, con independencia de que de la anterior noticia ya haya dos comentarios, al comentario que estamos añadiendo de esta, en el campo count le correspondería el valor 1, pues no tiene nada que ver con los anteriores.

El problema me viene a la hora de eliminar comentarios. Supongamos que la noticia con código 5263ef, que tiene 5 comentarios, elimino el comentario con el count número 3, los comentarios que hay posteriores a él de esa noticia (es decir, los que tienen el count 4 y 5) deberían actualizarse para poner el 3 y el 4.

es decir, elimino el comentario número 3 en esa noticia en cuestión y los siguientes de esa misma noticia se deberían renumerar actualizando el campo count en esos comentarios para ponerlos el 3 y el 4. pero no doy con ello.

he probado renumerar todos los comentarios de esa noticia. ¿como? pues al eliminar el comentario 3, actualizo todos los counts de los comentarios de esa noticia poniendoles el valor número 1. una vez que tengo todos los que quedan (es decir, los cuatro restantes) con el valor uno, había pensado en actualizarlos en una unidad a partir del primero, con algo tipo $countact=$count+1

Pero qué me hace esto? pues que me actualiza todos los count de esos cuatro comentarios poniéndole el valor a todos 2, no al segundo el 2, al tercero el 2+1 (3) y así sucesivamente.

alguna idea????:coraz on:
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Última edición por estibaliz2006; 18/06/2010 a las 05:12
  #2 (permalink)  
Antiguo 17/06/2010, 09:03
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

bien. he tratado por otra vía. actualizando a partir del comentario eliminado pero me sigue sin dar el resultado que busco...estoy hecha un lío....ayudaaaaaaaaa
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #3 (permalink)  
Antiguo 17/06/2010, 09:50
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

heco esto cuando borres algun comentario hace un fetch_array en un while y a todos los otros comentarios hacele un update y restale 1 al id algo asi
Código PHP:
mysql_query("UPDATE comentarios SET id = 'id - 1' where id = '".$comentario['id'] . "'"); 
$comentario['id'] es el valor recibido del while
  #4 (permalink)  
Antiguo 17/06/2010, 10:03
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

pero no puedes hacer eso porque tú estás considerando que el eliminado es el último pero...y si es de la mitad?

por ejemplo, supongamos lo que tu dices:

tengamos cuatro comentarios

idcom1, con count = 1
idcom2, con count= 2
idcom3, con count=3
idcom4, con count=4

si eliminamos el comentario 3, según lo que expones, tendríamos que restarle al campo count de los que quedan, el idcom1, el idcom2 y el idcom4, 1. si hacemos eso, nos quedaría esto:

idcom1, con count = 0
idcom2, con count= 1
idcom4, con count=3

pero si sólo restamos los que tengan idcom inferior al eliminado, es decir, en este caso al idcom1 y al idcom 2, me quedaría:
idcom1, con count = 0
idcom2, con count= 1
idcom4, con count=4

en ambos casos de cualquier manera sigue habiendo salto, no hay una renumeración consecutiva.

__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #5 (permalink)  
Antiguo 17/06/2010, 10:06
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

entonces resta los que tengan mayor numero que el que eliminaste con MAX()
  #6 (permalink)  
Antiguo 18/06/2010, 00:37
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

nada...es superior a mí...hay que tener en cuenta que se pueden eliminar más de un comentario a la vez, con lo cual, la cosa se complica aún más.

la historia está en que al eliminar uno, dos o cuantos se quieran comentarios, se debería contar cuantos hay, por ejemplo 15 comentarios, y una vez contados cuantos hay, meter en el count valores del 1 al 15, es decir, 1, 2, 3, 4, 5.... hasta 15, pero no soy capaz de cuadrar el sistema lógico. por favor, echadme una mano....
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #7 (permalink)  
Antiguo 18/06/2010, 05:12
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: Actualizar sucesivamente un campo en distintos registros de una tabla

eureka!!!! solucionado!!!! cómo lo he conseguido? pues fácil...bueno fácil...menudo quebradero de cabeza me ha costado. a ver os cuento:

saco el idcom, que es un autonumérico, del comentario que quiero eliminar.

una vez lo tengo, elimino el comentario y actualizo con el siguiente código:

Código PHP:
mysql_query("UPDATE comentarios SET count = count-1 WHERE idcom > '$idcom' and idnoticia='$idnoticia'"); 
qué me hace? pues me actualiza restando uno al valor del campo count de aquellos comentarios que sean de la misma noticia (idnoticia) y cuyo idcom (repito, autonumérico) sea posterior al idcom del comentario que elimino: y zas!!!! solucionado
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Etiquetas: distintos, registros, tablas, campos
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 11:07.