Foros del Web » Programando para Internet » PHP »

un problemilla

Estas en el tema de un problemilla en el foro de PHP en Foros del Web. hola : bueno tengo que hacer una buscador a mi pagina y, si me ayudan.. tengo una base con titulos autores e imagenes como realizar ...
  #1 (permalink)  
Antiguo 26/11/2009, 08:55
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
un problemilla

hola :

bueno tengo que hacer una buscador a mi pagina y, si me ayudan..

tengo una base con titulos autores e imagenes

como realizar un buscador que traiga los titulos coincidentes y un link hacia la imagen y su caracteristicas.

podrian orientarme?

muchas gracias
  #2 (permalink)  
Antiguo 26/11/2009, 09:50
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Te conviene usar campos FULLTEXT para rankear la búsqueda. Hay información de sobra dando vueltas por internet; investiga, elabora un script y cualquier problema lo posteas y te ayudamos. Por otro lado, intenta tener títulos un poquito más descriptivos para los temas que abras. ¡Suerte!
  #3 (permalink)  
Antiguo 26/11/2009, 10:20
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

Gracias muchacho
  #4 (permalink)  
Antiguo 26/11/2009, 10:27
Avatar de gigoz  
Fecha de Ingreso: noviembre-2009
Mensajes: 106
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: un problemilla

El Buscador lo puede realizar simplemente con una consulta sql con un LIKE


select titulos,autor,imagenes from datos where titulos LIKE '%$titulo%'


dentro % % le pasa la variable del dato que estas buscando y asi el te retornara los datos que encuente en la base de datos.

Despues es solo pintarlos y listo
  #5 (permalink)  
Antiguo 26/11/2009, 10:32
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Cita:
Iniciado por gigoz Ver Mensaje
El Buscador lo puede realizar simplemente con una consulta sql con un LIKE


select titulos,autor,imagenes from datos where titulos LIKE '%$titulo%'


dentro % % le pasa la variable del dato que estas buscando y asi el te retornara los datos que encuente en la base de datos.

Despues es solo pintarlos y listo
Sí, pero si tiene los campos como índices FULLTEXT la búsqueda será más rápida y podrá ordenar los resultados según su relevancia. ¡Suerte!
  #6 (permalink)  
Antiguo 26/11/2009, 12:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

...
tengo en un campo de la tabla
una imagen que se llama "88888888" y una carpeta con la imagen "88888888"

como la llama?

cuando aparece el resultado de la busqueda, como hacer link sobre el y que me envia a la pagina donde aparezca el titulo el autor y la imagen?

como le hago?
gracias
  #7 (permalink)  
Antiguo 26/11/2009, 12:30
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Primero debes hacer la búsqueda sobre la base de datos según lo que te traigas del formulario de búsqueda... luego listar los resultados y que todos apunten a una página (por ejemplo 'detalle.php') a la que le pasas el identificador de la foto por GET para luego recuperarla y mostrarla. Así lo haría yo. Sé un poquito más específico y postea tu código o no podremos ayudarte. ¡Suerte!
  #8 (permalink)  
Antiguo 26/11/2009, 12:39
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

codigo formulario

<form action="zresultados.php" method="post">
<input name="frase" type=text size="20" maxlength="20" />
<input name="buscar" type=submit id="buscar" value="Buscar">
</form>


codigo zresultado.php quiero perfeccionarlo/ pintarlo


<?php

// conectar al servidor

$server_link = mysql_connect("localhost", "root", "etisdemian");

if(!$server_link){

die("Falló la Conexión ". mysql_error());

}

// seleccionamos la base de datos

$db_selected = mysql_select_db("based", $server_link);

if(!$db_selected){

die("No se pudo seleccionar la Base de Datos ". mysql_error());

}

// varificamos que el formulario halla sido enviado

