Foros del Web » Programando para Internet » PHP »

PHP OO Post relacionados

Estas en el tema de Post relacionados en el foro de PHP en Foros del Web. Hola Tengo una web tipo 2.0 en php (parecida a T!) y tengo un problema al hacer una llamada de "Post Relacionads" no encuentro cual ...
  #1 (permalink)  
Antiguo 10/04/2011, 13:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación Post relacionados

Hola Tengo una web tipo 2.0 en php (parecida a T!) y tengo un problema al hacer una llamada de "Post Relacionads" no encuentro cual puede ser el error asi qeu recurri a pedir ayuda esto es lo que tengo en related-posts.php+

<?php
// Comprobar si accede directamente
if(!defined($config['define'])) { header('Location: /index.php'); }
// 360 303 303
if($_GET['title'] && $_GET['id']) {
$title = mysql_clean(str_replace('-', ' ', $_GET['title']));
$rq = (substr_count($title, ' ') == 0 ? "SELECT title, id, cat, MATCH(title, message) AGAINST('".$title."') AS score FROM `posts` WHERE (title LIKE '%".$title."%' OR message LIKE '%".$title."%')" : "SELECT *, MATCH(title, message) AGAINST('".$title."') AS score FROM `posts` WHERE MATCH(title, message) AGAINST('".$title."')");
$rq .= " && id != '".mysql_clean($_GET['id'])."' ORDER BY score DESC LIMIT 10";
$rquery = mysql_query($rq);
while($relatedpost = mysql_fetch_array($rquery)) {
$relatedcat = mysql_fetch_array(mysql_query("SELECT urlname, name FROM `categories` WHERE id = '".$relatedpost['cat']."'"));
echo '<li class="categoriaPost '.$relatedcat['urlname'].'"><a href="/posts/'.$relatedcat['name'].'/'.$relatedpost['id'].'/'.url($relatedpost['title']).'.html">'.htmlspecialchars($relatedpost['title']).'</a></li>';
}
} // title
?>

(tengo URL amigables)

En la base de datos tengo las tablas

categories (id, name, urlname)
posts (id, title, cat, message)

y el error que me da es el siguiente:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home3/memoskpo/public_html/related-posts.php on line 10

y aparentemente tengo todo en la base de datos y hay suficientes post como para relacionarlos, alguiewn tiene idea que puede ser? Desde ya muchas gracias!
  #2 (permalink)  
Antiguo 10/04/2011, 14:21
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Post relacionados

Eso pasa porque la consulta tiene errores, para saber que de se trata y de ahi buscar la solucion:

$rquery = mysql_query($rq) or die('Error en la consulta: ' . mysql_error());
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/04/2011, 14:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Post relacionados

Mil y un millon de gracias por tu respuesta. Sinceramente no entendi, es que no soy programador, soy una especie de.....inutil que investiga y le salen las cosas por logica o meter mano (hago todo con logica y razonamiento y de pedo me salen las cosas) y no entendi el error que me marcaste. Pero te agradezco igual!
  #4 (permalink)  
Antiguo 10/04/2011, 16:10
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 10 meses
Puntos: 13
Respuesta: Post relacionados

Podrías hacerle un echo a una de las consultas y pegárnosla? (tb si usas las etiquetas para poner código php en tus mensajes del foro, los veremos así)


Código PHP:
<?php
// Comprobar si accede directamente
if(!defined($config['define'])) { header('Location: /index.php'); }
// 360 303 303
if($_GET['title'] && $_GET['id']) {
$title mysql_clean(str_replace('-'' '$_GET['title']));
$rq = (substr_count($title' ') == "SELECT title, id, cat, MATCH(title, message) AGAINST('".$title."') AS score FROM `posts` WHERE (title LIKE '%".$title."%' OR message LIKE '%".$title."%')" "SELECT *, MATCH(title, message) AGAINST('".$title."') AS score FROM `posts` WHERE MATCH(title, message) AGAINST('".$title."')");
$rq .= " && id != '".mysql_clean($_GET['id'])."' ORDER BY score DESC LIMIT 10";
$rquery mysql_query($rq);
while(
$relatedpost mysql_fetch_array($rquery)) {
$relatedcat mysql_fetch_array(mysql_query("SELECT urlname, name FROM `categories` WHERE id = '".$relatedpost['cat']."'"));
echo 
'<li class="categoriaPost '.$relatedcat['urlname'].'"><a href="/posts/'.$relatedcat['name'].'/'.$relatedpost['id'].'/'.url($relatedpost['title']).'.html">'.htmlspecialchars($relatedpost['title']).'</a></li>';
}
// title
?>
Así es más cómodo (de hecho, lo voy a leer ahora xD)
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #5 (permalink)  
Antiguo 10/04/2011, 16:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 5
Antigüedad: 14 años, 1 mes
Puntos: 0
Exclamación Respuesta: Post relacionados

Que es lo que necesitas exactamente? una captura de la base de datos? si es asi, te paso la de las categorias y la de los post? o solo la de los post?

Otra vez un millon de gracias por responder y por tomarte el tiempo de responderme.
  #6 (permalink)  
Antiguo 13/04/2011, 00:49
 
Fecha de Ingreso: abril-2011
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Post relacionados

Cita:
Iniciado por Triby Ver Mensaje
Eso pasa porque la consulta tiene errores, para saber que de se trata y de ahi buscar la solucion:

$rquery = mysql_query($rq) or die('Error en la consulta: ' . mysql_error());



Lo que te esta solicitando el amigo aca que agregues lo que esta en rojo al final de tu consulta para que te diga que problemas tiene la misma y buscarlo por ahi.

Etiquetas: 2.0, post, relacionados, related
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 01:02.