• User

    gurda io vorrei la soluzione piu semplice, senza db posso aggiornare il tutto tramite un form? se si facciamo anche senza db, a me interessa solo tramite un form aggiornare una sezione...

    ciau


  • Consiglio Direttivo

    Ok, togliamo il Db, gestiamo tutto con file di testo

    creati un file news.txt e uppalo nella directory che vuoi, per comodità facciam finta che sia la root e che il file da dove ti posti le news si chiami control_panel.php (quello che dovrai creare per capirci 😉 ), ti gestisci tutto con lo stesso file:

    La pagina con il form dovrà avere questa struttura:

    [php]echo "<form action='control_panel.php' method='GET' name='news'>
    <textarea tabindex=1 wrap=virtual name=text cols=28 rows=6>"; //** wrap virtual serve a non far mettere gli "a capo" anche se nella textarea ci andrai, cols e rows sono le colonne e le righe, giostratele per come preferisci */
    echo "<input tabindex=2 type=submit value='Invia'>
    <input type=reset tabindex=3 value='Reset'></form>";

    //** Tiriamoci su l'orario attuale /
    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);
    //
    * in tal modo abbiamo la data ed ora attuale nel formato 2007-12-11 20:26:50 */

    $file="news.txt"; //* assegnamo il path del file /
    $text="";
    $text=$_GET['text']; //
    assegni quanto postato dalla text area alla variabile e quindi passi al controllo se la variabile ha un valore prima di scrivere sul file /
    if ($text!="")
    {
    $handle = fopen ($file, "ab"); //
    * comando per l'apertura del file /
    $write = $DATA."@".$text."\n"; //
    * scriverà singole righe (\n alla fine sta per newline) mettendo la data e poi il testo separati dal simbolo @ /
    fwrite ($handle, $write); //
    * scriviamo sul file /
    fclose($handle); //
    * ed infine chiudiamo il file, da non dimenticare MAI!!! */
    }
    [/php]
    ovviamente questo è solo il form, poi i "fiorellini" li devi mettere tu (body e quant'altro).

    per visualizzare il contenuto del file, e quindi le news vere e proprie creerai il file news.php:
    [php]$file="news.txt";
    $textarray=file($file); //** ci tiriamo su un array delle varie righe del file */
    $i=0;
    echo "<table><caption align=center>NEWS</caption>";
    while($i<count($textarray))
    {

    $string=substr($textarray*, 0,-1);
    list($data, $text)=explode("@", $string); //**esplodiamo la riga che lui troverà scritta nel segunte modo: 2007-12-12 20:26:50@testodellanews, e la separiamo assegnado quello che sta prima della @ a $data e quello che sta dopo a $text ed infine li facciam vedere */
    echo '<tr valign=center>';
    echo "<td>".$data."</td><td>".$text."</td>";
    echo '</tr>';
    }
    echo '</table>'; [/php]
    in tal modo ti intabellerà il tutto, come sempre ai fiorellini ci penserai te 😉

    Forse non è il metodo migliore, ripeto non sono un esperto, ma almeno è un metodo 😉

    Spero ti sia utile 😉
    Ciau 😉


  • User

    Grazie Samyorn, le tue conoscienze non sono niente male!

    nel file conrol_panel.php cè un piccolo errore nell' html ( cè da chiudere la textarea </textarea>) no problem...;)
    il problema che non sono invece in grado di risolvere e quello che
    easyphp segnala alla seguente riga del file control_panel.php:

    $text=$_GET['text']; //* assegni quanto postato dalla text area alla variabile e quindi passi al controllo se la variabile ha un valore prima di scrivere sul file */

    Infatti il tutto funziona però nella pagina news PHP non appare una sola volta il testo scritto nella textarea, Ma viene ripetuto moltissime volte

    es:
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg

    nel file di testo news.txt è scritto 2007-12-12 11:51:16 gfh... correttamente una sola volta,
    qule puo essere l'errore? forse ho sbagliato qualcosa io...

    ti ringrazio della pazienza ciau!


  • Consiglio Direttivo

    @markez said:

    nel file conrol_panel.php cè un piccolo errore nell' html ( cè da chiudere la textarea </textarea>) no problem...;)

    opsss.....nella fretta :sbonk:

    @markez said:

    il problema che non sono invece in grado di risolvere e quello che
    easyphp segnala alla seguente riga del file control_panel.php:

    $text=$_GET['text'];
    uhm....cambia gli apici (')con le virgolette (") e togli pure il commento, non si sa mai 😄

    @markez said:

    Infatti il tutto funziona però nella pagina news PHP non appare una sola volta il testo scritto nella textarea, Ma viene ripetuto moltissime volte

    es:
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg
    2007-12-12 11:51:16gfhfgfhfgfhfg

    nel file di testo news.txt è scritto 2007-12-12 11:51:16 gfh... correttamente una sola volta,
    qule puo essere l'errore? forse ho sbagliato qualcosa io...

    ti ringrazio della pazienza ciau!
    ho dimenticato di incrementare $i :sbonk:
    a fine ciclo, prima di chiudere la parentesi graffa metti $i=$i++, ovvio che andava in loop XD scusa la sbadataggine 😉


  • User

    Mannagiuz!
    news.php va ancora in loop ti posto il codice che php con la correzzione da te indacata:

    <?php
    $file="news.txt";
    $textarray=file($file); //** ci tiriamo su un array delle varie righe del file */
    $i=0;
    echo "<table><caption align=center>NEWS</caption>";
    while($i<count($textarray))
    {

    $string=substr($textarray*, 0,-1);
    list($data, $text)=explode("@", $string); //**esplodiamo la riga che lui troverà scritta nel segunte modo: 2007-12-12 20:26:50@testodellanews, e la separiamo assegnado quello che sta prima della @ a $data e quello che sta dopo a $text ed infine li facciam vedere */
    echo '<tr valign=center>';
    echo "<td>".$data."</td><td>".$text."</td>";
    echo '</tr>';
    $i=$i++ ;
    }
    echo '</table>';
    ?>

    ps: ti faccio tribulare! graz


  • Consiglio Direttivo

    Modificalo con questo:
    [PHP]<?php
    $file="news.txt";
    $textarray=file($file);
    $i=0;
    echo "<table><caption align=center>NEWS</caption>";
    while($i<count($textarray))
    {
    $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]

    risolto per control_panel.php invece? da' ancora errore?


  • User

    risolto le news ora fuzionano, sapresti indicarmi una modificare il php per far si che le news piu recenti vengano visualizzate prima di quelle piu vecchie?
    al posto di:
    2007-12-12 11:51:16gfhfgfhfgfhfg2007-12-12 12:04:40provafare,
    2007-12-12-12:04:40 prova
    2007-12-12-11:51:16 gfhfgf...

    control_panel.php da ancora errore nonostante il codice l'abbia cambiato in questo modo:
    <?php
    echo "<form action='control_panel.php' method='GET' name='news'>
    <textarea tabindex=1 wrap=virtual name=text cols=28 rows=6></textarea>"; //** wrap virtual serve a non far mettere gli "a capo" anche se nella textarea ci andrai, cols e rows sono le colonne e le righe, giostratele per come preferisci */
    echo "<input tabindex=2 type=submit value='Invia'>
    <input type=reset tabindex=3 value='Reset'></form>";

    //** Tiriamoci su l'orario attuale /
    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);
    //
    * in tal modo abbiamo la data ed ora attuale nel formato 2007-12-11 20:26:50 */

    $file="news.txt"; //* assegnamo il path del file /
    $text="";
    $text=$_GET["text"];
    if ($text!="")
    {
    $handle = fopen ($file, "ab"); //
    * comando per l'apertura del file /
    $write = $DATA."@".$text."\n"; //
    * scriverà singole righe (\n alla fine sta per newline) mettendo la data e poi il testo separati dal simbolo @ /
    fwrite ($handle, $write); //
    * scriviamo sul file /
    fclose($handle); //
    * ed infine chiudiamo il file, da non dimenticare MAI!!! */
    }
    ?>


  • Consiglio Direttivo

    [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ì??


  • User

    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


  • Consiglio Direttivo

    @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 😉


  • User

    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


  • Consiglio Direttivo

    <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]

    😉


  • User

    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?


  • Consiglio Direttivo

    @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?


  • User

    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 12

    Notice: Undefined offset: 1 in c:\programmi\easyphp1-8\www\news\news.php on line 13


  • Consiglio Direttivo

    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 😉


  • User

    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>


  • Consiglio Direttivo
     
    <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 😉


  • User

    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 ndhdhdhdhdhd

    cavolo è un bel problema


  • Consiglio Direttivo

    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 6

    ho 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 1

    non comprendo perchè ti escano quei valori.......