• User

    Problema script per news aggiornabili

    Ciao a tutti!
    premettendo che e da poco che mi sono avvicinato all'linguaggio php, ho avuto problemi con vari script che permettono di rendere le di news un sito aggiornabili da un form, non capisco se il mio server virtuale easyphp è configurato male e quindi mi da errori, o se sbaglio io.

    Qualcuno potrebbe indicarmi uno script per questo scopo possibilmente dandomi qualche indicazione per l'installazione.

    ciao grazie.


  • Consiglio Direttivo

    Forse è la stanchezza.....non ho ben capito cosa devi fare....e quindi dove ti blocchi, puoi specificare meglio?
    le news le posti ad un Db o cosa?


  • User Attivo

    markez prova a specificare meglio il tuo problema, non si capisce se hai problemi con uno script in particolare o se vuoi indicazioni su qualcuno..


  • User

    Scusate il mio italiano è veramenete pietoso:x...

    sapreste indicarmi uno script semplice semplice per dare al mio sito un sistema di news aggiornabili dall' utente senza l'utilizzo di un ftp. possibilmente con le indicazione per installarlo.

    Ho provato a scaricare qualche script di questo tipo da html.it
    ma non riesco a installarli ,il server virtuale mi da sempre degli errori...

    ciao.


  • Consiglio Direttivo

    Puoi creare un semplice form ove l'utente scrive in una textarea e quanto scritto va ad inserirsi in un Db MySql o in un file di testo, per la visualizzazione poi ti prenderai i dati dal txt o dal Db e li visualizzi per come più ti aggrada 😉

    Se come soluzione ti sta bene non è difficile da fare, magari più tardi ti posto quello che uso solitamente 😉

    Ciauuu


  • User

    va bene,
    l'unica mia perplessità rigurda il database non ne ho mai realizzato uno,
    ma se mi dici che non è difficile... è propio la soluzione che cercavo.


  • Consiglio Direttivo

    Guarda io uso Php e MySql da pochi mesi (indi non sono un esperto)......e ti posso dire che a parte la semplicità (la gestione del Db tramite PhpMyAdmin è "elementare") riesco ad ottenere quel che voglio, quasi sempre diciamo :D, certe volte tramite "ripieghi" (magari perchè non conosco tutti i comandi ovviamente) o implementando altri linguaggi tipo js 😉


  • User

    Perfetto sei la persona giusta per indicarmi cosa devo fare per raggiungere il mio obbiettivo.

    come procedo?

    ciao


  • Consiglio Direttivo

    prima di tutto controlla che il server dove hai l'Hosting supporti PHP5 ed abbia un database MySql 5.
    Ti fai abilitare all'uso del Db ed una volta dentro vai in Phpmyadmin.....vedrai da solo il da fare.....io ora scappo senno' la tipa mi distrugge, ci becchiamo dopo 😉


  • User

    ok non ti preoccupare!

    volevo realizzare il tutto sul mio server virtuale ho installato easyphp 1.8.0.1
    non so se supporta php5 , se me dici cosa usi tu lo scarico cosi non ci sono problemi.


  • Consiglio Direttivo

    [si avvicina quatto quatto per non farsi scoprire :D:D]

    allora installati Xampp, ha tutto dentro e si autoconfigura così non ti perdi nei settaggi :D:D:D

    ariscappo 😉


  • User

    Non ho ancora avuto il tempo di scaricare xampp
    no ce una soluzione col php4?


  • Consiglio Direttivo

    Puoi installarti i programmi uno per uno, ma configurarli diventa un po' macchinoso.
    Con Xampp installi, metti quattro cose di configurazione e sei pronto 😉

    EDIT: dimenticavo, oppure lasci stare il Db e gestisci tutto tramite un file di testo 😉


  • 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!!! */
    }
    ?>