Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ciclo con file

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    ciclo con file

    ciao

    sto cercando di creare un semplice GuestBook che si basa su un file di testo con questa struttura:
    (sto scopiazzando un pò da un gb che ho trovato in giro )

    ###@###ora::nome::messaggio###@###ora::nome::messa ggio###@###ora::nome::messaggio ecc...

    dove il ###@###divide i messaggi e il :: i campi del messaggio
    fin qui ok... poi devo per recuperare il numero di messaggi:

    Codice PHP:
    $step=10;
    $fp fopen($filegb'r');
    $content=fread($fpfilesize($filegb)); // contenuto del file
    $rd=explode("###@###"$content ); // rd è il vettore che contiene i messaggi
    fclose($fp);

    $num=count($rd)-1// numero totale di messaggi (non so perchè devo fare -1)
    $pages=ceil ($num/$step); // restituisce la il risultato arrotondato per eccesso OK 
    recupero il numero dei mex e ho creato un vettore RD che contiene i messaggi in forma:
    ora::nome::messaggio

    per visualizzare i messaggi ho fatto il seguente ciclo:

    Codice PHP:
    for($c=$s;$c<=$s+$step-1;$c++){
    if(
    $c<=$num-1){
    $com=explode("::",$rd[$c]);
    $ora=($com[0]);
    $nomex=stripslashes($com[1]);
    echo
    "<font color='green'>
    $ora - Nome:[/b]<font color='black'> ".$nomex;
    $mex=stripslashes($com[2]);
    echo
    "<font color='green'>
    Messaggio: [/b]<font color='black'> "
    .$mex;
    echo
    "
    "
    ;
    }

    il problema è: che non vedo mai l' ultimo messaggio e cosa piu strana prima del primo messaggio tenta di estrarre qualche cosa dal vettore RD e quindi mi da errore:

    Notice: Undefined offset: 1 in f:\programmi\easyphp1-8\www\fm\gb\gb.php on line 100
    Notice: Undefined offset: 2 in f:\programmi\easyphp1-8\www\fm\gb\gb.php on line 102

    qualcuno di voi può aiutarmi ??
    grazie...
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  2. #2

    ............

    Ciao.
    Senza complicarti la vita inserisci i vari
    messaggi ora::nome::messaggio e aggiungi
    un fine linea (su win \n\r su linux \n nel codice
    in questo modo "\n") utilizzi
    file
    e poi con un foreach con dentro un explode recuperi i vari
    valori.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    lo già fatto nella precedente versione con quel sistema... ma ci nono altre complicazioni che non sono prorpio riuscito a risolvere (ho chiesto info anche qui):

    andare a capo nella textarea ad esempio nel file cosi strutturato diventerebbe un nuovo messaggio quando invece fa sempre parte del precedente... ed è inutile utilizzare la funzione nl2br perchè nel momento della scrittura su file la riga va comunque a capo andando a creare un nuovo messaggio errato....


    per questo ho utilizzato questa nuova struttura (che funziona perfettamente sul codice che ho copiato ) ma che da me da qlc errore....

    nel caso mi toccherà fare tutto da zero...

    però se intanto potete dare una occhiata al codice che ho postato....

    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  4. #4

    ......

    Aiutino
    Codice PHP:
    <?php 
    if(isset($_POST['pippo']))
    {
        
    $string str_replace("\n"," ",$_POST['pippo']);
            
    //questo solo per controllare non lo mettere nel codice
        
    $string explode("\n",$string);
        
    print_r($string);
    }

    ?>
    <form action="textarea.php" method="post">
    <textarea name="pippo" cols="10" rows="10">
    </textarea>
    <input name="submit" type="submit" value="schizza">
    </form>
    La via + semplice è + facile




    Ps
    $step=10;
    Nel codice sembrerebbe che tenti di fare un sorta di paginazione
    e non si capisce bene a quale pro.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    si scusate non ho messo il codice per la paginazione (è l' unica che funziona per ora)


    per whisher:

    scusa ma non ho capito... aiuto per cosa... per il codice che ho postato o per il problema di andare a capo nella precedente versione.....

    cosa non devo mettere nel codice la parte sopra il commento o quella sotto
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    ho fatto una prova cosi...

    Codice PHP:
    $filegb="gbrs.txt";

    $fp fopen($filegb'r');
    $content=fread($fpfilesize($filegb));
    echo 
    $content// fino a qui mi scrive tutto quanto ok (almeno)

    $rd=explode("###@###"$content ); // rd è il vettore che contiene i messaggi
    fclose($fp);
    $num=count($rd)-1
    // numero totale di messaggi (è corretto se tolgo il -1 mi conta sempre un messaggio in più )
    for($c=0;$c<=$num;$c++)echo $rd[$c]."
    "

    quando scrive mi parte sempre con uno spazio e poi inizia con i messaggi.....

    CRIBBIO
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  7. #7

    ...........

    $string = explode("\n",$string);
    Questo non lo devi usare.
    Quello che non ho ancora capito è perchè
    scomodi
    for($c=0;$c<=$num;$c++)echo $rd[$c]."
    ";
    quando puoi usare un ben + comodo foreach
    almeno in questo caso.
    Penso che nessuno gestisca la cosa come
    vuoi gestirla tu.
    quando scrive mi parte sempre con uno spazio e poi inizia con i messaggi.....
    $string =###@### "ora::nome::messaggio###@###ora::nome::messaggio## #@###ora::nome::messaggio";
    ###@### non lo mettere all'inzio ma alla fine di ogni post.

    Posta il dodice della form e il recupero/scrittura dati .
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    ok

    ok grazie ho risolto:

    ho messo il divisore dei messaggi (###@###) alla fine di ogni singolo messaggio...

    e riportato il for cosi

    Codice PHP:
    for($c=$s;$c<=$s+$step-1;$c++){
    $com=explode("::",$rd[$c]);
    ....
    .... 

    ultime 2 domande:
    1° il foreach come si usa? (in questo caso)
    2° perchè devo togliere -1 quando voglio contare il numero di messaggi:

    Codice PHP:
    $fp fopen($filegb'r'); 
    $content=fread($fpfilesize($filegb)); // contenuto del file 
    $rd=explode("###@###"$content ); // rd è il vettore che contiene i messaggi 
    fclose($fp); 

    $num=count($rd)-1// numero totale di messaggi (non so perchè devo fare -1) 
    scusate per queste domande ma sto ancora studiando il php e molte cose mi sfuggono...

    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  9. #9

    ....

    foreach
    2° perchè devo togliere -1 quando voglio contare il numero di messaggi:
    Quando una cosa ti suona strana fai le tue belle prove
    e vedi cosa succede.
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

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.