Visualizzazione risultati 1 fino 7 di 7

Discussione: Ricavare il numero di righe di un file di testo

  1. #1
    Guest

    Predefinito

    Eccomi di nuovo!!

    Qualche anima pia mi saprebbe dire se esiste una funzine, o come posso fare in qualche modo, per sapere quante linee ci sono su un file di testo?

    mi spiego meglio: utilizzo serialize() e unserialize() per visualizzare tutto su una pagna. Ad un certo punto, quando i records sono troppi vorrei cambiare pagina, quindi pensavo di scrivere su un file nuovo dopo che il primo aveva raggiuinto N righe.
    Il mio ragionamento e' corretto, o esistono modo + furbi?

    grazie a tutti

    CriRock

  2. #2
    Guest

    Predefinito

    Potresti fare un ciclo di questo tipo:

    [code:1:dbed8d6e56]$handle=fopen("file.txt","r&quo t;);
    while (!feof ($handle)) {
    $riga = fgets($handle);
    $i++;
    }
    [/code:1:dbed8d6e56]

    e nella variabile $i avrai il numero di righe.

    Oppure puoi memorizzare il numero dei record in un altro file txt (che aumenterai man mano che memorizzi nuovi record), e che puoi recuperare ogni volta che ne hai bisogno.


    Ciaooooo!!!!!!!!

  3. #3
    Guest

    Predefinito

    Graziee!

    Effettivamente così riesco a beccare il num di righe, ma secondo te, perche' mi va in un loop infinito quando gli chiedo un unserialize?
    Probabilmente faccio qualcosa di stupido... ma cosa??
    boh posto il codice che e' meglio....:[code:1:58e5a9b0f2]if (file_exists("prova.txt")&#4 1;

    $ff =fopen("prova.txt", "r");
    $i=0;
    while (!feof ($ff))
    {
    $riga = fgets ($ff);
    $i++;
    };


    for ($i=0; $i=2; $i++)
    {
    $v=unserialize($riga[$i]);
    echo "<tr><td>".stripslashes( $v["nick"])."</td>";
    echo "<td>".$v["testo"&#9 3;."</td>";
    echo "<td colspan=2>".$v["data"].& quot;</td></tr>";
    }[/code:1:58e5a9b0f2]
    Grazie ancora

  4. #4
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Il ciclo for è sbagliato, così ti diventa per forza un loop infinito:

    for funziona così:
    for($i=0 (valore iniziale) ; condizione su $i da verificare ; $i++);

    Tu come condizione hai usato un'assegnazione ($i=2), che il php vede come condizione sempre vera, da cui il loop.

    Se lo scopo è usare unserialize solo nel terzo elemento dell'array $riga, inserisci un if alla fine del ciclo while invece di usare il for, così:
    [code:1:26f1e650dc]while(...){
    .
    .
    if ($i==2){
    $v=unserialize($riga[$i]);
    echo "<tr><td>".stripslashes( $v["nick"])."</td>";
    echo "<td>".$v["testo"&#9 3;."</td>";
    echo "<td colspan=2>".$v["data"].& quot;</td></tr>";
    }
    }[/code:1:26f1e650dc]
    Altrimenti spiega cosa dovrebbe fare il ciclo.

    Altra cosa: lo script nel complesso così non funziona perchè $riga non è creato come array; devi sostituire nel ciclo while $riga = fgets ($ff); con $riga[] = fgets ($ff);
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  5. #5
    Guest

    Predefinito

    Grazieeeeeeeeeeee

    Effettivamente c'era qualche errorino, ma sono nuovo del PHP.. perdono!

    quello ch volevo fare in realta' era una sorta di paginazione, cioe' che mi tirasse fuori un certo num. di records, e poi passare ad una pagina nuova.
    adesso ho messo come condizione del for ($i=0; i<3; i++) e così mi fa vedere solo i primi 3. Esiste la funzione che mi conta i recordes, mi sembra di si...

    Grazie ancora!

    Firmato: il solito rompi Bxxxe ignorante.

  6. #6
    Guest

    Predefinito

    beh se devi crearti un'impaginazione puoi usare delle if
    quindi abbiamo

    <?
    $aum = $inizio + 51;
    $dim = $fine + 51;
    for ($i=$inizio; $i < $fine; $i++){
    if ($i <= $fine){
    echo "$i) numero $i<br>";
    //qui stampi tutto il codice dei record
    }
    else{
    //stampi il link alla seconda pagina passando i parametri
    echo "<a href=\"impagina.php?inizio=$aum&fine=$dim\"&gt ;vai altra pagina</a>";
    }
    }
    ?>

    ciaux ;)

  7. #7
    Guest

    Predefinito

    Boh ragazzi, peggio che andar di notte!!!

    grazie gizax x il codice, ma mi sono arenato un pochino..., quindi ho cercato di concludere i miei ragionamenti seguendo la strada che avevo cominciato, ma aiutoooo!!!!!!
    Una domanda prima di tutto: se voglio passare dei parametri con il metodo $_GET, ma la prima volta che accedi alla pagina questi parametri non ci sono esiste una funzione tipo isset() per verificare se $_get e' valorizzato?

    Provo a postare il codice, ma non insultatemi vi prego!!!!

    grazie...

    if (file_exists("prova.txt"))
    $ff =fopen("prova.txt", "r");
    $i=0;
    while (!feof ($ff))
    {
    $riga[] = fgets ($ff);
    $i++;
    };

    $ultima_pagina= (count($riga)-2);
    if (isset$inizio_pagina))
    {
    $inizio_pagina = ($ultima_pagina -7);
    $fine_pagina = ($ultima_pagina-2); //cicla * 5 records
    }
    else
    {
    $inizio_pagina = $_GET['ini'];
    $fine_pagina = $_GET['F'];

    }

    for ($conta=$inizio_pagina; $conta>$fine_pagina; $conta--)
    $v=unserialize($riga[$conta]);
    echo "<tr><td>" .$conta;
    echo"<td>".stripslashes($v["nick"])."</td>";
    echo "<td>".$v["testo"]."</td>";
    echo "<td colspan=2>".$v["data"]."</td></tr>";
    echo "</table>";

    Grazie ancora

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •