ciao,
allora ho un file txt del tipo
id|data|corso|nome|email|messaggio
campiriga[0] è l'id
campiriga[1] è la data
ecc.
questo file lo riempio attraverso un form per l'inserimento di messaggi.
nella bacheca voglio stampare ogni singolo messaggio in modo tale che se sono troppo lunghi li accorcio con "[...dettagli]" e cliccandoci sopra si apre un popup nel quale recupero tutti i dati di quel messaggio e li stampo a video.
Inoltre ho inserito una funzione in modo da stampare xxxx al posto di parole poco carine.
questo è il 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);
$messaggioCensurato= preg_replace($common, 'XXXX', $campiriga[5]);
$corso_corto = strSelect( $campiriga[2], 40 )."...";
$messaggio_link = myfragment($messaggioCensurato,20,'[[url="messaggiosingolo.php?id=$campiriga[0]"]...dettagli [/url]]');
echo "<font color=#ff9900>-</font>$campiriga[1]-$corso_corto-".stripslashes($messaggio_link)."-[b]$campiriga[3][/b]
";
}
fclose($textfile);
?>
mentre questo è il file "messaggiosingolo.php" dove "cerco" di recuperare i dati. Dico cerco perchè mi recupera solo i dati dell'ultimo messaggio in bacheca e non quelli relativi al messaggio che clicco...non capisco perchè.
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>
Inoltre, in bacheca, quando inserisco un messaggio troppo lungo mi da
Undefined offset: 1 nella riga corrispondente a
Codice PHP:
return rtrim($matches[1]) . $delim;
Ho notato, aggiungendo l'istruzione per far aprire il popup, che non mi recupera più l'id e di conseguenza mi da errore Undefined variable $id = $_GET["id"]
Come posso fare?
Ti ringrazio anticipatamente,
cicileu