Foros del Web » Programando para Internet » PHP »

buscar por autor

Estas en el tema de buscar por autor en el foro de PHP en Foros del Web. Hola. Seguimos en eso de aprender a escribir funciones php. Ahora estamos intentando hacer un buscador, pero la búsqueda no se da a partir de ...
  #1 (permalink)  
Antiguo 29/09/2010, 22:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 9 años, 10 meses
Puntos: 1
Busqueda buscar por autor

Hola. Seguimos en eso de aprender a escribir funciones php.

Ahora estamos intentando hacer un buscador, pero la búsqueda no se da a partir de un input, sino de un valor dado.

Es decir, supongamos que el articulo lo escribe Rubén y lo publica cualquier persona en su blog. En el campo autor, el bloguero escribe 'Rubén', y ese valor se guarda en la base de datos.

lo que quiero hacer es que en el articulo, el nombre de Rubén aparezca como un link y que ese link nos lleve a una página donde aparezcan todos los articulos escritos por Rubén. Lo he visto en muchas páginas, pero todavía no consigo hacerlo, porque además, algo muy importante, es que con esta función no se abra una puerta para un ataque xss.

En el articulo, el campo de autor está llamado así:


Código PHP:
<a href="<?php permalink_autor("search.php"?>" title="<?php the_autor();  ?>  "> <?php the_autor(); ?></a>

hasta ahí, todo bien.

ahora la función:


Código PHP:
function permalink_autor($file='') {
    global 
$id,$postdata$tableposts;
    global 
$querystring_start$querystring_equal$querystring_separator;
    
$autor get_the_autor();
    
$query "SELECT * FROM $tableposts WHERE  autor LIKE '%".$autor."%' LIMIT 0, 15"
    
$result mysql_query($query);
    
$autor mysql_fetch_array($result);

    echo 
$file.$querystring_start.'autor'.$querystring_equal.$autor;
     } 


he probado varias, pero con esta creo que me he acercado a la solución.


pero el problema está en que el link aparece así:

Código PHP:
http://www.asdfghijkl.net/search.php?autor=Array 
es decir, no recupera el valor de $autor en el link, pero no entiendo porqué.

y tampoco se si va a funcionar esta función.

ah!, y cómo la protego contra xss.


espero que alguien pueda orientarme

saludos
  #2 (permalink)  
Antiguo 29/09/2010, 22:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 5 meses
Puntos: 2534
Respuesta: buscar por autor

mysql_fetch_array() devuelve un array...
http://php.net/mysql_fetch_array

entonces, debes usar el índice del array... porque si no lo usas por eso sale Array
Código PHP:
// MAL
echo $autor;

// BIEN
echo $autor['columna']; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/09/2010, 23:49
 
Fecha de Ingreso: septiembre-2010
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: buscar por autor

Exacto, necesitas decirle a tu codigo cual columna de tu base de datos $tableposts es la que publicara (ejemplo: $autor['id_autor'])
  #4 (permalink)  
Antiguo 30/09/2010, 23:31
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: buscar por autor

bueno, he tratado de modificar la función, pero saltar un warning. error en mysql_fetch_array() supplied argument is not a valid MySQL result resource


Código PHP:
function permalink_autor() {
    global 
$id,$postdata$tableposts;
    global 
$querystring_start$querystring_equal$querystring_separator;
    
$escritor get_the_escritor();
    
$autor mysql_query("select post_escritor FROM $tablepost WHERE post_escritor LIKE '%".$escritor."%' LIMIT 0, 15"); 
    
$result mysql_fetch_array($autor);
    echo 
$file.$querystring_start.'autor'.$querystring_equal.$autor['post_escritor'];



no entiendo bien cual es el error.

$escritor es el valor del campo que utilizo para poner el nombre del escritor del articulo. esa es otra función que sí trabaja.

intento recuperar ese valor en un busqueda mysql dentro del campo post_escritor de la tableposts

y finalmente, que cada permalink_autor, aparezca como un link a esa busqueda.

podrían orientarme. gracias


saludos

Última edición por Tooj; 30/09/2010 a las 23:44
  #5 (permalink)  
Antiguo 01/10/2010, 02:34
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años
Puntos: 214
Respuesta: buscar por autor

Cita:
Iniciado por Tooj Ver Mensaje
bueno, he tratado de modificar la función, pero saltar un warning. error en mysql_fetch_array() supplied argument is not a valid MySQL result resource


Código PHP:
function permalink_autor() {
    global 
$id,$postdata$tableposts;
    global 
$querystring_start$querystring_equal$querystring_separator;
    
$escritor get_the_escritor();
    
$autor mysql_query("select post_escritor FROM $tablepost WHERE post_escritor LIKE '%".$escritor."%' LIMIT 0, 15"); 
    
$result mysql_fetch_array($autor);
    echo 
$file.$querystring_start.'autor'.$querystring_equal.$autor['post_escritor'];


no entiendo bien cual es el error.

$escritor es el valor del campo que utilizo para poner el nombre del escritor del articulo. esa es otra función que sí trabaja.

intento recuperar ese valor en un busqueda mysql dentro del campo post_escritor de la tableposts

y finalmente, que cada permalink_autor, aparezca como un link a esa busqueda.

podrían orientarme. gracias


saludos
ehm, como lo tenías en post anterior sería
echo $file.$querystring_start.'autor'.$querystring_equal.$autor['post_escritor'];
pero en este reciente sería
echo $file.$querystring_start.'autor'.$querystring_equal.$result['post_escritor'];

porque? porque estas tratando de sacar los datos del recordset o resource ($autor en este caso)
cuando debes sacarlo del resultset o array ($result en este caso)
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 01/10/2010, 10:56
 
Fecha de Ingreso: noviembre-2009
Mensajes: 64
Antigüedad: 9 años, 10 meses
Puntos: 1
De acuerdo Respuesta: buscar por autor

bien! el link funciona.

con la siguiente función:


Código PHP:
function permalink_autor($file='') { 
    global 
$id,$postdata$tableposts
    global 
$querystring_start$querystring_equal$querystring_separator
    
$escritor get_the_escritor(); 
    
$query "SELECT post_escritor FROM $tableposts WHERE  post_escritor LIKE '%".$escritor."%' LIMIT 0, 15";  
    
$result mysql_query($query); 
    
$autor mysql_fetch_array($result); 

    echo 
$file.$querystring_start.'autor'.$querystring_equal.$autor['post_escritor']; 
     } 

Ahora, la duda que me surge es cómo mostrar los resultados..., en search.php cómo muestro los resultados.

voy a pensarlo, mientras tienen alguna idea de cómo hacerlo?
  #7 (permalink)  
Antiguo 01/10/2010, 15:17
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años
Puntos: 214
Respuesta: buscar por autor

pues con una función similar a la que ya tienes (la permalink_autor), pero pues con el parámetro que imagino es el que agregas en la url, que busque en la tabla "publicaciones" o "autores_publicaciones" por ej para saber cuales son del autor sobre el que se dio clic, y traiga la info que necesites ya no mostrandolo en un href sino en un listado
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: autor
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 09:15.