Foros del Web » Programando para Internet » PHP »

Mostrar Resultados Mysql (me come 1 registro)

Estas en el tema de Mostrar Resultados Mysql (me come 1 registro) en el foro de PHP en Foros del Web. Me tendria que mostrar 2 busquedas, pero solo muestra 1. Alguien sabe por que?. Código: <?php include 'inc/conexion.php'; $tabla = "post"; if (isset ($_POST['buscar'])) { ...
  #1 (permalink)  
Antiguo 02/11/2012, 07:18
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 14 años
Puntos: 1
Mostrar Resultados Mysql (me come 1 registro)

Me tendria que mostrar 2 busquedas, pero solo muestra 1.

Alguien sabe por que?.

Código:
<?php
include 'inc/conexion.php';
$tabla = "post";
if (isset ($_POST['buscar'])) {
$palabra = $_POST['palabra'];
$sql = mysql_query("SELECT * FROM ".$tabla." WHERE message LIKE '%".$palabra."%' OR title LIKE '%".$palabra."%'");
if (mysql_fetch_array($sql) <= 0) {
echo "No se encontraron resultados con el termino ".$palabra;
}
else {

while ($row = mysql_fetch_array($sql)) {
echo $row['message']."<br/>";
echo $row['title']."<br/>";
}
}
}
else {
?>
<form action="<? $PHP_SELF ?>" method="post">
<basefont face="Verdana" size="2">Introduce el termino a buscar: <input type="text" name="palabra">
<br><br>
<input type="hidden" name="buscar">
<input type="submit" name="buscar">
</form>
<?php
}
?>
  #2 (permalink)  
Antiguo 02/11/2012, 07:30
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

el problema lo tienes en esta linea
if (mysql_fetch_array($sql) <= 0) {

cada vez que llamas a mysql_fetch_array obtiene la primera fila de resultados la almacena en un array y la elimina del resultado de la consulta por lo que cuando tiras a utilizar los valores con $row, ya son los del segundo resultado

para eso te vendrá mejor algo del estilo

if (mysql_num_rows($sql) > 0) {


ahi únicamente cuentas las lineas que tienes en el resultado
  #3 (permalink)  
Antiguo 02/11/2012, 07:30
Avatar de llorcasantana  
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

desde donde veo solo le estas haciendo una consulta no dos. que quieres mostrar exactamente??
  #4 (permalink)  
Antiguo 02/11/2012, 07:41
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 14 años
Puntos: 1
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

Todos los resultados de esa palabra.

Cita:
Iniciado por juanito1712 Ver Mensaje
el problema lo tienes en esta linea
if (mysql_fetch_array($sql) <= 0) {

cada vez que llamas a mysql_fetch_array obtiene la primera fila de resultados la almacena en un array y la elimina del resultado de la consulta por lo que cuando tiras a utilizar los valores con $row, ya son los del segundo resultado

para eso te vendrá mejor algo del estilo

if (mysql_num_rows($sql) > 0) {


ahi únicamente cuentas las lineas que tienes en el resultado
Muchas gracias.

Y si quiero buscar los de un TAG, como hago para que busque entre "," "amor, odio"
  #5 (permalink)  
Antiguo 02/11/2012, 07:50
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

no acabo de ver muy clara la pregunta pero por poner algun ejemplo para ver como está montado eso

¿tienes una tabla noticias con su campo noticia y con su campo tags y en tags guardas todos los tags separados por comas?
  #6 (permalink)  
Antiguo 02/11/2012, 07:51
Avatar de llorcasantana  
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 6 meses
Puntos: 2
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

www.misitio.com/search.php?tags=amor&tags=odio y asi susesivamente

Ahora, ten encuenta que a la horade hacer el link debes hacer que cada tags salgan en el link.

y listo. el search.php lo modificarias para que te obtuviera los resultados de

www.misitio.com/search.php?tags=amor&tags=odio

o simplemente

www.misitio.com/search.php?tags=amor

Última edición por llorcasantana; 02/11/2012 a las 08:00
  #7 (permalink)  
Antiguo 02/11/2012, 11:37
Avatar de Pafate  
Fecha de Ingreso: mayo-2010
Mensajes: 232
Antigüedad: 14 años
Puntos: 1
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

ALgo asi pero distinto.
Yo tengo mi tabla donde se guarda ID, POST,Autor,Mensaje y Tags
En los tags voy a encontrar algo como: Como Cuidar un perro, Cuidados de los perros, Comida para perro.

Ejemplo entonces eso se va a gardar Tag = Como Cuidar un perro, Cuidados de los perros, Comida para perro.

Aunque mediante voy escribiendo esto me doy cuenta que puedo usar % palabra % (no importa antes y no importa despues) y buscar sin importar las ",".

Pero para afinar un poco... si yo quiero que tome hasta una coma. la meto en un array
Array{ 1=> Amor 2=> Odio 3=>Paz} como hago para que detecte solo "amor" no amor de los caidos o lo que sea... sino cuando esta escrito AMOR como palabra completa (seria que tome la palabra de coma a coma ",amor, amor de los caidos, caidos" (ahi serian maximo 3 busquedas)

Creo que me explique mas o menos.

En sintesis... Si buscan Amor de los caidos y tengo estos tags "amor, odio" que no salga el tag Amor. pero si buscan "Amor" solo si encuentre el tag.
Que agarre la frase completa para la busqueda.

PD: Esto de ir pensando mientras escribo no rinde :p
  #8 (permalink)  
Antiguo 02/11/2012, 11:56
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años
Puntos: 66
Respuesta: Mostrar Resultados Mysql (me come 1 registro)

entonces tienes mal planteada tu estructura de tablas

debes de tener una tabla con ID, POST,Autor,Mensaje que es donde guardaras las noticias o lo que sea

otra que tenga id,tag, que será una lista con todos los tags disponibles

y otra con idPost,IdTag que es donde se almacenaran las relaciones

algo como la relacion varios a varios que tienes en este manual
http://www.aulapc.es/ofimatica_acces_relaciones.html

y a partir de ahi puedes obteener todos los posts de un tag en particular y gracias a las relaciones entre tablas el contenido concreto de cada post

Etiquetas: mysql, resultados, sql, tabla
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:32.