if(isset($_POST['buscar']) && $_POST['buscar'] == 'Buscar'){

$frase = addslashes($_POST['frase']);

// hacemos la consulta de busqueda

$sqlBuscar = mysql_query("SELECT in_titulo, in_autor,

MATCH (in_titulo, in_autor)

AGAINST ('$frase' IN BOOLEAN MODE) AS in_ISBN

FROM inventario

WHERE MATCH (in_titulo, in_autor)

AGAINST ('$frase' IN BOOLEAN MODE)

ORDER BY in_ISBN DESC", $server_link)

or die(mysql_error());

$totalRows = mysql_num_rows($sqlBuscar);

// Enviamos un mensaje

// indicando la cantidad de resultados ($totalRows)

// para la frase busada ($frase)

if(!empty($totalRows)){

echo stripslashes("<p>Su búsqueda arrojó <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");

// mostramos los resultados

while($row = mysql_fetch_array($sqlBuscar)){

echo "<strong><a href='#'>$row[in_titulo]</a>:</strong> <em><br>Autor: ". round($row['in_ISBN']) ."</em>";

echo "<p>".substr(strip_tags($row['in_autor']), 0, 255)."...</p>";

}

}

// si se ha enviado vacio el formulario

// mostramos un mensaje del tipo Oops...!

elseif(empty($_POST['frase'])){

echo "Debe introducir una palabra o frase.";

}

// si no hay resultados

// otro mensaje del tipo Oops...!

elseif($totalRows == 0){

echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");

}

}

?>




en los espacios que dice in_ISBN antes decía "coincidencias" lo cambie para que apareciera el isbn pero no afecto en nada


ademas mi "in_id" comiena desde 536.234 en la tabla.
Seria eso un problema a futuro? como lo reseteo?sin perder los datos,claro
  #9 (permalink)  
Antiguo 26/11/2009, 12:56
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

En el SELECT agrega el campo "id" o como se llame en tu base (si no lo tienes agrégalo). Luego en los links pones:
Código PHP:
echo "<strong><a href='detalleFoto.php?id=".$row['id']."'>$row['in_titulo']</a>:</strong> <em><br>Autor: "round($row['in_ISBN']) ."</em>"
Luego, en la página detalleFoto.php usas ese id para consultar nuevamente la base y traer los datos que necesites. ¡Suerte!
  #10 (permalink)  
Antiguo 26/11/2009, 13:33
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

error




Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\xampp\htdocs\pruabaphp\zenkyu\zresultados .php on line 111




me parece que es problema de comillas,


como construyo detallefoto.php

me refiero a codigo...

gracias
  #11 (permalink)  
Antiguo 26/11/2009, 13:40
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Copia y pega las líneas 110, 111 y 112 de tu código para que podamos ver cuál es el error.
  #12 (permalink)  
Antiguo 26/11/2009, 13:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

echo "<strong><a href='detallefoto.php?id=".$row['id']."'>$row['in_titulo']</a>:</strong> <em><br>Autor: ". round($row['in_ISBN']) ."</em>";
  #13 (permalink)  
Antiguo 26/11/2009, 13:50
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Prueba así:
Código PHP:
echo "<strong><a href='detallefoto.php?id=".$row['id']."'>".$row['in_titulo']."</a>:</strong> <em><br>Autor: "round($row['in_ISBN']) ."</em>"
  #14 (permalink)  
Antiguo 26/11/2009, 14:04
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH (in_titulo, in_autor) AGAINST ('la' at line 3



se refiere a esto?


$sqlBuscar = mysql_query("SELECT in_titulo, in_autor, in_id

MATCH (in_titulo, in_autor)

AGAINST ('$frase' IN BOOLEAN MODE) AS in_ISBN

FROM inventario

WHERE MATCH (in_titulo, in_autor)

AGAINST ('$frase' IN BOOLEAN MODE)

ORDER BY in_ISBN DESC", $server_link)

or die(mysql_error());
  #15 (permalink)  
Antiguo 26/11/2009, 14:14
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Faltaba una coma después de "in_id":
Código SQL:
Ver original
  1. SELECT in_titulo, in_autor, in_id,
  2. MATCH (in_titulo, in_autor)
  3. AGAINST ('$frase' IN BOOLEAN MODE) AS in_ISBN
  4. FROM inventario
  5. WHERE MATCH (in_titulo, in_autor)
  6. AGAINST ('$frase' IN BOOLEAN MODE)
  7. ORDER BY in_ISBN DESC
¡Suerte!
  #16 (permalink)  
Antiguo 26/11/2009, 14:25
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

y ahora....como construyo el detalle foto?


asi


<?php
$foto = $_GET['in_id'];
// Configurar las dos lineas siguientes
$link = mysql_connect("localhost","root","etisdemian");
mysql_select_db("based");
$query = "SELECT in_titulo, in_autor, in_ISBN, in_image FROM inventario WHERE in_id = '$foto'";
$result = mysql_query($query);
$imagen = mysql_result($result,0);
Header( "Content-type: image/jpeg"); //------------>para que es esto?
echo $imagen;
?>


arroja error


Warning: mysql_result() expects parameter 1 to be resource, boolean given in C:\xampp\xampp\htdocs\pruabaphp\zenkyu\detallefoto .php on line 16

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\xampp\htdocs\pruabaphp\zenkyu\detallefoto .php:9) in C:\xampp\xampp\htdocs\pruabaphp\zenkyu\detallefoto .php on line 17
  #17 (permalink)  
Antiguo 26/11/2009, 14:40
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Dice que mysql_query te devolvió un booleano... seguramente es false y significa que tu query SQL está mal. Si el campo id es numérico (que es como debe ser) debes quitar las comillas. Pero revisa tu código y piensa qué es lo que estás haciendo, porque lo que haces después no tiene sentido. ¡Suerte!
  #18 (permalink)  
Antiguo 26/11/2009, 15:15
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

gracias por el consejo, toda la razon deñor.

y por eso...

que significa esto?


echo "<strong><a href='detallefoto.php?in_id=".$row[in_id]."'>".$row['in_titulo']."</a>:</strong> <em><br>Autor: ". round($row['in_ISBN']) ."</em>"; ,para entender lo que


estoy haciendo.

esto lo comprendo:

echo "<strong><a href='detallefoto.php?in_id=


pero y lo demas?
  #19 (permalink)  
Antiguo 26/11/2009, 16:25
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: un problemilla

Necesitarías darte una vuelta por algún manual de PHP y MySQL... pero básicamente, al hacer un mysql_query ejecutas código SQL que puede devolver un resultado (no todos los querys devuelven necesariamente un resultado). Ese resultado es un dato de tipo resource (que hace es un tipo de datos externo), de modo que hay que transformar ese resource en datos que podamos trabajar con facilidad desde PHP; con cada mysql_fetch_array (o como bien usas también, con mysql_result), podemos obtener arrays asociativos por cada registro devuelto por el motor de MySQL. Las claves de estos arrays coinciden con los nombres o alias (si se especifican) de las columnas en la consulta. Por eso:
Código PHP:
echo "<strong><a href='detallefoto.php?in_id=".$row[in_id]."'>".$row['in_titulo']."</a>:</strong> <em><br>Autor: "round($row['in_ISBN']) ."</em>"
Imprime en la página el link que apunta a detallefoto.php pasándole por vía URL el id obtenido, luego imprimes el título del libro y luego haces algo extraño: quieres imprimir el autor (que para imprimirlo debieras usar el índice "in_autor" pero imprimes un número. Ese número - al que llamaste ISBN (siendo que no tiene en realidad nada que ver con el ISBN del libro) - representa la relevancia de ese resultado para la búsqueda. MySQL genera para cada registro un número flotante que está entre 0 y 1 (los que más se acerquen a 1 son resultados "más exactos" o "más próximos" para la búsqueda), y gracias a ese dato, puedes ordenar los registros según la relevancia de la búsqueda.

Por eso te digo que en la página detallefoto lo que debes hacer es mostrar los datos del libro (el autor, el título, etc.) y para mostrar la imagen (si es que lo que tienes grabado en la base de datos es el nombre de la imagen simplemente tendrías que hacer un:
Código PHP:
<img src="<?php echo $row['imagen'];?>" />
Al respecto, el envío de headers no tiene nada que ver. Un header le indica al navegador cómo debe leer la información que le mandamos (si como página web, como imagen o qué), pero es para - por ejemplo - generar dinámicamente una imagen (en cuyo caso el script .php es para el navegador una imagen), no para una página HTML (que puede eventualmente incluir imágenes). El error que te dice de headers es porque los headers deben enviarse antes de cualquier otro carácter al navegador, al comienzo de todo el documento, justamente para que el navegador sepa cómo representar lo que le sigue... sin embargo, tú ya habías enviado un texto, que es el del otro error, el de SQL (aunque no lo hayas enviado a propósito, pero es información que le llegó al navegador).

Espero que haya quedado todo más o menos claro. ¡Saludos!
  #20 (permalink)  
Antiguo 27/11/2009, 06:43
 
Fecha de Ingreso: octubre-2009
Mensajes: 357
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: un problemilla

muy agradecido amigo trasandino, todo es como el agua, bien.

nos vemos amigo.
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 12:21.