Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67

    Estrarre dati da file .txt

    Ciao a tutti, ho un file database.txt strutturato in questo modo:

    E volevo estrarre i dati dal file tramite php, ho messo su questo codice ma non funziona, rende come codice solo .

    Codice PHP:
    <div id="bookmarks">
    <h2>Bookmarks</h2>
    <?php
        $path 
    "/database/bookmarks.txt";
        
    $apri fopen($path,'r');
        
    $file fread($apri);
        
    fclose($apri);
        
    $righe=explode('/n',$righe);
        foreach(
    $righe as $campi){
        
    $campi=explode('|',$campi);
        
    $titolo=$campi[0];
        
    $link=$campi[1];
        echo 
    "<a href=\"$campi[1]\">$campi[0]</a>
    "

        }
    ?>


    </div>
    Non sono molto esperto di php e non riesco a trovare l'errore.

    Il file database.txt si trova nella cartella database

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520

    Re: Estrarre dati da file .txt

    Originariamente inviato da paglia_s
    Ciao a tutti, ho un file database.txt strutturato in questo modo:

    Codice PHP:
    <div id="bookmarks">
    <h2>Bookmarks</h2>
    <?php
        $path 
    "/database/bookmarks.txt";
    ..........................
    Non sono molto esperto di php e non riesco a trovare l'errore.

    Il file database.txt si trova nella cartella database
    database.txt o bookmarks.txt??????????

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Scusa mi sono confuso il file è bookmarks.txt all'interno della cartella database

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    modifica
    Codice PHP:
    $righe=explode('/n',$righe); 
    in
    Codice PHP:
    $righe=explode('/n',$file); 


  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Non va

    Ho provato anche a modificare la linea
    $campi=explode('|',$campi); in $campi=explode('|',$righe);

    ma non cambia nulla...

  6. #6
    Cambia questa riga

    Codice PHP:
    $righe=explode('/n',$file); 
    in

    Codice PHP:
    $righe=explode("\n",$file); 

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova a mettere delle stampe di prova
    Codice PHP:
    <?php 
        $path 
    "/database/bookmarks.txt"
        
    $apri fopen($path,'r'); 
        
    $file fread($apri); 
        
    fclose($apri); 
        
    $righe=explode('/n',$file); 
        echo 
    "numero righe ".count($righe)."
    "
    ;
        foreach(
    $righe as $campi){
        echo 
    "entro
    "

        
    $vet=explode('|',$campi); 
        
    $titolo=$vet[0]; 
        
    $link=$vet[1]; 
        echo 
    "<a href=\"$campi[1]\">$campi[0]</a>
    "
    ;  
        } 
    ?>

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Mi stampa
    codice:
    numero righe 1
    entro

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    67
    Usando un codice diverso, che ho trovato con google, per aprire il file riesco a visualizzare la singola linea:

    Codice PHP:
    <?php  
        $contenuto_file 
    =file_get_contents("database/bookmarks.txt");
     
    $rows explode("\n"$contenuto_file);
     
     foreach(
    $rows as $row) {
         echo 
    $row "
    \n"
    ;
    }  

    ?>
    Mi stampa ciò che deve ovvero:
    Poi andando avanti non va più.

    All'interno del foreach ho diviso la singola linea con explode così:
    Codice PHP:
    <?php  
        $contenuto_file 
    =file_get_contents("database/bookmarks.txt");
     
    $rows explode("\n"$contenuto_file);
     
     foreach(
    $rows as $row) {
          
    $linea explode("|"$rows);
          
         echo 
    $linea[0].$linea[1];
    }  

    ?>
    Così ho in qualsiasi altro modo non va.

    EDIT nel secondo explode avevo invertito row con rows, così va:
    Codice PHP:
    <?php  
        $contenuto_file 
    =file_get_contents("database/bookmarks.txt");
     
    $rows explode("\n"$contenuto_file);
     
     foreach(
    $rows as $row) {
        
    $linee explode("|"$row);
        echo 
    $linee[0].$linee[1];
    }  

    ?>
    Devo capire comunque perchè prima non andava...grazie per l'aiuto

  10. #10
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Quel che non andava nel codice originario è descritto nei commenti

    Codice PHP:
    <?php 
        $path 
    "/database/bookmarks.txt"
        
    $apri fopen($path,'r'); 
    /*
    Errore: fopen richiede un secondo argomento (numero di byte da leggere). Per leggere tutto il 
    contenuto viene utilizzato come secondo argomento filesize($path). In alternativa alle tre
    istruzioni fopen, fread, fclose puoi utilizzare file_get_contents
    */
        
    $file fread($apri); 
        
    fclose($apri); 
    /*
    Errore: $righe non è definito ma hai utilizzato $file per memorizzare il contenuto del file
    Errore: /n è sbagliato, il new line è \n.
    Errore: Racchiudere lo \n fra apici singoli non risolve l'escape ma rappresenta la stringa
    costituita dai due caratteri. Con gli 'testo' puoi utilizzare per escaping solo \\\\' e \\\\ per
    rappresentare la nuova linea occorre racchiudere fra "testo\n" 
    */
        
    $righe=explode('/n',$righe); 
        foreach(
    $righe as $campi){ 
            
    $campi=explode('|',$campi); 
            
    $titolo=$campi[0]; 
    /*
    Fonte di problemi: $campi[1] andrebbe sottoposta alla funzione urlencode
    Fonte di problemi: $campi[0] andrebbe sottoposta alla funzione htmlspecialchars
    */
            
    $link=$campi[1]; 
            echo 
    "<a href=\"$campi[1]\">$campi[0]</a>
    "
    ;  
        } 
    ?>
    Non mi sembra ci sia altro
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

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.