Foros del Web » Programando para Internet » PHP »

Que esta Mal Aqui ? Ayuda ¡¡

Estas en el tema de Que esta Mal Aqui ? Ayuda ¡¡ en el foro de PHP en Foros del Web. Hola foreros espero que me puedan ayudar, estos dias estuve armando mi sistemita de noticias, le adicione varias cosas interesantes, entre ella la paginacion que ...
  #1 (permalink)  
Antiguo 11/03/2010, 19:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Que esta Mal Aqui ? Ayuda ¡¡

Hola foreros espero que me puedan ayudar, estos dias estuve armando mi sistemita de noticias, le adicione varias cosas interesantes, entre ella la paginacion que encontre un script por la red, que por cierto me funciono muy bien, fue ahi donde ocurre el problema, mi codigo compila normal pero, no cuenta el numero de comentarios q tiene cada articulo cuando muestra la pagina blog.php...me gustaria que el den una chekeada y vean que esta mal al codigo..porque cuando desactivo la paginación (lo q indica la flecha) cuenta el numero de comentarios normal pero la paginacion se desactiva...

vision-web.webcindario.com/blog.php


Código PHP:
    <?php
     
//paginacion mois =)
   
require_once 'PHPPaging.lib.php';
   
$paging = new PHPPaging;
        
   
$paging->agregarConsulta("select * from noticias order by fecha Desc");
        
            
// Ejecutamos la paginación
            
$paging->ejecutar();  
                    
    while(
$row=mysql_fetch_array($result))
    {
    
$id=$row["id_noticia"];
    
$result2=mysql_query("select * from comentarios where id_noticia=$id");
    
$totalcomentarios=mysql_num_rows($result2);
-->    while(
$row$paging->fetchResultado()){
    echo 
'<div class="content-box"><a href="ver.php?id='.$row["id_noticia"].'"><h3>'.$row["titulo"].'</h3></a><p><div class="post-info"><strong>Autor: </strong> '.$row["autor"].' <strong> | Fecha: </strong>'.$row["fecha"].'<strong> | Categoria: </strong>'.$row["categoria"].' <span class="comments"><img src="images/ico-1.gif" /><strong>'.$totalcomentarios.' Comments</strong></span></div><br>'.$row["avance"].'</p><a href="ver.php?id='.$row["id_noticia"].'" class="readmore rightalign">Leer Mas</a><br> </div>';
            }
    -->        }            echo 
'<p align="center"><span class="Estilo2"><strong>Paginas '.$paging->fetchNavegacion().'</strong></span></p>';
            
mysql_free_result($result);
            
?>
salu2

Última edición por moz90; 11/03/2010 a las 19:28 Razón: qitar negrita
  #2 (permalink)  
Antiguo 12/03/2010, 01:32
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

tu error es la propia query:

Código SQL:
Ver original
  1. SELECT * FROM comentarios WHERE id_noticia=$id

debería ser:

Código PHP:
Ver original
  1. $result2=mysql_query("select count(*) from comentarios where id_noticia=$id");
  2. $totalcomentarios=mysql_result($result2,0,0);

Sin embargo, yo te sugeriría que `cacharas` el número de comentarios en un campo de tu tabla principal, cuando agregues un comentario actualices el campo de tu tabla, igualmente con alguna eliminación.

algún campo:

Código SQL:
Ver original
  1. comentarios SMALLINT(4) NOT NULL DEFAULT 0

de esta forma cuando agregues un comentario añades una query:

Código SQL:
Ver original
  1. UPDATE noticias SET comentario=comentario+1 WHERE id=$iddenoticia

Última edición por rpv; 12/03/2010 a las 01:57
  #3 (permalink)  
Antiguo 12/03/2010, 09:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

hola amigo te agradesco por responder, voy a probarlo y te comento
gracias


Cita:
Iniciado por rpv Ver Mensaje
tu error es la propia query:

Código SQL:
Ver original
  1. SELECT * FROM comentarios WHERE id_noticia=$id

debería ser:

Código PHP:
Ver original
  1. $result2=mysql_query("select count(*) from comentarios where id_noticia=$id");
  2. $totalcomentarios=mysql_result($result2,0,0);

Sin embargo, yo te sugeriría que `cacharas` el número de comentarios en un campo de tu tabla principal, cuando agregues un comentario actualices el campo de tu tabla, igualmente con alguna eliminación.

algún campo:

Código SQL:
Ver original
  1. comentarios SMALLINT(4) NOT NULL DEFAULT 0

de esta forma cuando agregues un comentario añades una query:

