Foros del Web » Programando para Internet » PHP »

Hacer un WHERE dentro de un UPDATE

Estas en el tema de Hacer un WHERE dentro de un UPDATE en el foro de PHP en Foros del Web. Nota: Esta duda fue solucionada, lee el ultimo mensaje para una ultima duda, por favor. Buenas! Hace poco ya postee otra duda sobre SQL, lo ...
  #1 (permalink)  
Antiguo 11/05/2009, 12:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 5
Información Hacer un WHERE dentro de un UPDATE

Nota: Esta duda fue solucionada, lee el ultimo mensaje para una ultima duda, por favor.

Buenas!

Hace poco ya postee otra duda sobre SQL, lo tengo un poco atascado y solo me salen cosas sencillas xD pero bueno, explico.

Estoy haciendo una web y como en la mayoria de webs, tengo un "sistema de noticias" y en estas se pueden dejar comentarios. Esto ya esta hecho, ahora lo que intentaba hacer es poner el numero de comentarios hechos en cada noticia algo tipo "0 Comentarios" o "3 Comentarios".

He probado bastantes convinaciones, esta es la ultima y la que actualmente estoy usando.

Código PHP:
$query "SELECT COUNT(comentarios.des_id) FROM comentarios, desarrollo WHERE comentarios.des_id = desarrollo.id;"
Y esta parte es la que uso pasa sacar el numero e imprimirlo.

Código PHP:
$res mysql_query($query$link);
$num_comments = array();
while( 
$row mysql_fetch_assoc$res ) ) {
    
$num_comments[] = mysql_num_rows($res);
}

$canti $num_comments['des_id'];
if( 
$canti <= ) {
    
$cant "0 Comentarios";
} elseif( 
$canti == ) {
    
$cant "1 Comentario";
} elseif( 
$canti ) {
    
$cant $canti " Comentarios";

Tal y como esta ahora, siempre dice "0 Comentarios" teniendo 1 comentario en una noticia, 0 en otra y mas de 1 en otra.

Tengo 2 tablas (Desarrollo y Comentarios), en la primera seria donde estan las noticias. Comentarios tiene un campo llamado des_id. Cuando se crea un comentario, la id de la noticia se guarda en ese campo y luego, se enlaza la id de la noticia con el numero de des_id y asi solo se muestran los comentarios asignados a esa noticia, en lugar de todos en todas.

No se si esta mal la consulta o el php porque no llevo mas de 1 mes sabiendo siquiera hacer esto. He intentado explicar un poco como lo tengo enlazado...Si no se entiende o hace falta algo mas avisadme y lo posteo.

Gracias de antemano (:

Última edición por Vendetta; 12/05/2009 a las 11:15
  #2 (permalink)  
Antiguo 11/05/2009, 13:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Hacer un WHERE dentro de un UPDATE

Código sql:
Ver original
  1. SELECT desarrollo.id, IFNULL(COUNT(comentarios.des_id),0) total FROM comentarios INNER JOIN desarrollo ON comentarios.des_id = desarrollo.id GROUP BY  desarrollo.id

con esto puedes traerte el des_id de la noticia y el número de comentarios de esa noticia. Usando el alias total como nombre de campo recoges el dato en PHP. El código PHP, salvo el de lanzamiento de la consulta y carga de datos, es innecesario. Ya te lo traes casi todo con MySQL.

Última edición por jurena; 11/05/2009 a las 13:33
  #3 (permalink)  
Antiguo 11/05/2009, 14:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Hacer un WHERE dentro de un UPDATE

Cita:
Iniciado por jurena Ver Mensaje
Código sql:
Ver original
  1. SELECT desarrollo.id, IFNULL(COUNT(comentarios.des_id),0) total FROM comentarios INNER JOIN desarrollo ON comentarios.des_id = desarrollo.id GROUP BY  desarrollo.id

con esto puedes traerte el des_id de la noticia y el número de comentarios de esa noticia. Usando el alias total como nombre de campo recoges el dato en PHP. El código PHP, salvo el de lanzamiento de la consulta y carga de datos, es innecesario. Ya te lo traes casi todo con MySQL.
Bueno, una cosa que me olvide decir y que quizas afecte, es que separo HTML y PHP, tengo los tpl y el php, por eso hago el while. No conozco otra forma de pasar ese dato al TPL y que se repita segun las noticias que hay en el indice.

He probado haciendo esto:

Código PHP:
$res mysql_query($query$link);
$row mysql_fetch_array($res);
$numc $row['total']; 
y luego en la plantilla con poner
Código PHP:
<?=$numc?> Comentarios
Con esto me salia en todas las noticias "1 Comentario" y en todas no hay 1 comentario. Tambien he probado otra forma y me decia lo mismo, "1 Comentario", imagino que ahora el problema es que no se como utilizarlo si no es con un while >.< Tambien he revisado la consulta por si acaso habia algo mal escrito por error o alguna cosa al reves por mala explicacion mia o lo que fuera y parece estar bien.

Agradeceria que me echaras una ultima mano con esto jeje y gracias por responder tan rapido
  #4 (permalink)  
Antiguo 11/05/2009, 14:27
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Hacer un WHERE dentro de un UPDATE

Pide ayuda en el foro PHP explicando la consulta que cargas y lo que quieres hacer. Eso es PHP y corresponde a ellos. Te lo resolverán en un pis pas.
  #5 (permalink)  
Antiguo 11/05/2009, 15:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Hacer un WHERE dentro de un UPDATE

Bueno, ya que estabamos aqui y la duda sigue a partir de esa misma consulta podrias responderme, igualmente posteare alli.

Gracias de todas formas ^^
  #6 (permalink)  
Antiguo 11/05/2009, 19:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Hacer un WHERE dentro de un UPDATE

Tema trasladado desde MySQL

http://www.forosdelweb.com/f21/funci...-datos-413499/
  #7 (permalink)  
Antiguo 12/05/2009, 06:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Hacer un WHERE dentro de un UPDATE

Bueno, en tal caso me "autocito" a ver si alguien me puede ayudar con este ultimo problemilla

Cita:
Iniciado por Vendetta Ver Mensaje
Bueno, una cosa que me olvide decir y que quizas afecte, es que separo HTML y PHP, tengo los tpl y el php, por eso hago el while. No conozco otra forma de pasar ese dato al TPL y que se repita segun las noticias que hay en el indice.

He probado haciendo esto:

Código PHP:
$res mysql_query($query$link);
$row mysql_fetch_array($res);
$numc $row['total']; 
y luego en la plantilla con poner
Código PHP:
<?=$numc?> Comentarios
Con esto me salia en todas las noticias "1 Comentario" y en todas no hay 1 comentario. Tambien he probado otra forma y me decia lo mismo, "1 Comentario", imagino que ahora el problema es que no se como utilizarlo si no es con un while >.< Tambien he revisado la consulta por si acaso habia algo mal escrito por error o alguna cosa al reves por mala explicacion mia o lo que fuera y parece estar bien.

Agradeceria que me echaras una ultima mano con esto jeje y gracias por responder tan rapido
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:20.