Foros del Web » Programando para Internet » PHP »

Duda con queries

Estas en el tema de Duda con queries en el foro de PHP en Foros del Web. Hola a todos! Tengo una duda... como puedo ejecutar 2 queries a la vez?? $query = "SELECT id, title, author, post, DATE_FORMAT(date, '%M %d, %Y') ...
  #1 (permalink)  
Antiguo 01/11/2006, 11:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Duda con queries

Hola a todos!
Tengo una duda... como puedo ejecutar 2 queries a la vez??

$query = "SELECT id, title, author, post, DATE_FORMAT(date, '%M %d, %Y') as sd FROM news_posts";
$query2 = "SELECT $id, COUNT(id) FROM comments GROUP BY nid";
$result = @mysql_query($query);


if ($result) {
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

Otra cosa... como puedo cambiar el orden en el que salen los datos? Ahora mismo el orden es descendente... como cambiarlo a ascendente?

Gracias
  #2 (permalink)  
Antiguo 01/11/2006, 11:46
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola buenas,

Pues para ejecutar dos querys a la vez,tan solo utiliza de nuevo mysql_quey() y ya.

Para ordenar la salida,utiliza ORDER BY DESC para descendente y ORDER BY ASC para ascendente.

Bueno,espero haverte ayudado,un saludo!!
__________________
La chapucería de la esquina
  #3 (permalink)  
Antiguo 01/11/2006, 13:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Pero si utilizo otro mysql_query() tengo que usar otra vez $result, pues el loop tiene $result como variable, y una variable no puede almacenar datos distintos.
  #4 (permalink)  
Antiguo 01/11/2006, 14:04
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Lo que quiero hacer es lo siguiente...
Tengo este codigo:
Código:
<?php
include ('mysql_connect.php');
$query = "SELECT id, title, author, post, DATE_FORMAT(date, '%M %d, %Y') as sd FROM news_posts";
$query2 = "SELECT $id, COUNT(id) FROM comments GROUP BY nid";
$result = @mysql_query($query);
$result2 = @mysql_query($query2);


if ($result) {
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$url = 'comments.php?id='.$row['id'];
echo '<p><b>'.$row['title'].'</b><br />
'.$row['sd'].'<br />
Posted by : <b>'.$row['author'].'</b><br />
'.$row['post'].'<br />
<a href="javascript:openComments(\''.$url.'\')"> Add new comment or view posted comments</a></p>';
}
} else {
echo 'There are no news posts to display';
}
$id = 1;
$query = "SELECT $id, COUNT(id) FROM comments GROUP BY nid";
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){

        $comments = $row['COUNT(id)'];
        echo "Add Comment ($comments)</br>";

        }
?>
Lo que quiero hacer esque para cada noticia en vez de <a href="javascript:openComments(\''.$url.'\')"> Add new comment or view posted comments</a></p>'; pueda poner "Add Comment (*)" y entre parentesis el numero de comentarios que hay... Los comentarios se muestran en cada noticia a traves de un pop-up dependiendo del newsid que tengan, lo que quiero hacer esque haya un contador de comentarios para cada noticia especifica.
Esta es la tabla de comentarios:
CREATE TABLE comments (
id INT(11) NOT NULL AUTO_INCREMENT,
nid INT(11) NOT NULL,
title VARCHAR(70) NOT NULL,
author VARCHAR(50) NOT NULL,
comment TEXT NOT NULL,
date DATETIME NOT NULL,
PRIMARY KEY (id)
);
nid: id de noticia
  #5 (permalink)  
Antiguo 02/11/2006, 09:49
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Buenas,

Haber,si esta vez no te entendi mal,creo que deverias crear una nueva tabla que se llame por ejemplo "contador_comentarios",en esa tabla creas dos campos o columnas uno que sea para la noticia y otro para los comentarios que tiene la noticia,entonces cuando se le de a el boton "añadir comentario" y se ejecute el codigo para añadir el comentario,haces un SELECT a la cantidad de comentarios con un WHERE que sea la noticia en concreto en la que estamos(con el id de noticia),le sumas uno a esa cantidad y lo vuelves a insertar a la tabla y ya esta,no se si era esto lo que decias que querias hacer,si no lo es dimelo y lo intento de nuevo jaja
Otra cosa,al crear una nueva noticia,deveras hacer para que se cree el contador,es decir,que se creen esos dos campos,el de comentarios(puedes poner 0 como predeterminado) y el de noticia(la id devera ser la misma para poder relacionarlos despues)

Porcierto hay una forma de sumar dorectamente con SQL pero no recuerdo como..

