Foros del Web » Programando para Internet » PHP »

PAgina web Dinamica (motor de busqueda)

Estas en el tema de PAgina web Dinamica (motor de busqueda) en el foro de PHP en Foros del Web. hola!!, Tengo que hacer una web dinamica en PHP . Tengoq ue crear una web con un formulario junto con un motor de busqueda para ...
  #1 (permalink)  
Antiguo 17/05/2005, 09:22
 
Fecha de Ingreso: abril-2005
Mensajes: 9
Antigüedad: 19 años
Puntos: 0
PAgina web Dinamica (motor de busqueda)

hola!!,

Tengo que hacer una web dinamica en PHP . Tengoq ue crear una web con un formulario junto con un motor de busqueda para encontrar datos en un fichero.
Para ellos contamos con 3 elementos:

1.- El fichero que podemos crear con cualquier editor de textos , este fichero guarda datso como nombre, apellidos y edad (solo estos 3 tipos de datos ) . El formato del fichero es en texto plano (ASCII).

2.-Pagina web donde tendra un formulario que era de la siguiente forma :
Tendra 3 casillas que se podran marcar (nombre, apellidos y Edad) y debajo un rectangulo donde podras escrbir( que sera el texto a buscar ) y dos botonoes , el de Buscar y el de borrar.

3.- Motor de busqueda : - Abre le fichero de texto y busca una coincidenci con el campo correspondiente que se haya especificado en el formulario. Si se selecciono la opcion edad y se puso en el texto a bscar 24 , deberia buscar a aquellas personas dle fichero que tienen 24 años.
-Generar una pagina web dinamica para mostrar los resultados en forma de talba.

------------------
Mas o menos tengo una ligera idea de como hacerla, el motor de busqeuda tengo pensado hacerlo con un array bidimensional...pero no estoy muy enterada de como hacerlo.

La verdad es que necesito ayuda, tengo que entregarla esta semana...seguramente no me de tiempo a terminarla , AYUDA POR FAVOR!!!
  #2 (permalink)  
Antiguo 17/05/2005, 10:08
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 4 meses
Puntos: 0
Deberias preguntar cosas concretas, porque a los demas nos va a dar bastante pereza pensar en tu trabajo por tí, no se si me entiendes, pero una cosa es aclarar una duda y otra hacer tu trabajo.

Al menos eso pienso yo, pero yo aqui no soy nadie, asi que quien quera que te conteste, pero yo paso.
  #3 (permalink)  
Antiguo 17/05/2005, 10:32
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Saludos.

Bueno hace unos dias me pude a desarrollar una función que se encargue de cargar datos de un archivo txt a un array multidimensional.

Esto lo deje en etapa inicial pero te servira para lo que deseas.

Te explicare paso a paso como incorporarlo a tu sistema y asi poder usarlo entendiendo la ideologia que pense yo. No esta super depurado pero funciona ya e realizados pruebas y a trabajado.

Comenzemos:
1- Crea un archivo llamado datatext_function.php y agregale adentro estos codigos:
Código PHP:
<?php
function datatext_start($dt_archivo){
global 
$char_campo,$char_texto,$char_divisor;
if(
file_exists($dt_archivo)){
$datafile file($dt_archivo,"r");
$lineas $datafile[0];
$campos explode($char_divisor,$lineas);

 
# aqui se recorre la primera linea del archivo
 # y se crean los campos que estaran disponibles
 
foreach($campos as $n_campo) {
    
$n_campo eregi_replace($char_campo,"",$n_campo);
    
agregar_campo($n_campo);
 }

  
# aqui se recorre el file para agregar los datos.
  
for($i=1;$i<count($datafile);$i++){
        
$dt_data explode($char_divisor,$datafile[$i]);
        
$posicion 0;
        foreach(
$dt_data as $dt_data_valor) {
        
$dt_data_valor eregi_replace($char_texto,"",$dt_data_valor);
        
agregar_datos($dt_data_valor,$posicion);
        
$posicion++;
        }
  }
return 
true;
}  
else{
return 
false;
}
}

function 
agregar_datos($dt_data_valor,$posicion){
    global 
$datatext;
    global 
$dt_campos_posicion;
    
$dt_data_valor trim($dt_data_valor);
    
array_push($datatext["$dt_campos_posicion[$posicion]"],$dt_data_valor);
}

