Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    funzione trim per flat database

    ciao a tutti sono nuovissimo del forum, ho bisogno di una mano, stavo provando
    una specie di flatdatabase (un database senza SQL) basato su txt, la struttura del file che viene creato è questa:
    nome file: contenuti.txt
    struttura interna:
    <h3>titolo</h3>|<h5>data e ora</h5>|messaggio.....|
    <h3>titolo</h3>|<h5>data e ora</h5>|messaggio.....|
    <h3>titolo</h3>|<h5>data e ora</h5>|messaggio.....|

    per visualizzarlo ho creato questo ciclo
    <?
    $percorso=file("contenuti.txt");
    echo "<table>";
    while(list(,$value) = each($percorso))
    {
    list($titolo, $dataora, $corpo) = split("[|]", $value);
    $params["titolo"] = trim($titolo);
    $params["dataora"] = trim($dataora);
    $params["corpo"] = trim($corpo);
    echo "<tr><td>".$params["titolo"].$params["dataora"]."</td></tr><tr><td>".$params["corpo"]."</td></tr>\r\n";
    }
    echo "</table>";
    ?>

    il problema sta che se il messaggio è una frase senza il comando a capo, la visualizzazione è precisa, ma se il messaggio è in questo modo

    <h3>titolo</h3>|<h5>data e ora</h5>|me
    ssagg
    io.....|
    <h3>titolo</h3>|<h5>data e ora</h5>|messaggio.....|
    <h3>titolo</h3>|<h5>data e ora</h5>|messaggio.....|

    il ciclo interpreta il comando a capo e racchiude in un <td> nuovo il nuovo rigo, c'è una soluzione con un comando specifico che non conosco o bisogna ingegnarsi in qualche modo? oppure sbaglio io il modo di suddividere le aree 'titolo' 'data e ora' e 'messaggio' nel file txt?

  2. #2
    quando salvi il messaggio nel file di test codifica i caratteri speciali (tabulazione, ritorni a capo, etc) (forse basterebbe usare htmlentities) in maniera che non inserisce \ n (tutto attaccato,l'andata a capo) nel file e quindi non ti crea più righe per lo stesso record.

    domanda idiota: ma se uno nel messaggio inserisce una pipe, succede un macello?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    santino sono neofita di php, per creare il file txt uso questa funzione
    <?php
    $titolo=$_POST[titolo];
    $corpo=($_POST[corpo]);
    $nomefile="contenuti.txt";
    $vecchiofile=fopen($nomefile, "r");
    $contenuto=fread($vecchiofile, filesize("$nomefile"));
    fclose($vecchiofile);
    $data=(date("d-m-Y"));
    $ora=(date("H:i:s"));
    $f=fopen($nomefile, "w+");
    fwrite($f,"<h3>$titolo</h3>|<h5>$data alle ore $ora</h5>|$corpo|\r\n");
    fwrite($f,"$contenuto");
    fclose($f);
    ?>
    che prende i dati del titolo e messaggio da un form, aggiunge la data e ora, e sposta il nuovo messaggio in cima, e qui che dovrei codificare il 'messaggio'? come?
    che intendi per pipe?

  4. #4
    | <-- pipe


    la variabile $corpo, prima del fwrite, deve essere "pulita" codificando i caratteri che danno fastidio... ora non so farti un esempio pratico perhè non l'ho mai fatto, puoi provare con htmlentities oppure usando str_replace per cambiare i caratteri che non ti piacciono (due su tutti: \ n e la pipe). Ovviamente dovresti farlo anche per il titolo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    bhe la pipe --> | mi serve per delimitare i campi, dovrei codificare il comando \n , ma poi quando legge il file non mi manda a capo le parole quando deve

  6. #6
    Originariamente inviato da phpneo
    bhe la pipe --> | mi serve per delimitare i campi, dovrei codificare il comando \n , ma poi quando legge il file non mi manda a capo le parole quando deve
    perchè poi in lettura lo devi decodificare...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    in lettura ho fatto così
    <?php
    $percorso=file("contenuti.txt");
    echo "<table><tr>";
    while(list(,$value) = each($percorso))
    {
    list($titolo, $dataora, $corpo) = split("[|]", $value);
    $params["titolo"] = trim($titolo);
    $params["dataora"] = trim($dataora);
    --> $params["corpo"] = trim($corpo=(str_replace("§","
    ",$corpo))); <--

    e in scrittura ho fatto così
    <?php
    $titolo=$_POST[titolo];
    $corpo=($_POST[corpo]);
    --> $corpo=str_replace("\r\n","§",$corpo); <--

    ho usato la tilde §, non credo che la si utilizzerà in un testo
    spero non mi crei problemi in futuro questa procedura, se hai consigli per modifiche dimmelo, grazie mille per l'aiuto

  8. #8
    la funzione di codifica/decodifica è un pò troppo blanda...anche perchè se uno nel titolo scrive:

    codice:
    questo è | il mio titolo

    o te lo fà nel body, ti va tutto a quel paese
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    stavo pensando scrivere nella pagina del form "vietato usare | e §" altrimenti dovrei sfogliare la tabella ascii e cercare 2 caratteri che non si usano tipo questi Æ e Ħ,

    adesso devo vedere come inserire un collegamento ipertestuale ho provato nel form ma se scrivo <a herf://www.google.it>google</a> dopo quando lo visualizzo l'indirizzo è http://www.miohost.it\<a href="http:...google.it</a>, c'è una funzione? non so se si è capito ma sto cercando di costruire una struttura tipo blog, mooooolto semplice senza funzioni megagalattiche

  10. #10
    Originariamente inviato da phpneo
    stavo pensando scrivere nella pagina del form "vietato usare | e §" altrimenti dovrei sfogliare la tabella ascii e cercare 2 caratteri che non si usano tipo questi Æ e Ħ,

    adesso devo vedere come inserire un collegamento ipertestuale ho provato nel form ma se scrivo <a herf://www.google.it>google</a> dopo quando lo visualizzo l'indirizzo è http://www.miohost.it\<a href="http:...google.it</a>, c'è una funzione? non so se si è capito ma sto cercando di costruire una struttura tipo blog, mooooolto semplice senza funzioni megagalattiche

    per il secondo punto in genere si usa BBcode...per il primo, cerca una soluzione adatta
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.