Foros del Web » Programando para Internet » PHP »

Una simple busqueda en archivo

Estas en el tema de Una simple busqueda en archivo en el foro de PHP en Foros del Web. Estoy utilizando una pequeña funcion para buscar en un simple archivo de texto : Código PHP: $palabra = "Palabra que busco" ; $archivo = file  ( "notas.txt" ...
  #1 (permalink)  
Antiguo 02/04/2006, 07:37
Usuario baneado!
 
Fecha de Ingreso: septiembre-2005
Mensajes: 68
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Una simple busqueda en archivo

Estoy utilizando una pequeña funcion para buscar en un simple archivo de texto :

Código PHP:
$palabra="Palabra que busco";

$archivo=file ("notas.txt");

for (
$i=0;$i<sizeof("$archivo");$i++)
{

if (
$archivo[$i]=="$palabra")
{print 
"ok"}
else {print 
"Busqueda fallida";}




Esta pequeña funcion busca perfectamente , pero ocurre qeu en el caso de un fallo o de un acierto me pone busqueda fallida tantas veces como entradas hay , es decir si busco algo lo encuentra pero a continuacion me pone búsqueda fallida , tantas veces como entradas haya separadas por \n

He tratado usar funciones como break; pero esta no funciona pues corta que el sistema revise las siguientes entradas , mostrandome la primera que encuentra , he tratado con unset ($i) , etc , despues de reintentar , pues les pregunto a ustedes a ver que se les ocurre para que no se me repitan estas cosas y muestre si hay o no hay algo coincidente si repetirse la cosa , saludos a todos Julian
  #2 (permalink)  
Antiguo 02/04/2006, 11:17
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 12 años, 5 meses
Puntos: 5
De acuerdo Busquedas

Hola globaldesigne

Dentro de tu Script podrias usar lo siguiente :
Código PHP:
<?php

$palabra
="Palabra que busco";
$archivo=file ("notas.txt");
for (
$i=0;$i<sizeof("$archivo");$i++)
{
if (
$archivo[$i]=="$palabra")
{print 
"ok";
  exit;
}
else {print 
"Busqueda fallida";}

}  
?>

Espero que te ayude
Salu2

__________________
. .: El mejor Inicio :. .
  #3 (permalink)  
Antiguo 02/04/2006, 12:29
Usuario baneado!
 
Fecha de Ingreso: septiembre-2005
Mensajes: 68
Antigüedad: 12 años, 2 meses
Puntos: 0
Ojala Funcionase pero......

La verdad que eso tb lo probe amigo pero nada de nada , si imaginate meto lo que es esa funcion en un include dentro de una pagina al ejecutarse el exit se me corta toda , ya probe de todo y no se que mas darle para encontrar la solución , a ver si alguien tiene alguna idea más porque la verdad el sistema se puede usar para cualquier busqueda enarchivos pero es eso si queiro obtener que no hay busquedas me repite tantas veces como entradas lo otro y viceversa , bueno a ver si se le ocurre algo mas a alguien y gracias por adelantado a todos , a ver si se da , chau , Julian
  #4 (permalink)  
Antiguo 02/04/2006, 14:04
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Yo creo que si pusieras una especia de contador que sumara si hay acierto deberia funcionar:
Código PHP:
<?
$palabra
="Palabra que busco"
$acierto 0// acierto vale cero al principio
$archivo=file ("notas.txt"); 

for (
$i=0;$i<sizeof("$archivo");$i++) 


  if (
$archivo[$i]=="$palabra"
  { 
   print 
"ok";
   
$acierto 1// si encuentra, acierto vale uno
  


}  

if (
$acierto == 0) { print "Busqueda fallida"; } // si no ha contado, muestra Busqueda fallida
?>
Importante: La funcion " if ($acierto == 0) { print "Busqueda fallida"; } " debe estar fuera del for
Hasta luego

Última edición por Cubatron; 02/04/2006 a las 14:10
  #5 (permalink)  
Antiguo 03/04/2006, 07:27
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
Código PHP:
$palabra="Palabra que busco"

$archivo=file ("notas.txt"); 
$encontrado=false;

for (
$i=0;$i<sizeof("$archivo");$i++) 


if (
$archivo[$i]=="$palabra") {
echo 
"ok";
$encontradotrue;
}
}  

if(!=
$encontrado){
    echo 
"busqueda fallida";

saludos
  #6 (permalink)  
Antiguo 03/04/2006, 11:54
Usuario baneado!
 
Fecha de Ingreso: septiembre-2005
Mensajes: 68
Antigüedad: 12 años, 2 meses
Puntos: 0
Gracias pero me da errores............

Cita:
Iniciado por moron
Código PHP:
$palabra="Palabra que busco"

$archivo=file ("notas.txt"); 
$encontrado=false;

for (
$i=0;$i<sizeof("$archivo");$i++) 


if (
$archivo[$i]=="$palabra") {
echo 
"ok";
$encontradotrue;
}
}  

if(!=
$encontrado){
    echo 
"busqueda fallida";

saludos




Gracias tb por tu aportación pero el script que me has puesto pues me da errores , a ver si me dices como va lopruebo y a ver si de una se arregla el asunto , enga , gracias a todos por ayudarme , Julian
  #7 (permalink)  
Antiguo 03/04/2006, 15:07
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
Perdón, es posible que tenga algun error, te tiré la logica sin probarlo. que error te tira?
supongo que debe ser por


if(!=$encontrado){
echo "busqueda fallida";
}

busca la sintaxis correcta, sino ponele if ($encontrado == false)

aaa, demas, sacale eso de BEGIN__VBULLETIN__CODE__SNIPPET que lo agrega el foro no se por que pero no va.

Última edición por moron; 03/04/2006 a las 15:13
  #8 (permalink)  
Antiguo 03/04/2006, 15:07
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Has probado el que puse yo? Deberia funcionarte
  #9 (permalink)  
Antiguo 04/04/2006, 05:25
Usuario baneado!
 
Fecha de Ingreso: septiembre-2005
Mensajes: 68
Antigüedad: 12 años, 2 meses
Puntos: 0
Ok moron decirte que precisamente en

if(!=$encontrado){
echo "busqueda fallida";
}


me da el error porque me dice que hay resumiendo un problema de igualdades , despues lo trate de solucionar con otra igualdad diferente pero me da el mismo tema , es decir , al aplicar una funcion for o similar que incluye toda la informacion separada por \n cuando buscas algo te lo encuentra pero al poner el else sino encuentra nada pues dispara todo no lo corta , si meto un exit me corta toda la pagina si meto un break no me lee lo siguiente , es decir no va nada , por eso cubatron lo que tu me enviaste pues nada tio no funciona tampoco porque me corta todo el resto de la pagina no me la muestra vamos al meter un exit , y nada sigo a ello a ver si de una sale pero no se he pensado en contadores de resultados y la imaginacio9n se me dispara pero sin resultado asi que a ver siconsigo algo pero no obstante gracias pro el interes , si se os ocurre algo mas listo me lo indicaís , saludos a todos , julian
  #10 (permalink)  
Antiguo 04/04/2006, 07:28
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
acabo de probarlo asi y funciona:
<?php
$palabra="jose";

$archivo=file ("notas.txt");
$encontrado=false;

for ($i=0;$i<sizeof("$archivo");$i++)
{

if ($archivo[$i]=="$palabra") {
echo "ok";
$encontrado= true;
}
}

if($encontrado == false){
echo "busqueda fallida";
}
?>
  #11 (permalink)  
Antiguo 04/04/2006, 15:50
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Lo que yo puse no tenia nigun exit ¡¡¡?????!!!! y si que funciona:
Código PHP:
<? 
$palabra
="Palabra que busco";  
$acierto 0// acierto vale cero al principio 
$archivo=file ("notas.txt");  

for (
$i=0;$i<sizeof("$archivo");$i++)  
{  

  if (
$archivo[$i]=="$palabra")  
  {  
   print 
"ok"
   
$acierto 1// si encuentra, acierto vale uno 
  
}  

}   

if (
$acierto == 0) { print "Busqueda fallida"; } // si no ha contado, muestra Busqueda fallida 
?>
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 13:02.