Problema con PHP

Sourcegeek

Lanero Novato
7 May 2009
1
Hola, soy nuevo por aca, espero puedan ayudarme, bueno,
aqui va mi problema:

Tengo una web en PHP, corriendo en mi pc, es un Sistema de usuarios
con un sistema de noticias, entonces como los tenia separados, los
estoy juntando.
En el index.php tengo una variable que checa si el usuario esta logueado
o no, si no lo esta muestra un formulario de login, pero si lo esta muestra
perfil y todo eso, entonces conecta a la base de datos y hace la consulta
para obtener cuandos mensajes privados tiene el usuario y mostrarlos.
Ahora, para mostrar las noticias hago un INCLUDE a noticias.php que
tambien conecta a la BD y hace unas consultas para mostrar las noticias,
pero el problema es que index.php me muestra un error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in NOMEDEJOINCLUIRENLACES on line 56

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in NOMEDEJOINCLUIRENLACES on line 67

Al parecer son errores con los bucles que uso en noticias.php para
mostrar las noticias, lo raro es que si entro directamente a noticias.php
todo sale bien!..

Aca muestro el codigo de ambos:


Index.php
Código:
<?php
{
include("config.php");
include("pfvariables.php");
}
$separador = " \x1F \x1F";
$separador2 = "\x1F \x1F \x1F \x1F \x1F \x1F \x1F";

if($_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[contrasena]){

# Mensajes

{ 
$msg_query = mysql_query("SELECT * FROM mensajes WHERE nuevo='0' and destinatario='$_COOKIE[nick]'");
$nuevos = mysql_num_rows($msg_query);

$msg2_query = mysql_query("SELECT * FROM mensajes WHERE destinatario='$_COOKIE[nick]'");
$total = mysql_num_rows($msg2_query);

}


echo ' <center>';
echo _BIENVENIDO.", <b>".$_COOKIE[nick]."</b>";
echo ' <br>';
echo"<a href=".$pagina."?".$get."=perfil>"._EDITAR_PERFIL."</a>";
echo $separador2;
echo $separador2;
if($puntos == "si"){

echo"<a href=\"javascript:;\" onClick=\"window.open('puntos.php?show=puntos','','resizable=no, height=120, width=300,screenX=250,screenY=300,top=200,left=250');\">"._PUNTOS_TITULO."</a>";

}
echo $separador2;
echo $separador2;
echo"<a href=".$pagina."?".$get."=mensajes>"._MENSAJES_PRIVADOS."</a> (".$nuevos."/".$total.")";
echo $separador2;
echo $separador2;
echo"<a href=desconectar.php>"._DESCONECTAR."</a>";
echo ' </center>';


} else {
echo ' <center>';
echo _BIENVENIDO.", <b>"._ANONIMO."</b>";
 echo"<form name=\"Login\" method=\"post\" action=\"entrar.php\">";
echo"  "._USUARIO_LOGIN."";
echo"<input type=\"text\" name=\"username\" id=\"username\" value=\"".$_GET[nick]."\">";
echo"  "._CONTRASENA_LOGIN."";
echo"<input type=\"password\" name=\"password\" id=\"password\" value=\"".$_GET[contrasena]."\">";
echo"<input type=\"submit\" name=\"entrar\" value=\""._LOGIN."\">";
echo $separador2;
echo"<a href=".$pagina."?".$get."=registro>Registrar</a>";
echo $separador;
echo"<a href=".$pagina."?".$get."=contrasena>"._CONTRASENA."</a>";


}
?>

<? include ('noticias.php');?>


Noticias.php
Código:
<?

function conectar() 
{ 
    $base_de_datos = "noticias";
    $db_usuario = "root"; 
    $db_password = "******"; 
   
    if (!($link = mysql_connect("localhost", $db_usuario, $db_password))) 
    { 
        echo "Error conectando a la base de datos."; 
        exit(); 
    } 
    if (!mysql_select_db($base_de_datos, $link)) 
    { 
        echo "Error seleccionando la base de datos."; 
        exit(); 
    } 
    return $link; 
} 

$db = conectar();


$registros = 3;

if (!$pagina) { 
    $inicio = 0; 
    $pagina = 1; 
} 
else { 
    $inicio = ($pagina - 1) * $registros; 
} 


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "OTROENLACE">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Noticias</title>
<style>
    body { font-family: arial; font-size:12px}
</style>
</head>

<body>
    <?
    $resultados = mysql_query("SELECT id_noticia FROM noticias WHERE visible = 1");
    $total_registros = mysql_num_rows($resultados); 
    $resultados = mysql_query("SELECT * FROM noticias WHERE visible = 1 ORDER BY fecha DESC LIMIT $inicio, $registros");    
    $total_paginas = ceil($total_registros / $registros);                       

    if($total_registros) {
    
        while($row=mysql_fetch_array($resultados)) {
            
echo "<hr><b><span class='Estilo60'>$row[titulo]</span><br><p>$row[avance]</p><br><div align='center'><b>$row[autor] | $row[fecha] | $row[categoria] |
<a href='ver.php?id=$row[id_noticia]'>VER</B></div></a><br> <hr>";
            
        }
        
    } else {
        echo "<font color='darkgray'>(sin resultados)</font>";
    }
    
    mysql_free_result($resultados);                
    
    if($total_registros) {
        
        echo "<center>";
        
        if(($pagina - 1) > 0) {
            echo "<a href='noticias.php?pagina=".($pagina-1)."'>< Anterior</a> ";
        }
        
        for ($i=1; $i<=$total_paginas; $i++){ 
            if ($pagina == $i) {
                echo "<b>".$pagina."</b> "; 
            } else {
                echo "<a href='noticias.php?pagina=$i'>$i</a> "; 
            }    
        }
      
        if(($pagina + 1)<=$total_paginas) {
            echo " <a href='noticias.php?pagina=".($pagina+1)."'>Siguiente ></a>";
        }
        
        echo "</center>";
        
    }

    ?>
</body>
</html>



Saludos y gracias!
 
buenos dias a todos...
tengo un pequeño problema y me gustaria saber si alguien me puede ayudar...
necesito hacer una paguina en la cual se manejen botones de tal forma que al dar click en uno de ellos me realize una accion...
me han dicho que es con la opcion click button pero no se como funciona o como se maneja, si alguien sabe y me puede colaborar se lo agradeceria.....
gracias....
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

este mensaje sale a menudo cuando escribes el nombre de un campo o una tabla mal escrito, osea no es erro de sintaxis sino de nombres...

verifica tu codigo por partes, si al final no ves nada raro.. cambia la sentencia a : mysql_fetch_row()

y la signacion cambia por ejemplo de row['nombre'] a row[1], siendo nombre la segunda columna a consultar de la tabla, (la primera es 0)
 

Los últimos temas