Autor Tema: Cómo hacer Buscador con las consultas de Dreamweaver 8.  (Leído 1279 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Adrian_PHP

  • Novato
  • *
  • Mensajes: 12
  • Puntuación: 0
  • Sexo: Masculino
    • Ver Perfil
    • BlogPHP con Dreamweaver | Sistema de Weblog gratuito
Cómo hacer Buscador con las consultas de Dreamweaver 8.
« : 31 de enero de 2010, 01:34:36 am »
Este pedazo de código que lleva mi proyecto (que ya lo voy a publicar en PHP de Venezuela) lo acabo de sacar esta misma noche recién salido del horno (31/01/10 a las "exactamente" 1:00 am) funciona y todo así que si descubren un error o algo indevido por favor que lo hagan saber es muy importante para mí.

1) Primero deben conocer la estructura SQL de la tabla con que me estoy haciendo PARA este ejemplo.

se llama 'posts' y está organizada así:

titulo varchar 75
contenido text
categoria varchar 20
palabras_claves text


una ves que crean su tabla en el localhost (si es que están siguiendo el ejemplo) deben crear una consulta SQL y colocar esto:

ALTER TABLE posts ADD FULLTEXT (titulo, contenido, categoria, palabras_claves);

si los que tiene otra estructura de su tabla obvio que lo tienen que modificar.

2) Luego con el Dreamweaver 8 o superior deben crear una consulta sencilla sin tantas webonadas en modo GET, algo parecido a esto:

Código: [Seleccionar]
<?php
$colname_busqueda_entrada 
"-1";
if (isset(
$_GET[&#39;busqueda&#39;])) {
  
$colname_busqueda_entrada = (get_magic_quotes_gpc()) ? $_GET[&#39;busqueda&#39;] : addslashes($_GET[&#39;busqueda&#39;]);
}
mysql_select_db($database_conexionSQL$conexionSQL);
$query_busqueda_entrada sprintf("SELECT * FROM posts WHERE titulo = &#39;%s&#39;"$colname_busqueda_entrada);
$busqueda_entrada mysql_query($query_busqueda_entrada$conexionSQL) or die(mysql_error());
$row_busqueda_entrada mysql_fetch_assoc($busqueda_entrada);
$totalRows_busqueda_entrada mysql_num_rows($busqueda_entrada); 
?>

3) Luego con los dedos y el teclado (o "pantalla táctil" pa los que tienen plata) deben modificar el código de la siguiente manera:

Código: [Seleccionar]
<?php
$colname_busqueda_entrada 
"-1";
if (isset(
$_GET[&#39;busqueda&#39;])) {
  
$colname_busqueda_entrada $_GET[&#39;busqueda&#39;];

 if (
explode(" ",$colname_busqueda_entrada) == 1) {
mysql_select_db($database_conexionSQL$conexionSQL);
$query_busqueda_entrada sprintf("SELECT titulo, contenido, palabras_claves, categoria FROM posts WHERE titulo LIKE &#39;%$busqueda%&#39; OR contenido LIKE &#39;%$busqueda%&#39; OR palabras_claves &#39;%$busqueda%&#39; OR categoria &#39;%$busqueda%&#39;)"$colname_busqueda_entrada);
$busqueda_entrada mysql_query($query_busqueda_entrada$conexionSQL) or die(mysql_error());
$row_busqueda_entrada mysql_fetch_assoc($busqueda_entrada);
$totalRows_busqueda_entrada mysql_num_rows($busqueda_entrada);
 } elseif (
explode(" ",$colname_busqueda_entrada) > 1) {
mysql_select_db($database_conexionSQL$conexionSQL);
$query_busqueda_entrada sprintf("SELECT * , MATCH (titulo, contenido, palabras_claves, categoria) AGAINST (&#39;$busqueda&#39;) FROM posts WHERE MATCH (titulo, contenido, palabras_claves, categoria) AGAINST (&#39;$busqueda&#39; IN BOOLEAN MODE)"$colname_busqueda_entrada);
$busqueda_entrada mysql_query($query_busqueda_entrada$conexionSQL) or die(mysql_error());
$row_busqueda_entrada mysql_fetch_assoc($busqueda_entrada);
$totalRows_busqueda_entrada mysql_num_rows($busqueda_entrada);
}
?>

Está retocado para que cuando en el formulario la parsona teclee "UNA" sóla palabra de 4 o más carácteres usa el LIKE para hacer este tipo de búsquedas y si teclea "FRASES" usa el algorítmo de búsqueda de MACHT y AGAINTS en la MySQL.

este es form:

Código: [Seleccionar]
<form action="" method="GET">
<p>
<input name="busqueda" " type="text" />
   <input value="Buscar" type="submit" />
</p>
</form>
« Última Modificación: 31 de enero de 2010, 09:30:50 pm por Adrian_PHP »
Te hablo en PHP y en español.

Desconectado themillionaire

  • Novato
  • *
  • Mensajes: 28
  • Puntuación: 1
    • Ver Perfil
Re: Cómo hacer Buscador con las consultas de Dreamweaver 8.
« Respuesta #1 : 29 de marzo de 2010, 11:55:55 am »
le hice algo de modificacion
mas bien mucha
le meti algunos datos para probar
y no hice el formulario (eso lo hare mas tarde)
sino que le di un valor a la variable $busqueda
use por supuesto la misma tabla

adrian en tu codigo tienes un error  en la linea que dice
Código: [Seleccionar]
$query_busqueda_entrada = sprintf("SELECT titulo, contenido, palabras_claves, categoria FROM posts WHERE titulo LIKE '%$busqueda%' OR contenido LIKE '%$busqueda%' OR palabras_claves '%$busqueda%' OR categoria '%$busqueda%')", $colname_busqueda_entrada);
luego de palabras_claves y categoria falta LIKE
y no supe por que no me funcionaba la funcion sprintf

prueben con este codigo tal cual y con esta data de ejemplo

"   titulo                       contenido     categoria    palabras_claves
    sin prueba               ejemplo         x              x
    probando               d                 d                    d
    probando con exito  .                 .                    .
        estamos probando   k                  k                  k "

Código: [Seleccionar]
<?php 
require_once(&
#39;conex_prueba.php&#39;); 
$busqueda="probando";
$maxRows_Recordset1 2000;
$pageNum_Recordset1 0;
if (isset($_GET[&#39;pageNum_Recordset1&#39;])) {
  $pageNum_Recordset1 $_GET[&#39;pageNum_Recordset1&#39;];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;
mysql_select_db($database_obayuda$obayuda);
$query_Recordset1 "SELECT titulo, contenido, palabras_claves, categoria FROM posts WHERE titulo LIKE &#39;%$busqueda%&#39; OR contenido LIKE &#39;%$busqueda%&#39;";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$obayuda) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
if (isset($_GET[&#39;totalRows_Recordset1&#39;])) {
  $totalRows_Recordset1 $_GET[&#39;totalRows_Recordset1&#39;];
} else {
  $all_Recordset1 mysql_query($query_Recordset1);
  $totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>

<html>
  <head>
    <title>busqueda</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
<table class="formas" border="1" align="left">
  <?php do { ?>
  <tr>
<?php echo "<td>$row_Recordset1[titulo]</td>"?>
<?php echo "<td>$row_Recordset1[contenido]</td>"?>
<?php echo "<td>$row_Recordset1[categoria]</td>"?>
<?php echo "<td>$row_Recordset1[palabras_clave]</td>"?>
  </tr>
  <?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
</table>
  </body>
</html>
<?php
mysql_free_result
($Recordset1);
?>



aqui esta el codigo del programa: conex_prueba.php
Código: [Seleccionar]
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_ "localhost";
$database_obayuda "prueba";
$username_ "root";
$password_ "root";
$obayuda mysql_pconnect($hostname_$username_$password_) or trigger_error(mysql_error(),E_USER_ERROR); 
?>


Desconectado Adrian_PHP

  • Novato
  • *
  • Mensajes: 12
  • Puntuación: 0
  • Sexo: Masculino
    • Ver Perfil
    • BlogPHP con Dreamweaver | Sistema de Weblog gratuito
Re: Cómo hacer Buscador con las consultas de Dreamweaver 8.
« Respuesta #2 : 04 de abril de 2010, 10:21:00 pm »
Gracias por responder sabía que había un error por eso lo postee aqui, estaba muy alejado de mi laptop por eso no me he pasado por el foro, en este momento estoy revisando tu modificación. Gracias.

le hice algo de modificacion
mas bien mucha
le meti algunos datos para probar
y no hice el formulario (eso lo hare mas tarde)
sino que le di un valor a la variable $busqueda
use por supuesto la misma tabla

adrian en tu codigo tienes un error  en la linea que dice
Código: [Seleccionar]
$query_busqueda_entrada = sprintf("SELECT titulo, contenido, palabras_claves, categoria FROM posts WHERE titulo LIKE '%$busqueda%' OR contenido LIKE '%$busqueda%' OR palabras_claves '%$busqueda%' OR categoria '%$busqueda%')", $colname_busqueda_entrada);
luego de palabras_claves y categoria falta LIKE
y no supe por que no me funcionaba la funcion sprintf

prueben con este codigo tal cual y con esta data de ejemplo

"   titulo                       contenido     categoria    palabras_claves
    sin prueba               ejemplo         x              x
    probando               d                 d                    d
    probando con exito  .                 .                    .
        estamos probando   k                  k                  k "

Código: [Seleccionar]
<?php 
require_once(&
#39;conex_prueba.php&#39;); 
$busqueda="probando";
$maxRows_Recordset1 2000;
$pageNum_Recordset1 0;
if (isset($_GET[&#39;pageNum_Recordset1&#39;])) {
  $pageNum_Recordset1 $_GET[&#39;pageNum_Recordset1&#39;];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;
mysql_select_db($database_obayuda$obayuda);
$query_Recordset1 "SELECT titulo, contenido, palabras_claves, categoria FROM posts WHERE titulo LIKE &#39;%$busqueda%&#39; OR contenido LIKE &#39;%$busqueda%&#39;";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$obayuda) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
if (isset($_GET[&#39;totalRows_Recordset1&#39;])) {
  $totalRows_Recordset1 $_GET[&#39;totalRows_Recordset1&#39;];
} else {
  $all_Recordset1 mysql_query($query_Recordset1);
  $totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
?>

<html>
  <head>
    <title>busqueda</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
<table class="formas" border="1" align="left">
  <?php do { ?>
  <tr>
<?php echo "<td>$row_Recordset1[titulo]</td>"?>
<?php echo "<td>$row_Recordset1[contenido]</td>"?>
<?php echo "<td>$row_Recordset1[categoria]</td>"?>
<?php echo "<td>$row_Recordset1[palabras_clave]</td>"?>
  </tr>
  <?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
</table>
  </body>
</html>
<?php
mysql_free_result
($Recordset1);
?>



aqui esta el codigo del programa: conex_prueba.php
Código: [Seleccionar]
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_ "localhost";
$database_obayuda "prueba";
$username_ "root";
$password_ "root";
$obayuda mysql_pconnect($hostname_$username_$password_) or trigger_error(mysql_error(),E_USER_ERROR); 
?>


Te hablo en PHP y en español.

Desconectado Adrian_PHP

  • Novato
  • *
  • Mensajes: 12
  • Puntuación: 0
  • Sexo: Masculino
    • Ver Perfil
    • BlogPHP con Dreamweaver | Sistema de Weblog gratuito
Re: Cómo hacer Buscador con las consultas de Dreamweaver 8.
« Respuesta #3 : 05 de abril de 2010, 05:09:35 pm »
Está muy buena tu revisión, ya he corregido, lo único malo es que esa parte del código a que le pusistes más atención sólo funciona cuando el usuario coloca una palabra o frase de más de 3 o 4 dígitos por eso es que existe esta condición:
Código: [Seleccionar]
if (explode(" ",$colname_busqueda_usuarios) == 1) {Y termina con esta:
Código: [Seleccionar]
} elseif (explode(" ",$colname_busqueda_usuarios) > 1) {O es lo que se intenta hacer, si no por cualquier cosa se puede cortar estas condiciones y dejar que sólo funcione la búsqueda con el algoritno de MATCH AGAINST en modo BOOLEANO.
Te hablo en PHP y en español.

Desconectado daniel071990

  • Novato
  • *
  • Mensajes: 17
  • Puntuación: 0
    • Ver Perfil
Re:Cómo hacer Buscador con las consultas de Dreamweaver 8.
« Respuesta #4 : 04 de abril de 2011, 10:53:06 pm »
te recomiendo que no crees un campo llamado palabras claves si no que te guies por el titulo ejemplo el titulo es windows xp en español y aparte haces nu scrtip que  saque el titulo y ponga Descarga $titulo, Descarga $titulo Gratis, Descarga Directa $titulo, Todo Sobre $titulo o como quieras ponerle asi la base de datos se te hace mas corta te lo digo porque tenia una web de peliculas online entonces lo que le hice al scrtip fue eso

PHP de Venezuela

Re:Cómo hacer Buscador con las consultas de Dreamweaver 8.
« Respuesta #4 : 04 de abril de 2011, 10:53:06 pm »

 

PHP de Venezuela on Facebook