- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema script per news aggiornabili
-
<FONT face="Courier New">[php]$i=count($textarray);
echo "<table><caption align=center>NEWS</caption>";
while($i<=0)
{
$string=substr($textarray*, 0,-1);
list($data, $text)=explode("@", $string);
echo '<tr valign=center>';
echo "<td>".$data."</td><td>".$text."</td>";
echo '</tr>';
$i=$i-1 ;
}
echo '</table>';
?> [/php]
-
con il codice che mi hai dato in news.php non vedo niente ho provato a modificare la condizione del ciclo
da while($i<=0) a while($i>0)
cosi facendo vedo le news nel giusto ordine ma ho 2 errori nelle linee
$string=substr($textarray*, 0,-1);
list($data, $text)=explode("@", $string);devo cambiare qualcosa anche qua?
-
@markez said:
con il codice che mi hai dato in news.php non vedo niente ho provato a modificare la condizione del ciclo
da while($i<=0) a while($i>0)
maledetta fretta...ovviamente maggiore o uguale, indi $i=>0@markez said:
$string=substr($textarray*, 0,-1);
list($data, $text)=explode("@", $string);devo cambiare qualcosa anche qua?
che errori ti da?
-
se metto anche l'uguale nella condizione nn visualizza niente se metto solo > visualizza le news corrette e poi questi 2 errori
Notice: Undefined offset: 4 in c:\programmi\easyphp1-8\www\news\news.php on line 12Notice: Undefined offset: 1 in c:\programmi\easyphp1-8\www\news\news.php on line 13
-
ti visualizza tutte le news?
non comprendo perchè quegli errori......estraiti l'HTML della pagina e dagli un occhiata
oppure prova ad uppare il tutto, certe volte in locale potrebbe dare noie
-
il codice che fa le bizze è il seguente provalo da te se non tida errori alla faccia di easy php per me è ok
<html>
<head><title>news</title>
</head>
<body>
<?php
$file="news.txt";
$textarray=file($file);
$i=count($textarray);
echo "<table><caption align=center>NEWS</caption>";
while($i>0)
{
$string=substr($textarray*, 0,-1);
list($data, $text)=explode("@", $string);
echo '<tr valign=center>';
echo "<td>".$data."</td><td>".$text."</td>";
echo '</tr>';
$i=$i-1 ;
}
echo '</table>';
?>
</body>
</html>
-
<html> <head><title>news</title> </head> <body> <?php $file="news.txt"; $textarray=file($file); $i=count($textarray); echo "<table><caption align=center>NEWS</caption>"; while($i>=0) { $string=substr($textarray*, 0,-1); list($data, $text)=explode("@", $string); echo '<tr valign=center>'; echo "<td>".$data."</td><td>".$text."</td>"; echo '</tr>'; $i=$i-1 ; } echo '</table>'; ?> </body> </html>
risolto
invece di =>, andava scritto >=
l'ho uppato e non da nessun errore, ne con FF ne con IE
-
ok tutto aposto, però cè un altra cosa avendo invertito il ciclo while se vado a capo nella textarea viene visualizzata nelle news prima la linea con cui sono andatoa a capo e poi la data e l'inizio delle news
es :
hhjjjj
dddd
ddddd
12-12-12-11:09:15 ndhdhdhdhdhdcavolo è un bel problema
-
ma lo stai provando sempre in locale???
io ho uppato un file txt, che per come vien scritto dal control_panel.php è così scritto:
2007-12-20@testo 1
2007-12-21@testo 2
2007-12-22@testo 3
2007-12-23@testo 4
2007-12-25@testo 5
2007-12-26@testo 6ho uppato quel codice, e mi vien fuori:
NEWS
2007-12-26 testo 6
2007-12-25 testo 5
2007-12-23 testo 4
2007-12-22 testo 3
2007-12-21 testo 2
2007-12-20 testo 1non comprendo perchè ti escano quei valori.......
-
ok, son pirla io :D:D
[PHP]......
$file="news.txt"; //* assegnamo il path del file /
$text="";
$text=$_REQUEST["text"];
$text=str_replace("\n", " ", $text); // aggiungi questo in control_panel.php */
if ($text!="")
.....
..[/PHP]
-
Mi sa che non hai capito il problema, se nella text area io scrivo es:
prima lineascritta nella textarea //poi vai a capo
seconda lineascritta nella textarea //poi vai a capo
terza lineascritta nella textarea //poi vai a caponella pagina delle news vedrò:
terza lineascritta nella textarea
seconda lineascritta nella textarea
2007 12-12-11:ecc..prima lineascritta nella textarea
2007 12-12-11:ecc..news precendenteleggo dall ultima riga della news a quella di inizio news
questo è il problema a cui mi riferivo
prova a testarlo da te cosi capisci subito.
-
ho testato, risolvi aggiungendo quello che ho scritto sopra
-
grande tutto OK!
adesso mancano solo i fiorellini...
ti ringrazio alla prossima!
-
Scuasa Samyorn ma mi sono accorto che nella text area se vado a capo nelle news ( che vengono visualizzate Correttamente) l'acapo non viene riportato,
quindi ad esmpio se scrivo nella textarea:
prova.
prova2
nelle news trovero scritto:prova.prova2
si puo fare in modo che l'acapo sia riportato nelle news?
e mi chiedevo "se nn era troppo sbattimento" cosa dovrei fare per iserire un campo Titolo nell form e riportarlo come titolo all inizio delle news
giuro che poi non ti rompo piu le palle:D!
ciao
-
@markez said:
Scuasa Samyorn ma mi sono accorto che nella text area se vado a capo nelle news ( che vengono visualizzate Correttamente) l'acapo non viene riportato, quindi ad esmpio se scrivo nella textarea:
prova.
prova2
nelle news trovero scritto:
prova.prova2
Giusto che faccia così, e ti spiego perchè: il comando $textarray=file($file);
non fa altro che creare un array (penso tu sappia che significa) prendendo i dati dal txt e li posiziona, dal primo all'ultimo, separandoli ogni volta che trova il newline (\n), ovvero se il file è strutturato così:
testoriga1\n (\n ovviamente nel txt non lo vedi ma c'è
testoriga2\n
testoriga3\n
testoriga4\n
.......
.......
testorigan\n
con il comando file ti si creera' un array che sarà così strutturato:
$textarray[0]=testoriga1(+il simbolo di a capo che non devi chiedermi qual'è XD)
$textarray[1]=testoriga2
......
......
$textarray=testorigan
infatti per ovviare al problema di prima che ti sballava la visualizzazione abbiam dovuto eliminare tutti gli \n presenti nel testo che parte dalla textarea ( $text=str_replace("\n", " ", $text); ).
oh, non voglio fare il professorino eh non ne sono all'altezza...
ritengo giusto che tu capisca cosa stai facendo, magari ti potrebbe servire in futuro
@markez said:
si puo fare in modo che l'acapo sia riportato nelle news?
niente paura il problema si risolve facilmente, modifica i file per come di seguito:
Control_panel.php
[php].........
........
$text=$_REQUEST["text"];
$text=str_replace("\n", "", $text); //** riga da modificare */
if ($text!="")
......
.......
[/php]news.php
[php].....
.....
while($i>=0)
{
$string=substr($textarray*, 0,-1);
list($data, $text)=explode("@", $string);
$text=str_replace("", "<br>", $text); //** riga da aggiungere */
echo '<tr valign=center>';
.....
.....[/php]@markez said:
e mi chiedevo "se nn era troppo sbattimento" cosa dovrei fare per iserire un campo Titolo nell form e riportarlo come titolo all inizio delle news
non ho ben capito, intendi qualcosa come il NEWS che già ti appare quando vedi le news o altro??@markez said:
giuro che poi non ti rompo piu le palle:D!
ma figurati XD
per me vale come esercitazione, le news io me le gestisco con Db, pertanto ora ho trovato anche come farle da txt
-
Perfetto! funziona e ho imparato qualcosa di nuovo!
Per quanto rigurda il titolo, si intendevo se per ogni news pubblicata sia possibli mettere un titolo tipo la scritta news.( in modo che ogni nuova news postata abbia un titolo )
L'unica cosa che mancherebbe (ma poi otteniamo veramente la perfezione!) sarebbe un meccanismo per poter fare delle correzioni o cancellare vecchie news...
forse chiedo troppo, però poi abbaimo un vero propio script fatto efinito per la gestione contenuti.ciao
-
Se po fa'
ma se ne parla stasera che son tornato al lavoro adesso XD
-
Mi sono accorto di una piccola anomalia nell' html di news.php:
<html>
<head><title>news</title>
</head>
<body>
<table><caption align=center>NEWS</caption><br />
<tr><td></td><td></td></tr><tr><td>2007-12-14 15:37:20</td><td>seconda prova dello script
<br>da forum realizzato veramente
<br>niente male azz PROVA</td></tr><tr><td>2007-12-14 15:25:52</td><td>prova
<br>acapo</td></tr></table>
</body>
</html>Praticamente ripete le celle prima della data e poi dell testo vuote senza dentro niente ho provato a segnarle con id=data id=text e ottengo:
<html>
<head><title>news</title>
</head>
<body>
<table><caption align=center>NEWS</caption><br />
<tr><td id=data></td><td id=text></td></tr>
<tr><td id=data>2007-12-14 15:37:20</td><td id=text>seconda prova </td></tr>
<tr><td id=data>2007-12-14 15:25:52</td><td id=text>prova</td></tr></table>
</body>
</html>non capisco perchè le ripete una volta vuote prima di riempirle con il testo
-
$i=(count($textarray))-1;
-
ok risolto