Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    20

    Ricerca record di un file mediante un form realizzato con pagina HTML

    Ciao a tutti, sono alle prime armi col PHP e non ho pretese di efficienza del codice. Dovrei stendere entro le prossime ore una pagina XHTML+PHP che realizzi una soluzione per questo problema:

    Ho una siffatta pagina XHTML:
    -----------------------------------
    Ricerca nominativi
    nome: <inserire campo> cognome: <inserire campo>
    #matricola: <inserire campo> TASTO_INVIA(SUBMIT)
    -----------------------------------

    La pagina invia le variabili 'nome', 'cognome', 'n_matr' ad una pagina
    php. Non uso sessioni. Le passo con metodo GET.
    L'utente può inserire da 0 a 3 parametri (tutti, 2, 1 o 0. Es. inserisce
    nome, cognome, matricola; oppure solo matricola; oppure niente; oppure
    solo nome, ecc.).


    La pagina XHTML+PHP chiamata dalla pagina XHTML appena descritta apre un siffatto file (.txt) di record:

    <#mat>;<nome>;<cognome>;/n

    NOTA:nel file ci sono tante righe come questa e niente altro

    Es.
    55645;Paolo;Rossi;
    65458;Mario;Bianchi;
    ......


    Tale pagina PHP+XHTML deve produrre nel browser dell'utente una pagina XHTML con tutte le linee del file che matchano con la ricerca fatta dall'utente.

    Es.
    -passo 0 variabili (tutti i campi della prima pagina sono stati lasciati
    vuoti)
    ->stampo tutti i record del file poichè l'utente non ha ristretto la
    ricerca a record particolari

    -passo 1 variabile
    ->stampo tutti i record del file che hanno quel campo che matcha con
    l'unico campo indicato dall'utente (es. n_mat = campo numero matricola del record letto dal file,
    oppure nome= campo nome del record del file).

    ...

    -passo 3 variabili
    ->stampo tutti i record i cui campi corrispondono a quelli indicati
    nella prima pagina dall'utente.


    Non ho dimestichezza con le potenzialità di PHP proprie dei linguaggi di
    scripting quindi ora sto pensando ad un approccio tradizionale tipo
    linguaggio imperativo. Una cosa del tipo:

    if(nome&cognome&n_matr){ // l'utente li ha impostati tutti e 3
    CREA STRINGA=$_GET['nome'].";".$_GET['cognome'].";".$_GET['n_mat'].";"
    {scorri file leggendo un record per volta
    if(CREA STRINGA == riga letta)
    stampa_linea;
    }
    }
    else{
    if(n_matr){ // l'utente ha impostato NUMERO MATRICOLA
    scorri file leggendo un record alla volta
    if(nome){ // l'utente ha impostato NOME
    ....
    ....

    Che approccio si potrebbe seguire nel definire un algoritmo che risolva questo problema? Senza usare funzionalità particolarmente avanzate possibilmente (no PHP ad oggetti, sessioni o altre tecniche avanzate).

    Grazie per il supporto!

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Perchè usi file di testo e non db????

    cmq dovresti fare una cosa del genere
    Codice PHP:
    $filtronome=false;
    $filtrocognome=false;
    $filtromatricola=false;
    $nome="";
    $cognome="";
    $matricola="";
    if(isset(
    $_GET['nome']))
    {
        
    $nome=$_GET['nome'];
        
    $filtronome=true;    
    }
    if(isset(
    $_GET['cognome']))
    {
        
    $cognome=$_GET['cognome'];
        
    $filtrocognome=true;
    }
    if(isset(
    $_GET['matricola']))
    {
        
    $matricola=$_GET['matricola'];
        
    $filtromatricola=true;
    }
    $fp fopen("file.txt""r");
    if(!
    $fp) die ("Errore nella operaione con il file");
    while (!
    feof ($fp))
    {
         
    $riga=fgets($fp4096);
         
    $vect=explode($riga);
         
    $stamparecord=true;
         if(
    $filtromatricola)
         {
             
    $stamparecord = ($matricola==$vect[0])  
         }
         if(
    $filtronome && $stamparecord)
         {
            
    $stamparecord =  ($nome==$vect[1])
         }
         if(
    $filtrocognome && $stamparecord)
         {
            
    $stamparecord = ($cognome==$vect[2])
         }
         if(
    $stamparecord)
         {
               echo 
    $matricola." ".$nome." ".$cognome."
    "
    ;
         }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.