function 
agregar_campo($n_campo){
$n_campo trim($n_campo);
global 
$datatext;
global 
$dt_campos_posicion;
if(!isset(
$datatext)){
 
$datatext = array(
  
"$n_campo" => array()
 );
 
$dt_campos_posicion = array("$n_campo");
}
else{
 
$temp_data = array(
  
"$n_campo" => array()
 );
 
$datatext array_merge($datatext,$temp_data);
 
array_push($dt_campos_posicion,"$n_campo");
}
}
?>
2- Cuando lo vayas a utilizar incluyes dentro del archivo php que mostrara los resultados el datatext_function.php
Código PHP:
<?php include("datatext_function.php")?>
3- Para usarlo necesitaras darle valores a unas variables que la funcion necesitara y que llamara de forma global:
Código PHP:
<?php
$dt_archivo 
"data/data.dt";
$char_campo "~";
$char_texto "#";
$char_divisor "^";
?>
Aqui te defino para que sriven las variables:
1- $dt_archivo es donde diras que archivo deseas abrir con su ruta.
2- $char_campo este caracter es para saber cuales seran los campos que formaran la estructura de tu archivo, aqui me refiero a que tu dijiste que tienes: nombre,apellido,email como campos o maneras de estructurar tu txt.
La primera linea de tu txt debe ser:
~id^nombre^apellido^email

Asi la funcion sabe que la linea inicial osea la primera linea del archivo de texto son los campos porque inician con ~, fijate que el separador que uso para dividir los campos es el signo ^

3- $char_texto esta es la detecta que las demas lineas de contenido son las que inician por # puedes poner otro signo si deseas que las lineas de contenido inicien con % o cualquier otro signo.

4- $char_divisor este es el que se encarga de dividir los contenidos y los campos, podras ver que el divisor en el ejemplo de los campos era ^.

Ejemplo de un archivo txt ya formatiado con esta estructura que la funcion usara y no dara errores:

~id^nombre^apellido~email
#1^Manuel^Gonzalez^[email protected]
#2^Luis^Patiño^[email protected]
#3^Alberto^Castrellon^[email protected]

Alli ves como esta estructurado un archivo adecuadamente para que la funcion y las variables de configuracion trabajen bien., asi se leera sin error todo y se cargara a un array que sera $datatext

Es impredecible que el primer campo se llame id y que el contenido de cada nombre y apellido lleve delante un id unico para que asi tengan una ubicacion fija en todo esto.

5- Despues de tener todo solo llamas a la funcion que cargara todo y convertira a la variable array como global para que la puedas accesar.
Código PHP:
<?php
# Aqui se inicia la funcion y carga todo el contenido del txt
datatext_start($dt_archivo);

# aqui se muestra en pantalla los contenidos recorriendo
# el array con un for., hasta el momento funciona bien con for.
for($i=0;$i<count($datatext["id"]);$i++) {
 echo 
"<b>".$datatext["nombre"][$i];
 echo 
"</b><br>";
 echo 
$datatext["apellido"][$i]."<br>";
 echo 
$datatext["email"][$i]."<hr>";
}
?>
has las pruebas con la estructura que te dije y usando la funcion y veras que funcionara bien, despues dentro del for puedes hacer validaciones como por ejemplo:
Código PHP:
<?php
for($i=0;$i<count($datatext["id"]);$i++) {
 if(
$datatext["nombre"][$i]=="Manuel"){
  echo 
$datatext["email"][$i]."<br>";
 }
}
?>
Ese ejemplo dice que si el nombre coincide con Manuel que imprima el email sino que no imprima nada.

Espero te sirva cualquier consulta dejamela saber.
  #4 (permalink)  
Antiguo 18/05/2005, 02:46
 
Fecha de Ingreso: abril-2005
Mensajes: 9
Antigüedad: 19 años
Puntos: 0
gracias por tu ayuda, de verdad seguro que me sirve.Es que he comenzado a estudiar PHP en la universidad y casi no nos han dado materia, nos lo han dado todo muy rapido y no me entero muy bien.
Lo que mas falta me hacia era el sistema para leer todos los datos de un archivo de texto mediante un array y un for .
  #5 (permalink)  
Antiguo 18/05/2005, 11:46
 
Fecha de Ingreso: abril-2005
Mensajes: 9
Antigüedad: 19 años
Puntos: 0
vale muchas gracias , ahoar no tengo mas tiempo para dedicarle al PHP, mañana te cuento, muchas gracias!!!
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 03:22.