Visualizzazione dei risultati da 1 a 7 su 7

Discussione: database testuale

  1. #1

    database testuale

    ciao a todos,
    ho un file di testo "logs.txt" che memorizza tutte le ricerche fatte sul mio sito con la seguente sintassi:

    data -- frase_cercata1
    data -- frase_cercata2
    data -- frase_cercata3

    es:

    30.09.04 -- sangue misto
    30.09.04 -- next
    30.09.04 -- leftside
    30.09.04 -- left

    mi aiutereste a creare un piccolo script che accorpi tutte le ricerche uguali (meglio simili, ma..), in modo che io possa sapere quante volte è stato ricercato un dato termine o una data frase?

    grazie mille!

  2. #2
    vabbè dai.
    anche semplicemente darmi qualche consiglio,
    poi allo script completo ci arrivo da solo.

  3. #3
    con questo puoi accorparti tutte le ricerche effettuate, prova a giocarci un po'...
    codice:
    $lines = file("file.txt");
    $search = array();
    foreach($lines as $line) {
          list($data, $frase) = explode(" -- ", trim($line));
          if(array_search($frase, $search)) {
                $search[] = $frase;           
          }
    }
    print_r($search);
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  4. #4
    difronte a queste cose mi accorgo di sapere davvero poco...

    usando questo codice mi stampa a video Array()

    allora:
    //apro il file
    $lines = file("file.txt");
    //definisco la variabile $search come array
    $search = array();
    //per ogni riga del file
    foreach($lines as $line) {

    //frase e data vengono memorizzati nell'array search
    list($data, $frase) = explode(" -- ", trim($line));
    if(array_search($frase, $search)) {
    $search[] = $frase;
    }
    }
    }
    //stampa il contenuto dell'array
    print_r($search);

    è giusto?
    si, ma non so come utilizzarlo per i miei scopi...

  5. #5
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Posso consigliarti di appoggiarti a MySQL e di usare gli strumenti di SQL per fare tutto ?

    Parti dal tuo file di testo e crea una tabella, supponiamo di chiamarla "ricerche" che lo modelli. 3 campi bastano: ID, data, ricerca.

    codice:
    // Apri il file:
    $file = fopen('logfile', 'r');
    
    while ($linea = fgets($file))
        {
        $dataRicerca   = substr($linea, 0, 8);
        $valoreRicerca = substr($linea, 13);
    
        mysql_query("INSERT INTO RICERCHE (DATA, RICERCA) VALUES ('$dataRicerca', '$valoreRicerca')")
        }
    
    flcose($file);
    A questo punto hai tutti i dati in una bella tabella e puoi usare gli strumenti dell'SQL come:

    codice:
    $result = mysql_query("SELECT DISTINCT(RICERCA) FROM RICERCHE ORDER BY 1");
    Che ti ritorna tutti i valori di ricerca distinti, ordinati per valore. Con un count del recordset di ritorno ottieni quanti sono questi valori. Puoi contare quanti sono, contare quali sono i piu' comuni, e cosi' via, il tutto con query leggibilissime e facili da eseguire senza impazzire a programmare tutto a mano.

    Una volta che hai i dati in una tabella.. sei a posto. Un DBMS del resto a che serve se non a manipolare i dati?

    Personalmente sono talmente abituato ad appoggiarmi a un DBMS che ormai lo uso anche se magari e' piu' lento solo per le comodita' presenti e future che puo' offrire.

  6. #6
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Mi permetto di aggiungere che se tu potessi, dovresti gia' inserire i termini ricercati nella tabella anziche' al file di testo.

    Un DBMS ti aiuta a modellare e dividere i dati, e poi pensa a lui a tirare fuori tutti i risultati che ti servono, anche in casi come questi che sembrano semplici.

    Avendo uno strumento di questa potenza a disposizione, e' bene usarlo.

  7. #7
    oooppppssss, avevo dimenticato un punto esclamativo

    codice:
    //apro il file
    $lines = file("file.txt");
    
    //definisco la variabile $search come array
    $search = array();
    
    //per ogni riga del file
    foreach($lines as $line) {
          //le frasi vengono memorizzati nell'array search
          list($data, $frase) = explode(" -- ", trim($line));
          if(!array_search($frase, $search)) {
                $search[] = $frase;           
          }
    }
    //stampa il contenuto dell'array
    print_r($search);
    che poi è sicuramente più efficiente, più semplice...insomma "più" in tutto... utilizzare mysql è fuor di dubbio
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

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.