Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] buscador mejorado

Estas en el tema de buscador mejorado en el foro de PHP en Foros del Web. Hola ahora vengo otro problemilla el cual ustedes me pueden ayudar a resolver... como decia tengo en una base de datos nombres completos por ejemplo ...
  #1 (permalink)  
Antiguo 18/08/2014, 13:08
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
buscador mejorado

Hola ahora vengo otro problemilla el cual ustedes me pueden ayudar a resolver...

como decia tengo en una base de datos nombres completos
por ejemplo

EDUARDO ALFONSO ARROYO TEHERAN

ahora bien uso un buscador el cual usa LIKE, que segun leyendo en manuales de php el like limita los rangos de busquedas ya que si por ejemplo busco:

EDUARDO ALFONSO si aparecerá un resultado...

Pero si por el contrario busco: EDUARDO ARROYO

no aparecerá nada... acontinuación dejoe l codigo que uso.

Código PHP:
 <?
// Solo se ejecuta si se ha enviado el formulario
$nompropietario $_POST['nombrepro']; 
$serv mysql_connect("localhost","usuario","contrasena"); 
mysql_select_db("bd",$serv);  

//------------------
$consulta mysql_query("SELECT * FROM datos WHERE nombre LIKE '%$nompropietario%'",$serv );
$numero mysql_num_rows($consulta);
//--------------------
if(empty($nompropietario))
{
echo 
"<br><b><center>Ingrese el Nombre a consultar </center></b><br>";
//echo "<b><center><a href='consultanombre.php'>Reintentar</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/reintentar.png' width='97' height='30' alt=''/></a></center>";
}else{
if(
$row mysql_fetch_array($consulta)) { 
///*
print "<b><h2>"
print 
"</h2><center><table id=lista border=1 cellpadding=0 cellspacing=0>"
print 
"<tr>
  <td height=51 colspan='4'><p><b>&nbsp;SE ENCONTRARÓN: "
.$numero." DATOS CON EL CRITERIO DE BUSQUEDA: ".$nompropietario."</b>      <strong style='font-family: Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px;'><br>
    <br />
        &nbsp;&nbsp;Filtrar Palabra:</strong>
        <input name='buscador' id='buscador' type='text' />
<a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a><br/>  
  </td>
  </tr>
<tr>
  <td width=420 bgcolor=#0066FF><b><center>NOMBRES Y APELLIDOS</center></b></td>
  <td width=70 bgcolor=#0066FF style='text-align: center'><b>IDENTIF</b></td>
  <td width=80 height=29 bgcolor=#0066FF><center>
  <b>CÓDIGO CATASTRAL</b>
</center></td><td width=288 bgcolor=#0066FF><center>
  <b>DIRECCIÓN</b>
</center></td>
</tr>
  "

do { 
print
"<tr class=off onMouseOver=this.className='on' onMouseOut=this.className='off'>
  <td><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["nombre"]."</a></td>
  <td style='text-align: center'><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".number_format($row['identificacion'], 0'''.')."</a></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["codigo"]."</a></center></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["direccion"]."</a></center></td>
  </tr>
"


while(
$row=mysql_fetch_array($consulta)); 
print
"</table></center>";
print
"<br>"
//echo "<b><a href='javascript:window.print(); void 0;'>Imprimir</a></b>  |  "; 
echo "<a href='javascript:window.print(); void 0;'><img src='./img/imprimir2.png' width='66' height='15' alt=''/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
//echo "<b><a href='consultanombre.php'>Nueva Busqueda</a></b>";
echo "<a href='consultanombre.php'><img src='./img/nuevabusqueda2.png' width='104' height='16' alt=''/></a>";
}
//*/
else{ 
echo 
"<br>";
print 
"<b><center><h3>Nombre de propietario ".strtoupper($nompropietario)." no se encuentra en la Base de Datos</h3>";
//echo "<b><center><a href='consultanombre.php'>Nueva Busqueda</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a></center>";

}
//break;
?>
</form>

la linea que creo que es la que hace toda la búsqueda es la siguiente:

Código PHP:
$consulta mysql_query("SELECT * FROM datos WHERE nombre LIKE '%$nompropietario%'",$serv 
;

he buscado y he encontrado otras funciones como el MATCH … AGAINST pero ni idea como usarlo en mi caso...

Graciass
  #2 (permalink)  
Antiguo 18/08/2014, 14:14
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 5 meses
Puntos: 123
Respuesta: buscador mejorado

si solo quieres buscar coincidencias de las palabras de una cadena dada, la solucion mas simple que veo y seme ocurre, es añadir un LIKE por cada palabra, ya que cada LIKE te buscara coincidencias sobre un patron dado, no se si esto es lo mas eficiente.

en fin me explico:
la consulsta debe de quedar algo asi:
Código SQL:
Ver original
  1. SELECT *
  2.     FROM tabla
  3.     WHERE
  4.           campo LIKE '%valorrecibido1%' OR
  5.           campo LIKE '%valorrecibido2%' OR
  6.           campo LIKE '%valorrecibido3%';

para contruir tu consulta primero deberas cortar la cadena que recibes $nombrepropietario, y armar la consulta

algo asi

Código PHP:
<?php
$busca_palabras
=explode(' '$nompropietario); //cortas por cada espacio
$cantidad_palabrascount($busca_palabras); // cuentas el numero de palabras

//construyes la consulta
$consulta ="SELECT * FROM datos WHERE " ;

for(
$i=0$i<= $cantidad_palabras$i++){
$palabra=$busca_palabras[$i];
$consulta.=" datos LIKE '%$palabra%' ";
if(
$i != $cantidad_palabras){$consulta.=" OR ";} // Si no es la ultim plbra añades un OR para el siguiente like
}
$consulta mysql_query($consulta,$serv );

?>

El inconveniente de haces esto es que te traera todos los registros donde coincida alguna de las palabras, aunque podrias jugar con los operadores para que traiga solo donde aparecen todas las palabras.
  #3 (permalink)  
Antiguo 18/08/2014, 14:20
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

En el LIKE, el caracter % hace de comodin, lo que debes hacer es reemplazar los espacios por comodines, y agregar un comodin al inicio y al final, asi:

Código PHP:
Ver original
  1. $nombre = "EDUARDO ARROYO";
  2. $consulta = "SELECT * FROM datos WHERE nombre LIKE '%".str_replace(" ", "%", trim($nombre))."%';";
  3.  
  4. // Resultado:
  5. // $consulta = "SELECT * FROM datos WHERE nombre LIKE '%EDUARDO%ARROYO%';";

Eso te devolvera los registros que contengan esas dos palabras en ese orden, sin importar lo que alla entre ambas.

Otra forma mucho mas simple de hacer lo que @xerifandtomas propone seria:

Código PHP:
Ver original
  1. <?php
  2. $nombre = "EDUARDO ARROYO";
  3. $consulta ="SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nombre))."%';";
  4.  
  5. // Resultado:
  6. // SELECT * FROM datos WHERE nombre LIKE '%EDUARDO%' OR nombre LIKE '%ARROYO%';
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 18/08/2014 a las 14:34
  #4 (permalink)  
Antiguo 18/08/2014, 14:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Hola xerifandtomas Gracias por responder he usado y parece logica tu idea... pero no la logro hacer funcionar... ahora no em muestra nada en ninguna de las consultas que le haga.. probare tu idea NSD pero recuerda que no quiero solo buscar por orden del nombre tambien puedo buscarlo cone l primer nombre y el primer apellidos asi...

EDUARDO ARROYO
  #5 (permalink)  
Antiguo 18/08/2014, 14:40
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

no no me resulta!!!
  #6 (permalink)  
Antiguo 18/08/2014, 14:43
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 5 meses
Puntos: 123
Respuesta: buscador mejorado

Que error te arroja?
  #7 (permalink)  
Antiguo 18/08/2014, 14:48
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Cita:
Iniciado por xerifandtomas Ver Mensaje
Que error te arroja?
pues no me sale nada....
  #8 (permalink)  
Antiguo 18/08/2014, 14:59
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 5 meses
Puntos: 123
Respuesta: buscador mejorado

El ejemplo de @NDS lo acabo de probar y funciona
Código PHP:
Ver original
  1. <?php
  2. $nombre = "EDUARDO ARROYO";
  3. $consulta ="SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nombre))."%';";
  4.  
  5. // Resultado:
  6. // SELECT * FROM datos WHERE nombre LIKE '%EDUARDO%' OR nombre LIKE '%ARROYO%';
  7. ?>

Lo unico que debes de cambiar es la variable $nombre por la tuya $nompropietario

Igualmente adaptar tu query.


Utiliza mysql_error(); para ver que falla en tu consulta
Código PHP:
echo mysql_error(); 
  #9 (permalink)  
Antiguo 18/08/2014, 15:04
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

pues funciona pero si busco por ejemplo si busco EDUARDO ARROYO no sale nada..

Recuerda que el nombre de la base de datos esta asi: EDUARDO ALFONSO ARROYO TEHERAN

en todas las busquedas consecutivas del nombre aparece...

pero si deseo9 buscar el primer nombre y el Primer apellido No...
  #10 (permalink)  
Antiguo 18/08/2014, 18:35
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 5 meses
Puntos: 123
Respuesta: buscador mejorado

Cita:
Iniciado por flashtrix Ver Mensaje
pues funciona pero si busco por ejemplo si busco EDUARDO ARROYO no sale nada..

Recuerda que el nombre de la base de datos esta asi: EDUARDO ALFONSO ARROYO TEHERAN

en todas las busquedas consecutivas del nombre aparece...

pero si deseo9 buscar el primer nombre y el Primer apellido No...
nombre y apellido son el mismo campo o campos diferentes en la bd?
  #11 (permalink)  
Antiguo 18/08/2014, 18:51
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

si estan en el mismo campo pues fue una BD que me pasaron asi y tiene una infinidad de registros ni modo...


pero si estan en el mismo campo
  #12 (permalink)  
Antiguo 19/08/2014, 05:15
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 5 meses
Puntos: 123
Respuesta: buscador mejorado

Siendo asi, no deberia de haber ningun problema.

Puedes ponernos el codigo tal cual lo tienes ahora, para ver si vemos algun fallo?
  #13 (permalink)  
Antiguo 19/08/2014, 08:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

pus bien probé con la linea que me pusieron y como no me resultaba la deje alli pero como un comentario acá pongo el código:

Código PHP:
$nompropietario $_POST['nombrepro']; 
$serv mysql_connect("localhost","usuario","contrasena"); 
mysql_select_db("bd",$serv);  

//------------------
$consulta mysql_query("SELECT * FROM datos WHERE nombre LIKE '%$nompropietario%'",$serv );
//$consulta ="SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nompropietario))."%';"; 
$numero mysql_num_rows($consulta);
//--------------------
if(empty($nompropietario))
{
echo 
"<br><b><center>Ingrese el Nombre a consultar </center></b><br>";
//echo "<b><center><a href='consultanombre.php'>Reintentar</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/reintentar.png' width='97' height='30' alt=''/></a></center>";
}else{
if(
$row mysql_fetch_array($consulta)) { 
///*
print "<b><h2>"
print 
"</h2><center><table id=lista border=1 cellpadding=0 cellspacing=0>"
print 
"<tr>
  <td height=51 colspan='4'><p><b>&nbsp;SE ENCONTRARÓN: "
.$numero." DATOS CON EL CRITERIO DE BUSQUEDA: ".$nompropietario."</b>      <strong style='font-family: Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px;'><br>
    <br />
        &nbsp;&nbsp;Filtrar Palabra:</strong>
        <input name='buscador' id='buscador' type='text' />
        <a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a><br/>  
  </td>
  </tr>
<tr>
  <td width=420 bgcolor=#0066FF><b><center>NOMBRES Y APELLIDOS</center></b></td>
  <td width=70 bgcolor=#0066FF style='text-align: center'><b>IDENTIF</b></td>
  <td width=80 height=29 bgcolor=#0066FF><center>
  <b>CÓDIGO CATASTRAL</b>
</center></td><td width=288 bgcolor=#0066FF><center>
  <b>DIRECCIÓN</b>
</center></td>
</tr>
  "

do { 
print
"<tr class=off onMouseOver=this.className='on' onMouseOut=this.className='off'>
  <td><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["nombre"]."</a></td>
  <td style='text-align: center'><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".number_format($row['identificacion'], 0'''.')."</a></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["codigo"]."</a></center></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["direccion"]."</a></center></td>
  </tr>
"


while(
$row=mysql_fetch_array($consulta)); 
print
"</table></center>";
print
"<br>"
//echo "<b><a href='javascript:window.print(); void 0;'>Imprimir</a></b>  |  "; 
echo "<a href='javascript:window.print(); void 0;'><img src='./img/imprimir2.png' width='66' height='15' alt=''/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
//echo "<b><a href='consultanombre.php'>Nueva Busqueda</a></b>";
echo "<a href='consultanombre.php'><img src='./img/nuevabusqueda2.png' width='104' height='16' alt=''/></a>";
}
//*/
else{ 
echo 
"<br>";
print 
"<b><center><h3>Nombre de propietario ".strtoupper($nompropietario)." no se encuentra en la Base de Datos</h3>";
//echo "<b><center><a href='consultanombre.php'>Nueva Busqueda</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a></center>";

}
break;
?>
        </form> 
los nombres están en el mismo campo (nombre) de la base de datos así por ejemplo

ARROYO TEHERAN EDUARDO ALFONSO

buscando palabras consecutivas como: EDUARDO ALFONSO o una simple palabra como por ejemplo: EDUARDO (Salen Resultados)

Pero como esta acostumbrada las personas a buscar (primer Nombre y Primer Apellido) por ejemplo EDUARDO ARROYO.. con esta combinación no salen resultados...
  #14 (permalink)  
Antiguo 19/08/2014, 10:34
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT * FROM datos WHERE nombre LIKE '%$nompropietario%'",$serv );
  2. //$consulta ="SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nompropietario))."%';";

Estas usando la otra consulta, tenes que usar la que esta comentada.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #15 (permalink)  
Antiguo 19/08/2014, 10:40
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Hola NSD es que si la uso no me arroja ningún resultado en ninguna de las búsquedas que haga.... por eso la deje allí en comentario pues no se no me resulta la búsqueda....
  #16 (permalink)  
Antiguo 19/08/2014, 11:15
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

Quiero suponer, que lo que esta comentado lo escribiste asi solo como referencia, pero que en realidad lo ejecutas asi:

Código PHP:
Ver original
  1. $consulta = mysql_query("SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nompropietario))."%';", $serv);

¿Verdad?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #17 (permalink)  
Antiguo 19/08/2014, 11:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

NSD.. GRACIASSSS!!! pero ahora las busquedas me busca cualquier cosa... si escribo por ejemplo la el nombre: LIS en la busqueda aparecen ULISES, DONOLIS, ELISA etc.... como mejoro esto

Última edición por flashtrix; 19/08/2014 a las 11:57
  #18 (permalink)  
Antiguo 19/08/2014, 12:22
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

Depende de lo que tu le llames "mejorar", podrias probar esto:
Código PHP:
Ver original
  1. <?php
  2.     $nompropietario = "JOSE PEREZ";
  3.    
  4.     $consulta = "SELECT * FROM datos WHERE ".implode(" AND ", array_map(function($ele)
  5.     {
  6.         return "(nombre LIKE '$ele%' OR nombre LIKE '% $ele%')";
  7.     },
  8.     array_filter(explode(" ", $nompropietario)))).";";
  9.    
  10.     // $consulta = SELECT * FROM datos WHERE (nombre LIKE 'JOSE%' OR nombre LIKE '% JOSE%') AND (nombre LIKE 'PEREZ%' OR nombre LIKE '% PEREZ%');

Recuerda ponerlo dentro de la funcion mysql_query...
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #19 (permalink)  
Antiguo 19/08/2014, 17:50
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

asi lo puse.... pero no me resulta no se la sintaxis para eso tan complejo

Código PHP:
<?
// Solo se ejecuta si se ha enviado el formulario
$nompropietario $_POST['nombrepro']; 
$serv mysql_connect("localhost","usuario","contrasena"); 
mysql_select_db("bd",$serv);  

//------------------
//$consulta = mysql_query("SELECT * FROM datos WHERE nombre LIKE '%$nompropietario%'",$serv );
//$consulta = mysql_query("SELECT * FROM datos WHERE nombre LIKE '%".implode("%' OR nombre LIKE '%", explode(" ", $nompropietario))."%';", $serv);
$consulta mysql_query("SELECT * FROM datos WHERE ".implode(" AND "array_map(function($ele){return "(nombre LIKE '$ele%' OR nombre LIKE '% $ele%')";
},
explode(" "$nompropietario)))."%';"$serv);
$numero mysql_num_rows($consulta);
//--------------------
if(empty($nompropietario))
{
echo 
"<br><b><center>Ingrese el Nombre a consultar </center></b><br>";
//echo "<b><center><a href='consultanombre.php'>Reintentar</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/reintentar.png' width='97' height='30' alt=''/></a></center>";
}else{
if(
$row mysql_fetch_array($consulta)) { 
///*
print "<b><h2>"
print 
"</h2><center><table id=lista border=1 cellpadding=0 cellspacing=0>"
print 
"<tr>
  <td height=51 colspan='4'><p><b>&nbsp;SE ENCONTRARÓN: "
.$numero." DATOS CON EL CRITERIO DE BUSQUEDA: ".$nompropietario."</b>      <strong style='font-family: Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px;'><br>
    <br />
        &nbsp;&nbsp;Filtrar Palabra:</strong>
        <input name='buscador' id='buscador' type='text' />
<a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a><br/>  
  </td>
  </tr>
<tr>
  <td width=420 bgcolor=#0066FF><b><center>NOMBRES Y APELLIDOS</center></b></td>
  <td width=70 bgcolor=#0066FF style='text-align: center'><b>IDENTIF</b></td>
  <td width=80 height=29 bgcolor=#0066FF><center>
  <b>CÓDIGO CATASTRAL</b>
</center></td><td width=288 bgcolor=#0066FF><center>
  <b>DIRECCIÓN</b>
</center></td>
</tr>
  "

do { 
print
"<tr class=off onMouseOver=this.className='on' onMouseOut=this.className='off'>
  <td><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["nombre"]."</a></td>
  <td style='text-align: center'><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".number_format($row['identificacion'], 0'''.')."</a></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["codigo"]."</a></center></td>
  <td><center><a href= resolucion.php?codigo="
.$row["codigo"]." target= '_blank' >".$row["direccion"]."</a></center></td>
  </tr>
"


while(
$row=mysql_fetch_array($consulta)); 
print
"</table></center>";
print
"<br>"
//echo "<b><a href='javascript:window.print(); void 0;'>Imprimir</a></b>  |  "; 
echo "<a href='javascript:window.print(); void 0;'><img src='./img/imprimir2.png' width='66' height='15' alt=''/></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
//echo "<b><a href='consultanombre.php'>Nueva Busqueda</a></b>";
echo "<a href='consultanombre.php'><img src='./img/nuevabusqueda2.png' width='104' height='16' alt=''/></a>";
}
//*/
else{ 
echo 
"<br>";
print 
"<b><center><h3>Nombre de propietario ".strtoupper($nompropietario)." no se encuentra en la Base de Datos</h3>";
//echo "<b><center><a href='consultanombre.php'>Nueva Busqueda</a></center></b>";
echo "<center><a href='consultanombre.php'><img src='./img/nuevabusqueda.png' width='131' height='30' alt=''/></a></center>";

}
break;
?>

Última edición por flashtrix; 19/08/2014 a las 18:22
  #20 (permalink)  
Antiguo 19/08/2014, 20:06
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

Esta bien escrito, que error te arroja?

Que version de php estas usando?
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #21 (permalink)  
Antiguo 19/08/2014, 20:22
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Hola amigo NSD gracias por responder, no sabes la alegria...

pues error es que no muestra ningún resultado...

y la versión del php es 5.3.

y asi como me contaste que le pussiera la linea para ver el error ... segui tu consejo en usar esto
Código PHP:
Ver original
  1. echo mysql_error();

y me salio este error....

Cita:
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 ''' at line 1

Última edición por flashtrix; 19/08/2014 a las 20:29
  #22 (permalink)  
Antiguo 19/08/2014, 21:29
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

Ahhh pero mira que error tan tonto que cometimos

El problema esta aca:
Código PHP:
Ver original
  1. )))."%';", $serv);

debería quedar como:
Código PHP:
Ver original
  1. ))).";", $serv);

Nose porque quedo ese signo de % con la comilla ahi...
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #23 (permalink)  
Antiguo 19/08/2014, 21:43
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

sos un tesoooooo gracias amigo
  #24 (permalink)  
Antiguo 19/08/2014, 23:09
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Amigo otra consulta ahora tengo este buscador el cual hay que buscar direcciones implemente casi el mismo sistema de los nombres que me ayudaste a realizar en su totalidad

en la base de datos están las direcciones así: K 10

K para referirse a Carreras en este ejemplo Carrera 10
C para referirse a Calles

muchas personas buscan las direcciones de esta manera

Calle 33C
Clle 33C
Carrera 10
Cra 10
Kra 10

o mucho peor

Carrera N. 10 o Cra N 10
Calle # 33


que si lo buscan así pues lógicamente no encontrará nada...

yo puse este código que reemplaza el uso de esas frases por la K o la C dependiendo de la dirección.... acá pongo el código que use


Código PHP:
$direccion2 $_POST['direcc']; 
$cadena $direccion2;

$buscar= array("CALLE","CLLE","CARRERA","CRA","KRA","MANZANA","LOTE");
$reemplazar= array("C","C","K","K","K","MZ""L");
$cadena2=str_replace($buscar$reemplazar$cadena);
$serv mysql_connect("localhost","impucorozal","sucreimp7896"); 
mysql_select_db("bdimpuestos",$serv);  
//------------------
//$consulta = mysql_query("SELECT * FROM datos WHERE direccion LIKE '%$direccion2%'",$serv );
$consulta mysql_query("SELECT * FROM datos WHERE ".implode(" AND "array_map(function($ele){return "(direccion LIKE '$ele%' OR direccion LIKE '% $ele%')";
},
explode(" "$cadena2))).";"$serv);
$numero mysql_num_rows($consulta); 
como hago en este ejemplo ya que si busco por ejemplo CRA 21

me aparecen lógicamente todas las K 21

pero también me salen todos los 21 por ejemplo

K 6 9 218
K 4 2 212

en fin donde este siempre un numero 21

que le pongo para limitar las búsquedas

Gracias amigo....
  #25 (permalink)  
Antiguo 20/08/2014, 02:46
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 10 meses
Puntos: 320
Respuesta: buscador mejorado

¿entendiste lo que hacen los codigos que te pase o solo los copiaste?

No me molesta explicartelos si no los entiendes, no le sirve a nadie que te diga que hacer si no entiendes el porque y el como funciona
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #26 (permalink)  
Antiguo 20/08/2014, 09:01
 
Fecha de Ingreso: noviembre-2004
Mensajes: 249
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: buscador mejorado

Hola amigo NSD es cierto, tienes toda la razón, gracias a ti he comprendido a los sistemas de búsquedas avanzada... eso te lo agradezco muchisisimo

pero se me olvido especificar... si el código que use para reemplazar las cadenas por otras es el adecuado, a lo mejor omití algo sintáctico... aun soy novato en todo esto pienso que nunca iré a comprender en su totalidad php jeje cada día sale algo nuevo

Gracias por comprender....

Etiquetas: buscador, formulario, mysql, select, sql
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 19:43.