Un Saludo!!
__________________
La chapucería de la esquina

Última edición por limboings; 02/11/2006 a las 09:52 Razón: Me deje una cosa..
  #6 (permalink)  
Antiguo 03/11/2006, 17:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Gracias por tu respuesta... pero si te das cuenta eso de que cada noticia tenga un ID para el comentario y que dentro de ese ID haya X comentarios ya esta puesto en la tabla esa.... El problema lo sigo teniendo, y es como contar los comentarios relacionados cn una noticia especifica ( un ID especifico )
  #7 (permalink)  
Antiguo 04/11/2006, 08:10
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola buenas,

Pues muy facil(relativamente),haces una consulta que recupere el id de notocia y otra que recupere los comentarios con una condicion que sea que el id (id en la tabla comentarios) sea igual a al id de la tabla comentarios,despues de eso utilizas la funcion mysql_num_rows() para comprobar cuantas filas fueron afectadas con la consulta realizada(esta funcion devuelve un digito),tan solo haces un echo a la variable donde almacenes la funcion y listo.

Un Saludo!!alguna cosa mas,aqui estoy.

P.D: Perdona por tardar en responder,ando muy liado ultimamente..
__________________
La chapucería de la esquina
  #8 (permalink)  
Antiguo 05/11/2006, 07:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
$query = "SELECT $id, COUNT(id) FROM comments GROUP BY nid";
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){

$comments = $row['COUNT(id)'];
echo "Add Comment ($comments)</br>";

Eso ya he comprobado que cuenta el numero de comentarios por noticia... pero el resultado de ejecutar ese codigo es este:
Add Comment(3)
Add Comment(5)
Add Comment(2)
El numero entre partentesis es la cantidad d comentarios que tiene cada noticia, los numeros estan ordenados en orden decreciente, al igual que las noticias, por eso me gustaria poner esa funcion dentro de la funcion de mostrar la noticia... pero eso es lo que no se como hacer... Alguna idea??

Salu2
  #9 (permalink)  
Antiguo 05/11/2006, 10:07
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola buenas,

Lo que tienes que hacer es un SELECT a varias tablas,te pongo aqui la sintaxis(de unos apuntes hechos por mi,espero no esten mal):
Código:
SELECT tabla1.campo1, tabla1.campo2, tabla2.campo1
FROM tabla1, tabla2
[WHERE ... ]
Deves utilizar el punto para separar la tabla del campo,en las condiciones tambien deves usar la sintaxis de "tabla.campo".

Un Saludo!!
__________________
La chapucería de la esquina
  #10 (permalink)  
Antiguo 08/11/2006, 13:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 8
Antigüedad: 19 años
Puntos: 0
Lo siento pero la verdad esque no soy muy experto en php y mi conocimiento de tablas mysql es mas bien elemental... La respuesta que me has dado no me sirve de nada, quiero decir que no se qué hacer a partir de lo que me has escrito.
  #11 (permalink)  
Antiguo 09/11/2006, 09:20
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola buenas,

A lo que me refiero es que deves recuperar los comentarios en la misma consulta de las noticias,tal que asi:
Código:
$query = "SELECT comments.$id, comments.COUNT(id),news_posts.id, news_posts.title, news_posts.author, news_posts.post, DATE_FORMAT(news_posts.date, '%M %d, %Y') as sd FROM news_posts,comments";
Seri algo asi,yo de hecho tampoco soy experto pero bueno,supongo me defiendo..el codigo de arriba cre que esta bien pruebalo,si te da algun error postealo y vere que falla.

Despues de esto tan solo es mostrar con el formato que quieras los comentarios en el while..

Un Saludo!!
__________________
La chapucería de la esquina
  #12 (permalink)  
Antiguo 13/11/2006, 12:34
Avatar de fanny0  
Fecha de Ingreso: noviembre-2004
Mensajes: 438
Antigüedad: 19 años, 5 meses
Puntos: 1
yo necesito un contador de comentarios para un libro de comentarios hecho en php y donde se guardan los comentarios en txt saben como podría hacerlo?
  #13 (permalink)  
Antiguo 13/11/2006, 13:46
Avatar de limboings  
Fecha de Ingreso: enero-2005
Mensajes: 794
Antigüedad: 19 años, 3 meses
Puntos: 2
Hola buenas fanny,

Te recomiendo que pongas un nuevo tema en el subforo de PHP,como me dijeron hace tiempo a mi..cada usuario/problema es un mundo..

Un Saludo!!
__________________
La chapucería de la esquina
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 06:02.