Ver Mensaje Individual
  #7 (permalink)  
Antiguo 17/01/2007, 03:10
Avatar de holahola
holahola
 
Fecha de Ingreso: mayo-2005
Ubicación: Móstoles - (Madrid)
Mensajes: 214
Antigüedad: 19 años
Puntos: 1
Re: Buscar Palabra en un BD

Creo que así funciona:

Código PHP:
<?php

// Busca la palabra

set_time_limit(0);

$database 'jacky';
$word 'Cesar';

echo 
"Search for word: <b>".$word."</b><br><br>";

$connect mysql_connect('localhost','root','');
mysql_selectdb$database$connect ); 

$j=0;
$tables mysql_list_tables$database );

while( 
$line mysql_fetch_row$tables ) )
{
$fields mysql_list_fields$database$line[0], $connect );
$columns mysql_num_fields$fields );

for (
$i 0$i $columns$i++) {
$nomField mysql_field_name$fields$i );
echo 
'Columna: '.$nomField.'<br>';
$sql "SELECT * FROM " $line[0] .
" WHERE " .
$nomField " LIKE '%".$word."%' ";

$query mysql_query$sql );
while(
$result mysql_fetch_array($query)) {
    echo 
"Table: <b>".$line[0]."</b><br>";
    echo 
"Field: <b>".$nomField."</b><br>";
    echo 
"SQL: <b>".$sql."</b><br>";
    echo 
"Result: <b>" str_replace$word"<font color='blue'>"$word "</font>"$result[$nomField] ) . "</b>";
    if (isset(
$result['Contador'])){
        echo 
" --->>> fila con identificador ".$result['Contador'];
    }
    echo 
"<br><br>";
    
$j++;
// fin del while $result
// fin del for
// fin del while $line

echo "<br><br><br>";
echo 
"Results: ".$j;

?>
Como lo has previsto para que se recorra todas las tablas de la base de datos, con los datos de la tabla que has dado he creado dos tablas con los mismos datos. Funciona.

Por supuesto, se ha eliminado el LIMIT 1 , y además se ha añadido un bucle while en lugar del if( mysql_num_rows( $query ) > 0) que tenías.

De todas formas, si lo que quieres es buscar palabras, te sugiero que el LIKE lo hagas con '%".$word."%' ; de esa forma cuando busques Valle te encontrará apellidos con del Valle. Por otro lado te va a encontrar por ejemplo del Vallecano. Todo depende de lo que te interese...

Me ha parecido interesante.

Un saludo.

PDT: Te he añadido la identificación de la fila encontrada. Según lo tienes, hay que hacerlo con el if (isset($result[Contador])) ya que si no se hace, daría error si tuvieras alguna tabla en la base de datos que no tenga campo Contador (supongo que para tí, Contador es el identificador de la fila).

Última edición por holahola; 17/01/2007 a las 05:58 Razón: POSTDATA