- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema script per news aggiornabili
-
[PHP]echo "<form action='control_panel.php' method='POST' name='news'>
<textarea tabindex=1 wrap=virtual name=text cols=28 rows=6></textarea>";
echo "<input tabindex=2 type=submit value='Invia'>
<input type=reset tabindex=3 value='Reset'></form>";setlocale(LC_TIME, "it_IT");
$DATE= time();
$ARRAY_DATA=getdate($DATE);
$H = $ARRAY_DATA['hours'];
$M = $ARRAY_DATA['minutes'];
$S = $ARRAY_DATA['seconds'];
$T = $ARRAY_DATA['mon'];
$D = $ARRAY_DATA['mday'];
$Y = $ARRAY_DATA['year'];
$DATE=mktime($H, $M, $S, $T, $D, $Y);
$DATA=strftime('%Y-%m-%d %H:%M:%S', $DATE);$file="news.txt";
$text="";
$text=$_REQUEST["text"];
if ($text!="")
{
$handle = fopen ($file, "ab");
$write = $DATA."@".$text."\n";
fwrite ($handle, $write);
fclose($handle);
} [/PHP]
modificalo così
se ti da ancora errore dimmi che errore èP.S.: ma hai messo i vari <html>, <body>, etc etc ho lo hai uppato direttamente così??
-
i tag li ho messo tutti
<html>
<head>...
</head>
<body>
<?php
....
?>
</body>
</html>
mi da ancora errore nella riga $text=$_REQUEST["text"];nonostante questo errore tutto funziona bene,
mi interessava come ti dicevo riuscire a mettere
le news piu recenti per prime
-
@markez said:
mi da ancora errore nella riga $text=$_REQUEST["text"];
nonostante questo errore tutto funziona bene,
mi sfugge perchè dia errore....ma mi par di capire che nonostante dia errore funge tutto, giusto?
@markez said:
mi interessava come ti dicevo riuscire a mettere
le news piu recenti per prime
basta invertire il ciclo, invece di far partire $i da 0 lo fai partire dal valore di count($textarray), ed invece di incrementarlo lo decrementi, ovvero $i=$i-1 ad ogni ciclo ;), ovviamente devi fermare il ciclo quando $i=0
-
ok ti ringrazio! nn ce l'avrei mai fatta da solo...
un ultima cosa scusa se me ne approfitto
per uscire dal ciclo quando $i=0 cosa devofare
-
<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