Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Dov'è l'errore?

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58

    Dov'è l'errore?

    Ciao,
    ho un file txt dove inserisco dei dati:
    id|data|corso|nome|email|messaggio

    poi ho un file bacheca dove stampo ogni riga di quel file:
    Codice PHP:
    <?php
    function myfragment($str$n$delim='[...]'

       
    $len strlen($str); 
      
       if (
    $len $n) { 
           
    preg_match('/(.{' $n '}.*?)b/s'$str$matches); 
           return 
    rtrim($matches[1]) . $delim
       } 
       else 
           return 
    $str
     
    }
    function 
    strSelect$myString$maxLength ) {
        
    $out "";
        
    $s explode" ",$myString );
        for( 
    $i 0$cs count$s ); $i $cs$i++ ) {
            
    $out .= $s[$i]." ";
            if( isSet( 
    $s[$i+1] ) && ( strlen$out ) + strlen$s[$i+1] ) ) > $maxLength ) {
                break;
            }
        }
        return 
    rtrim$out );
    }
    $common file('public/bacheca/db/stopwords.txt'); 

    $total count($common);     

    for (
    $x=0$x $total$x++) 
        
    $common[$x] = '/'.trim(strtolower($common[$x])).'/i'

    $contatore 0
    $textfile fopen("public/bacheca/db/messaggi.txt""r"); 

    while (
    $rigafile fgets($textfile,1024)) 

    $campiriga explode("|"$rigafile); 

    $messaggioCensuratopreg_replace($common'XXXX'$campiriga[5]); 

    $corso_corto strSelect($campiriga[2],40)."...";
    $messaggio_link myfragment($messaggioCensurato,15,'[[url="#"]...dettagli[/url]]');

    echo 
    "<font color=#ff9900>-</font>$campiriga[0]-$campiriga[1]-$corso_corto-".stripslashes($messaggio_link)."-[b]$campiriga[3][/b]
    "



    fclose($textfile); 
    ?>
    infine ho il file "messaggiosingolo", dove visualizzo il singolo messaggio o meglio dovrei visualizzarlo:
    Codice PHP:
    <?php
    $id 
    $_GET["id"];
    $textfile fopen("public/bacheca/db/messaggi.txt""r");

    while ( 
    $rigafile fgets($textfile,1024)) {
     
    $campiriga explode("|"$rigafile);
     
    $idriga $campiriga[0];

     if (
    $idriga == $id) {
      
    $cid $campiriga[0];
    $cdata $campiriga[1];
    $ccorso $campiriga[2];
    $cnome $campiriga[3];
    $cemail $campiriga[4];
    $cmessaggio $campiriga[5];
     }

    }
    fclose($textfile);
    ?>
    ...
    ...
    ...
    <span class="Stile3">[b]Data[/b]</span>
    <input name="data" type="text" class="Stile4" value="<?=$campiriga[1]?>" size="15">


    <span class="Stile3">[b]Corso[/b]</span>
    <input name="corso" type="text" class="Stile4" value="<?=$campiriga[2]?>" size="75">


    <strong class="Stile3">Nome[/b]
    <input name="nome" type="text" class="Stile4" value="<?=$campiriga[3]?>" size="25">


    <strong class="Stile3">Messaggio[/b]
    <textarea name="messaggio" cols="60" class="Stile4"><?=$campiriga[5]?></textarea>
    Il problema è che nel file messaggiosingolo.php mi stampa sempre e solo l'ultimo messaggio, ossia l'ultima riga.

    Sto impazzendo, vi prego trovatemi l'errore.
    Grazie a tutte le anime pie,
    cicileu

  2. #2
    all interno del tuo while
    while ( $rigafile = fgets($textfile,1024)) {
    setti i valori, ma non usi un array, sono delle semplici variabili, dunque ad ogni "giro" di while sovrascrivi i valori letti la volta prima

  3. #3
    In questo modo interrompi il ciclo quando hai trovato il rigo giusto, dovrebbe stamparti i valori attesi e non sprechi risorse in giri inutili.
    Ciao

    Codice PHP:
    <?php
    $id 
    $_GET["id"];
    $textfile fopen("public/bacheca/db/messaggi.txt""r");

    while ( 
    $rigafile fgets($textfile,1024)) {
    $campiriga explode("|"$rigafile);
    $idriga $campiriga[0];

    if (
    $idriga == $id) {
      break;
    }

    }
    fclose($textfile);
    ?>
    ...
    ...
    ...
    <span class="Stile3">[b]Data[/b]</span>
    <input name="data" type="text" class="Stile4" value="<?=$campiriga[1]?>" size="15">


    <span class="Stile3">[b]Corso[/b]</span>
    <input name="corso" type="text" class="Stile4" value="<?=$campiriga[2]?>" size="75">


    <strong class="Stile3">Nome[/b]
    <input name="nome" type="text" class="Stile4" value="<?=$campiriga[3]?>" size="25">


    <strong class="Stile3">Messaggio[/b]
    <textarea name="messaggio" cols="60" class="Stile4"><?=$campiriga[5]?></textarea>

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    grazie,
    provo e vi faccio sapere!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    58
    Niente da fare, continua a leggere sempre l'ultima riga.
    Come devo fareeee!?!
    Inoltre mi da sempre errore:
    Notice: Undefined offset: 1 on line 330 nel file bacheca, cioè:
    Codice PHP:
    return rtrim($matches[1]) . $delim
    quando inserisco un messaggio troppo lungo.
    Chi mi saprebbe aiutare?
    Sono 5 gg che sto tribolando.
    Grazie a tutti,
    Cicileu

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.