Código SQL:
Ver original
  1. UPDATE noticias SET comentario=comentario+1 WHERE id=$iddenoticia
  #4 (permalink)  
Antiguo 12/03/2010, 10:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

[QUOTE=rpv;3319519]tu error es la propia query:

Código SQL:
Ver original
  1. SELECT * FROM comentarios WHERE id_noticia=$id

debería ser:

Código PHP:
Ver original
  1. $result2=mysql_query("select count(*) from comentarios where id_noticia=$id");
  2. $totalcomentarios=mysql_result($result2,0,0);


y Probe con esta sentencia query pero no me resulta.... y sigue sin contabilizar el numero de comentarios...


y con referencia a tu segunda sugerencia me parece muy buena tu idea, pero tendria q eliminar todos los comentarios y contarlos de nuevo....ese campo lo creo en la tabla noticias o comentarios ??

salu2
  #5 (permalink)  
Antiguo 12/03/2010, 11:24
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

el contador de comentarios tendrias que hacerlo en la tabla noticias.

seria bueno conocer la estructura de ambas tablas.

saludos
  #6 (permalink)  
Antiguo 12/03/2010, 11:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por dantrix Ver Mensaje
el contador de comentarios tendrias que hacerlo en la tabla noticias.

seria bueno conocer la estructura de ambas tablas.

saludos
HOLA ES ESTA:

-- Servidor: localhost
-- Tiempo de generación: 12-03-2010 a las 17:26:32
-- Versión del servidor: 5.1.36
-- Versión de PHP: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: `bohemios`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `comentarios`
--

CREATE TABLE IF NOT EXISTS `comentarios` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`id_noticia` int(4) NOT NULL,
`nick` varchar(255) DEFAULT NULL,
`fecha` datetime NOT NULL,
`email` varchar(255) DEFAULT NULL,
`comentario` blob,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;

--
-- Volcar la base de datos para la tabla `comentarios`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `noticias`
--

CREATE TABLE IF NOT EXISTS `noticias` (
`id_noticia` int(4) NOT NULL AUTO_INCREMENT,
`autor` varchar(20) DEFAULT NULL,
`titulo` varchar(40) DEFAULT NULL,
`categoria` varchar(20) DEFAULT NULL,
`fecha` datetime NOT NULL,
`avance` varchar(250) NOT NULL,
`noticia` longtext,
KEY `id_noticia` (`id_noticia`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;


--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`usuario` varchar(20) NOT NULL,
`password` varchar(10) NOT NULL,
`email` varchar(45) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
`fecha` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Volcar la base de datos para la tabla `usuarios`
--

SALU2
  #7 (permalink)  
Antiguo 12/03/2010, 11:39
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

creo que lo estas implementando de forma incorrecta, pregunta, ¿tu clase PHPPaging no tiene un metodo(función) que te devuelva el total de registros??

si no lo tiene, creo que sería mas facil agregarcelo.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 12/03/2010, 11:42
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Entonces todo bien, no deberia de haber problemas, se soluciono todo?
  #9 (permalink)  
Antiguo 12/03/2010, 11:56
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por dantrix Ver Mensaje
Entonces todo bien, no deberia de haber problemas, se soluciono todo?
je aun no implemento esa parte del agregar el campo, este es el codigo de que se encarga de agregar los comentarios, despues de escribir el comentario y darle click al boton:

Código PHP:
<?php
//editacomentarios.php
//recibimos las variables enviadas por el formulario
$id_noticia=$_POST["id"];
$nick=$_POST["nick"];
$email=$_POST["email"];
$comentario=$_POST["comentario"];

//conectamos a la base
include("conexiones.php");
//Ingresamos los comentarios a su tabla
mysql_query("insert into comentarios(id_noticia,nick,fecha,email,comentario) values('$id_noticia','$nick',NOW(),'$email','$comentario')");
header("location: ver.php?id=$id_noticia");
?>
con la sugerencia del amigo seria algo asi, dime si esta bien ? :

Código PHP:
<?php
//editacomentarios.php
//recibimos las variables enviadas por el formulario
$id_noticia=$_POST["id"];
$nick=$_POST["nick"];
$email=$_POST["email"];
$comentario=$_POST["comentario"];

//conectamos a la base
include("conexiones.php");
//Ingresamos los comentarios a su tabla
mysql_query("insert into comentarios(id_noticia,nick,fecha,email,comentario) values('$id_noticia','$nick',NOW(),'$email','$comentario')");
UPDATE noticias SET comentario=comentario+1 WHERE id=$iddenoticia
header
("location: ver.php?id=$id_noticia");
?>
salu2
  #10 (permalink)  
Antiguo 12/03/2010, 12:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por eits Ver Mensaje
creo que lo estas implementando de forma incorrecta, pregunta, ¿tu clase PHPPaging no tiene un metodo(función) que te devuelva el total de registros??

si no lo tiene, creo que sería mas facil agregarcelo.

saludos.
Oye amigo me parece buena tu sugerencia, estuve chekeando y hay funciones para contar el numero de registros osea de noticias. te mando el codigo q me parece q cuenta el numero de registros o noticias, pero lo qierio es q muestre el numero de comentarios por noticias.

Código PHP:
var $numTotalRegistros;
/**
*    @access private
*/
var $numTotalRegistros_actual;

*    
Número de total registros
    
*
    *    
Devuelve el número total de registros encontrados
    
*    @returns int
    
**/
    function 
numTotalRegistros () {
        if(
$this->done != true) return $this->error(true"No se puede generar la barra de navegación pues no se ha realizado ninguna paginación");
        return 
$this->numTotalRegistros;
    }
    
    
/**
    *    Número de registros mostrados en esta página
    *
    *    Devuelve el número de registros mostrados en la página actual
    *    @returns int
    **/
    
function numRegistrosMostrados () {
        if(
$this->done != true) return $this->error(true"No se puede obtener el número de registros mostrados en la página actual pues no se ha realizado ninguna paginación");
        return 
$this->numTotalRegistros_actual;
    } 
eso fue lo q encontre el codigo del metodo PHPPaging es bien largo solo te muestro ese... pero seria mas factible crear uno para contar el numero de comentarios por noticia...pero lo malo q nose mucho de POP, espero me des una mano

salu2
  #11 (permalink)  
Antiguo 12/03/2010, 13:07
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

creo que no va por allí, analizando un poco, puede que esto te sirva
Código PHP:
Ver original
  1. //paginacion mois =)
  2. require_once 'PHPPaging.lib.php';
  3. $paging = new PHPPaging;
  4. $paging->agregarConsulta("select * from noticias order by fecha Desc");
  5. // Ejecutamos la paginación
  6. $paging->ejecutar();  
  7. while($row=$paging->fetchResultado()){
  8.     //aqui supongo que ya creaste tu link de conecxion.
  9.     $result2=mysql_query('select * from comentarios where id_noticia='.$row["id_noticia"]);
  10.     $totalcomentarios=mysql_num_rows($result2);
  11.     echo '<div class="content-box"><a href="ver.php?id='.$row["id_noticia"].'"><h3>'.$row["titulo"].'</h3></a><p><div class="post-info"><strong>Autor: </strong> '.$row["autor"].' <strong> | Fecha: </strong>'.$row["fecha"].'<strong> | Categoria: </strong>'.$row["categoria"].' <span class="comments"><img src="images/ico-1.gif" /><strong>'.$totalcomentarios.' Comments</strong></span></div><br>'.$row["avance"].'</p><a href="ver.php?id='.$row["id_noticia"].'" class="readmore rightalign">Leer Mas</a><br> </div>';
  12.     mysql_free_result($result2);
  13. }
  14. echo '<p align="center"><span class="Estilo2"><strong>Paginas '.$paging->fetchNavegacion().'</strong></span></p>';
  15. mysql_free_result($result);//<-- de donde sale result, no sería result2 pero si es el 2do. este ya no va.
de cualquier manera aquí hay un poco mas de info
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #12 (permalink)  
Antiguo 12/03/2010, 13:19
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por moz90 Ver Mensaje
je aun no implemento esa parte del agregar el campo, este es el codigo de que se encarga de agregar los comentarios, despues de escribir el comentario y darle click al boton:

Código PHP:
<?php
//editacomentarios.php
//recibimos las variables enviadas por el formulario
$id_noticia=$_POST["id"];
$nick=$_POST["nick"];
$email=$_POST["email"];
$comentario=$_POST["comentario"];

//conectamos a la base
include("conexiones.php");
//Ingresamos los comentarios a su tabla
mysql_query("insert into comentarios(id_noticia,nick,fecha,email,comentario) values('$id_noticia','$nick',NOW(),'$email','$comentario')");
header("location: ver.php?id=$id_noticia");
?>
con la sugerencia del amigo seria algo asi, dime si esta bien ? :

Código PHP:
<?php
//editacomentarios.php
//recibimos las variables enviadas por el formulario
$id_noticia=$_POST["id"];
$nick=$_POST["nick"];
$email=$_POST["email"];
$comentario=$_POST["comentario"];

//conectamos a la base
include("conexiones.php");
//Ingresamos los comentarios a su tabla
mysql_query("insert into comentarios(id_noticia,nick,fecha,email,comentario) values('$id_noticia','$nick',NOW(),'$email','$comentario')");
UPDATE noticias SET comentario=comentario+1 WHERE id=$iddenoticia
header
("location: ver.php?id=$id_noticia");
?>
salu2
a simple vista parece bien, deberias de probar y luego mostrar si funciona o no, y los mensajes de error si corresponde
  #13 (permalink)  
Antiguo 12/03/2010, 13:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por eits Ver Mensaje
creo que no va por allí, analizando un poco, puede que esto te sirva
Código PHP:
Ver original
  1. //paginacion mois =)
  2. require_once 'PHPPaging.lib.php';
  3. $paging = new PHPPaging;
  4. $paging->agregarConsulta("select * from noticias order by fecha Desc");
  5. // Ejecutamos la paginación
  6. $paging->ejecutar();  
  7. while($row=$paging->fetchResultado()){
  8.     //aqui supongo que ya creaste tu link de conecxion.
  9.     $result2=mysql_query('select * from comentarios where id_noticia='.$row["id_noticia"]);
  10.     $totalcomentarios=mysql_num_rows($result2);
  11.     echo '<div class="content-box"><a href="ver.php?id='.$row["id_noticia"].'"><h3>'.$row["titulo"].'</h3></a><p><div class="post-info"><strong>Autor: </strong> '.$row["autor"].' <strong> | Fecha: </strong>'.$row["fecha"].'<strong> | Categoria: </strong>'.$row["categoria"].' <span class="comments"><img src="images/ico-1.gif" /><strong>'.$totalcomentarios.' Comments</strong></span></div><br>'.$row["avance"].'</p><a href="ver.php?id='.$row["id_noticia"].'" class="readmore rightalign">Leer Mas</a><br> </div>';
  12.     mysql_free_result($result2);
  13. }
  14. echo '<p align="center"><span class="Estilo2"><strong>Paginas '.$paging->fetchNavegacion().'</strong></span></p>';
  15. mysql_free_result($result);//<-- de donde sale result, no sería result2 pero si es el 2do. este ya no va.
de cualquier manera aquí hay un poco mas de [URL="http://phppaging.phperu.net/"]info[/URL]
saludos.
epa ya funciono, gracias eits ¡¡¡ .....

mira ese (mysql_free_result($result); sale de mas arriba q apertura la conexion y la tabla noticias, pero esta bien ? aunque asi si va normal...

Código PHP:
<?php

include("conexiones.php");

//hacemos las consultas
$result=mysql_query("select * from noticias order by fecha Asc"$connect);
$totalregistros=mysql_num_rows($result);
?>
y dime pq qitaste el otro while me podrias explicar un poqito soy un poco nuevo en php

salu2
  #14 (permalink)  
Antiguo 12/03/2010, 13:55
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

no te olvides de cerrar el hilo
  #15 (permalink)  
Antiguo 12/03/2010, 14:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por dantrix Ver Mensaje
no te olvides de cerrar el hilo
?disculpa a q te refieres je

salu2
  #16 (permalink)  
Antiguo 12/03/2010, 16:34
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cita:
Iniciado por moz90 Ver Mensaje
y dime pq qitaste el otro while me podrias explicar un poqito soy un poco nuevo en php
lo quite porque estaba de mas en el código que habias dado, luego que mostraste la otra parte, lo confirme

tanto esto
Código PHP:
Ver original
  1. "select * from noticias order by fecha Asc", $connect[);
como esto
Código PHP:
Ver original
  1. $paging->agregarConsulta("select * from noticias order by fecha Desc");
son lo mismo, la única diferencia es el orden, y solo te sirve para obtener el total de noticias, pero ese numero no era el que te interesaba, el que te interesa es
Código PHP:
Ver original
  1. result2=mysql_query('select * from comentarios where id_noticia='.$row["id_noticia"]);
así que mientras se recorre el array de tu primera consulta, vas revisando cuantos comentarios tiene cada noticia en base al id

no soy bueno para las explicaciones
espero no confundirte mas
saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #17 (permalink)  
Antiguo 12/03/2010, 17:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

vale eitis, gracias pos si era innecesario creo q no dejaba contabilizar a la variable $totalcomentarios

gracias ¡¡¡
  #18 (permalink)  
Antiguo 13/03/2010, 09:27
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

Cerrar el hilo, colocarlo como resuelto
  #19 (permalink)  
Antiguo 13/03/2010, 10:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 15 años
Puntos: 0
Respuesta: Que esta Mal Aqui ? Ayuda ¡¡

hola weno gracias a todos, problema resuelto =)

Etiquetas: mal
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:20.