Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con la consulta

Estas en el tema de Problema con la consulta en el foro de Mysql en Foros del Web. Hola a todos haber si alguien me puede solucionar el problemilla que tengo. He creado un sistema noticias, dedes un panel de administracion... un conteo ...
  #1 (permalink)  
Antiguo 05/08/2011, 00:58
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Pregunta Problema con la consulta

Hola a todos haber si alguien me puede solucionar el problemilla que tengo.

He creado un sistema noticias, dedes un panel de administracion... un conteo de mensajes para cada noticia, calificacion para cada noticia, etc...

Pero a la hora de mostrar los comentarios de cada usuario todos me aparecen iguales (usuario, permisos, puntos y total de posts)



Como se puede apreciar en la captura, un usuarios es djboro y es ADMIN y otro es paco que es Usuario registrado.

Por lo que se ve el fallo esta en la consulta o en el while...
Solo me carga los datos del último mensaje.

La tabla es la siguiente.

COMENTARIOS
idcomentarios, idnoticias, idusuarios, comentario, fecha

Os dejo el codigo de los ver-noticia.php y comentarios.php:
Código PHP:
<?php
session_start
();

include(
"config.php");

$id $_GET['id']; //ID DE LA NOTICIA

//CARAGAR DATOS DESDE BD
$sql_ver mysql_query("SELECT * FROM noticias WHERE idnoticias='$id' ORDER BY fecha DESC");
$noticia mysql_fetch_array($sql_ver);

//CONTAR TOTAL COMENTARIOS
$sql "SELECT idcomentarios FROM comentarios WHERE idnoticias='$id'";
$result mysql_query($sql);
$numero mysql_num_rows($result);

//DATOS DE LOS COMENTARIOS
$sql_dat_coment mysql_query("SELECT * FROM comentarios WHERE idnoticias='$id'");
$datos mysql_fetch_array($sql_dat_coment);

$idusuariocoment $datos['idusuarios'];

//ID DE USUARIOS
$sql_usuario mysql_query("SELECT nick, avatar, tpost, puntos, estado FROM usuarios, comentarios, noticias WHERE usuarios.idusuarios=comentarios.idusuarios");
$usuario mysql_fetch_array($sql_usuario);

$puntos $usuario['puntos'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN" lang="EN" dir="ltr">
<title>FORMAT HOME: <?php if(!isset($id)){ echo "Todas las Noticias y Novedades";
 }else{ echo 
$noticia['titulo']; } ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<link rel="stylesheet" href="styles/layout.css" type="text/css" />

<!-- COMENTARIOS -->
<script type="text/javascript" src="editor/nicEdit.js"></script>
<script type="text/javascript">
bkLib.onDomLoaded(function() {
new nicEditor({fullPanel : true}).panelInstance('area1');
});
</script>

</head>
<body id="top">

<!-- BIENVENIDO E IDIOMA -->
<?php include('logidioma.php'); ?>

<!-- TITULO -->
<?php include('titulologo.php'); ?>

<!-- MENU SUPERIOR -->
<div class="wrapper col3">
  <div id="topnav">
    <ul>
      <li><a href="index.php">Inicio</a><span>Página Principal</span></li>
      <li class="active"><a href='ver-noticia.php'>Noticias</a><span>noticias y novedades</span></li>
      <?php if(!isset($_SESSION["nick"])){
echo 
"<li><a href='conectarse.php'>Conectarse</a><span>Iniciar Sesión</span></li>";
echo 
"<li><a href='registro.php'>Registrarse</a><span>crear nueva cuenta</span></li>";
} else {
echo 
"<li><a href='mi-perfil.php'>Mi Perfil</a><span>editar detalles</span></li>";
echo 
"<li><a href='canjear-puntos.php'>Cajero</a><span>canjea tus puntos</span></li>";
echo 
"<li><a href='cerrar-sesion.php'>Cerrar Sesión</a><span>desconectarme</span></li>";
}
?>
    </ul>
    <br class="clear" />
  </div>
</div>

<!-- LEER NOTICIA COMPLETA -->
<div class="wrapper col5">
  <div id="container">
    <div id="content">

    <?php if(isset($id)){
        echo 
"";
    }else{
    
//Sentencia sql (sin limit)
    
$_pagi_sql "SELECT * FROM noticias ORDER BY fecha DESC";

    
//cantidad de resultados por página (opcional, por defecto 20)
    
$_pagi_cuantos 10;

    
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
    
include("paginator.inc.php");

    echo 
"<h2>Todas las Noticias y Novedades</h2>";
    echo 
"<table border='0'><tr style='background:#4C4C4E; color:#fff;'>";
    echo 
"<td width='10%' align='center'><b>Imágen</b></td>";
    echo 
"<td width='25%' align='center'><b>Título</b></td>";
    echo 
"<td width='60%' align='center'><b>Descripción</b></td>";
    echo 
"<td width='5%' align='center'><b>Opciones</b></td>";
    echo 
"</tr>";
    
    
//Leemos y escribimos los registros de la página actual
    
while($row mysql_fetch_array($_pagi_result)){
    
    echo 
"<tr><td align='center'><img src='".$row['imagen']."' width='45' ></td>";
    echo 
"<td align='center'><p><strong>".$row['titulo']."</p></strong></td>";
    echo 
"<td align='center'><p>".$row['breve']."</p></td>";
    echo 
"<td align='center'><a href='ver-noticia?id=".$row['idnoticias']."'><img src='images/varios/leer.gif' alt='Leer Noticia' title='Leer Noticia'></a></td></tr>";
    }
    
    echo 
"</table>";
    
//Incluimos la barra de navegación
    
if ($_pagi_totalPags == '1'){
    echo 
"";
        }else{
        echo
"<p>".$_pagi_navegacion."</p>"
    }
    }
    
?>
    
<h2><?php if(isset($id)) echo $noticia['titulo']; ?></h2>
<table width="100%" border="0">
  <tr>
    <td rowspan="3" width="5%" style="vertical-align:top;" align="center">
    <img src="<?php echo $noticia['imagen']; ?>" width='100' alt="<?php echo $noticia['titulo']; ?>" title="<?php echo $noticia['titulo']; ?>">
    <br>
    <br>    
    
    <?php if(isset($_SESSION["nick"])){
    echo 
"<a href='puntunegativo?noticia=".$noticia['idnoticias']."' target='_blank' onClick=\"window.open(this.href, this.target, 'width=550,height=140'); return false;\"><img src='images/varios/negativo.gif' alt='Voto Negativo' title='Voto Negativo'></a> ";
    
    if(
$noticia['puntua'] == '0'){
    echo 
"<font size='3' color='#000000'><b>".$noticia['puntua']."</b></font>";
        }else if(
$noticia['puntua'] > '0'){
    echo 
"<font size='3' color='green'><b>".$noticia['puntua']."</b></font>";
            }else{
                echo 
"<font size='3' color='#FF0000'><b>".$noticia['puntua']."</b></font>";
                }
                
    echo 
" <a href='puntupositivo?noticia=".$noticia['idnoticias']."' target='_blank' onClick=\"window.open(this.href, this.target, 'width=550,height=140'); return false;\"><img src='images/varios/positivo.gif' alt='Voto Positivo' title='Voto Positivo'></a>";
    }
    
?>
    
    </td>
    <td width="65%"><b><?php echo $noticia['breve']; ?></b></td>
    <td width="30%" align="right"><?php if(isset($id)) echo "Publicado: ".$noticia['fecha']; ?></td>
  </tr>
  <tr>
    <td colspan="3" style="text-align:justify;"><?php echo $noticia['mensaje']; ?></td>
  </tr>
  <tr>
    <td colspan="2"><?php if(isset($id)) echo "<b><i>Comentarios</i> (".$numero.")</b>"?></td>
  </tr>
</table>

<!-- SOLO LOS USUARIOS REGISTRADOS PUEDEN COMENTAR -->
<?php
if(isset($id))
    if(!isset(
$_SESSION["nick"])){
    echo 
"<b>Solo los <a href='registro.php'>Usuarios Registrados</a> pueden comentar las noticias.</b>";
    echo 
"<br><br>";
        }else{
        echo 
"<h2>Escribir Comentario</h2>";
        echo 
"<form method='POST' action='comentar.php'>";

        
//CAMPOS OCULTOS
        
echo "<input type='hidden' id='idnoticia' name='idnoticia' value='".$id."'>";
        echo 
"<input type='hidden' id='tpost' name='tpost' value='".$usuario['tpost']."'>";
        echo 
"<input type='hidden' id='puntos' name='puntos' value='".$usuario['puntos']."'>";

        
//CAMPO DEL COMENTARIO
        
echo "<textarea id='area1' name='texto' cols='65' rows='8' style='width:100%;'></textarea>";
        echo 
"<br><div align='right'><input type='submit' name='enviar' id='enviar' value='Enviar Comentario'/></div></form>";
        }
?>

<!-- COMENTARIOS -->
<?php include('comentarios.php'); ?>

    </div>

<!-- NOTICIAS -->
<?php include('noticias.php');     ?>
    
    <br class="clear" />
  </div>
</div>

<!-- FOOTER -->
<?php include('footer.php'); ?>

<!-- COPYRIGHT -->
<?php include('copyright.php'); ?>

</body>
</html>
comentarios.php
Código PHP:
<?php
//Sentencia sql (sin limit)
$_pagi_sql "SELECT * FROM comentarios WHERE idnoticias='$id' ORDER BY idcomentarios DESC";

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 5;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//Leemos y escribimos los registros de la página actual
if(isset($id))
    if (
$datos['idcomentarios'] == NULL OR ''){
    echo 
"<h2>No hay comentarios</h2>";
        }else{
        echo 
"<a name='nuevo' style='color:#666666;'><h2>Comentarios</H2></a>";
        }

while(
$datos mysql_fetch_array($_pagi_result)){

echo 
"<table width='100%' style='border: 1px solid' cellpadding='0' cellspacing='0'>";
echo 
"<tr style='background:#4C4C4E; color:#fff;'>";
echo 
"<td width='12%' align='center'>".$usuario['nick']."</td>";
echo 
"<td width='40%'>";
    
    switch (
$usuario['estado']) {
        case 
'1':
            echo 
"<b>Usuario Registrado</b>";
        case 
'9':
            echo 
"<font color='#FF3F4C'><b>Administrador</b></font color>";
    }

echo 
"</td>";
echo 
"<td width='18%'>Posts: ".$usuario['tpost']."</td>";
echo 
"<td width='18%'>Puntos: ".$usuario['puntos']."</td>";
echo 
"</tr>";
echo 
"<tr>";
echo 
"<td width='12%' rowspan='2' style=vertical-align:top;'><img src='".$usuario['avatar']."' width='80'></td>";
echo 
"<td style='text-align:justify;' colspan='3'>".$datos['comentario']."</td>";
echo 
"</tr>";
echo 
"<tr>";
echo 
"<td colspan='3' align='right'>Publicado: ".$datos['fecha']."</td>";
echo 
"</tr>";
echo 
"</table>";
}
//Incluimos la barra de navegación siempre y cuando tenga como mínimo la cantida deseada.
if ($_pagi_totalPags == '1'){
echo 
"";
}else{
echo
"<p>".$_pagi_navegacion."</p>"

?>
Espero vuestras soluciones...
  #2 (permalink)  
Antiguo 05/08/2011, 01:53
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema con la consulta

He modificado el comentarios.php
Código PHP:
<?php

//Sentencia sql (sin limit)
$_pagi_sql "SELECT * FROM comentarios WHERE idnoticias='$id' ORDER BY idcomentarios DESC";

//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 5;

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

//Leemos y escribimos los registros de la página actual
if(isset($id))
    if (
$datos['idcomentarios'] == NULL OR ''){
    echo 
"<h2>No hay comentarios</h2>";
        }else{
        echo 
"<a name='nuevo' style='color:#666666;'><h2>Comentarios</H2></a>";
        }
        
while(
$datos mysql_fetch_array($_pagi_result)){

    
//USUARIOS
    
$sql_usuario mysql_query("SELECT nick, avatar, tpost, puntos, estado FROM usuarios");
        while(
$usuario mysql_fetch_array($sql_usuario)){

echo 
"<table width='100%' style='border: 1px solid' cellpadding='0' cellspacing='0'>";
echo 
"<tr style='background:#4C4C4E; color:#fff;'>";
echo 
"<td width='12%' align='center'>".$usuario['nick']."</td>";
echo 
"<td width='40%'>";
    
    switch (
$usuario['estado']) {
        case 
'1':
            echo 
"<b>Usuario Registrado</b>";
            break;
        case 
'9':
            echo 
"<font color='#FF3F4C'><b>Administrador</b></font color>";
            break;
    }

echo 
"</td>";
echo 
"<td width='18%'>Posts: ".$usuario['tpost']."</td>";
echo 
"<td width='18%'>Puntos: ".$usuario['puntos']."</td>";
echo 
"</tr>";
echo 
"<tr>";
echo 
"<td width='12%' rowspan='2' style=vertical-align:top;'><img src='".$usuario['avatar']."' width='80'></td>";
echo 
"<td style='text-align:justify;' colspan='3'>".$datos['comentario']."</td>";
echo 
"</tr>";
echo 
"<tr>";
echo 
"<td colspan='3' align='right'>Publicado: ".$datos['fecha']."</td>";
echo 
"</tr>";
echo 
"</table>";
}
}
//Incluimos la barra de navegación siempre y cuando tenga como mínimo la cantida deseada.
if ($_pagi_totalPags == '1'){
echo 
"";
}else{
echo
"<p>".$_pagi_navegacion."</p>"

?>
Ya sale algo, pero no queda como debe ser.
Ahora me salen repetidos...



Si alguien sabe como eliminar los dos del centro...
Saludos y Espero las vuestra ayuda...
  #3 (permalink)  
Antiguo 05/08/2011, 03:49
Avatar de djboro88  
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 180
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Problema con la consulta

¡¡¡ Ya he conseguido la consulta correcta !!!
Pueden cerrar el tema si kieren.

Etiquetas: comentarios, php
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 05:47.