Visualizzazione risultati 1 fino 9 di 9

Discussione: Problema inserire valori da txt in un array

  1. #1
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito Problema inserire valori da txt in un array

    Ciao ragazzi, rompo ancora le scatole.
    Premesso che questo script che vado a postare l'ho trovato su un altro forum, ho un problema.
    Praticamente nell'array erano gia inseriti i valori ecco l'esempio:
    Codice:
    "01-01-2009"=>"Capodanno.jpg", 
    "15-08-2009"=>"Ferragosto.png", 
    "25-12-2009"=>"Natale.jpg"
    Io per essere più comodo ho fatto una interfaccia con la quale vado ad inserire la virgola all'ultima riga che non la deve avere e a capo scrive la data e il nome dell'immagine da recuperare. Però questo avviene su un file txt.

    Perciò nello script devo fare in modo di integrare questo file ai valori dell'array, ho provato con include, ma non va bene perchè mi stampa il codice e non mi cambia l'immagine e poi ho provato con fread ma non sono riuscito.

    Ecco lo script come l'avevo modificato:
    Codice PHP:
    <?php
    $default_img
    = "logo.jpg"; // immagine inserita quando no ci sono feste
    $fiestas = array(include'img_lista_copertine.txt');


    // oggi è il:
    $today = date("d-m-Y");

    if(
    $fiestas[$today]) {
    $img = $fiestas[$today];
    }
    else
    $img = $default_img;

    echo
    "<img src=\"files/".$img."\">";


    ?>

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Che ne dici di usare un metodo più comodo?

    Perché invece di aggiungere la virgola all'ultima riga non gestisce il contenuto del file convertendolo l'array in stringa e viceversa, tramite le funzione json_decode() e json_encode().

    Ti basta salvare l'array convertita in stringa su file, e tramite la funzione file_get_contents(), recuperi l'array convertita in stringa, per poi riconvertirla nuovamente in array, cosi per aggiungere un nuovo elemento in array ti basta scrivere:

    Codice PHP:
    $array[chiave] = "valore"
    Ovviamente ogni volta che utilizzi il contenuto del file, lo devi convertire in array, per poi riconvertire in stringa per salvarlo sul file.

    Non so se mi spiego, ma credo che sia molto più comodo del metodo da te realizzato.
    Ultima modifica di sevenjeak : 04-02-2012 alle ore 16.34.19

    Sevenjeak
    Software developer and much more

  3. #3
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    Mi hai praticamente parlato in arabo. Sono un autodidatta quindi non ne so molto.
    Pero mi hai suggerito la funzione file_get_content che mi era sfuggita.
    Ho provato ad applicarla ma non va cavolo.

    Ecco il codice che ho ricavato:
    Codice PHP:
    <?php
    $stringa
    = file_get_contents('img_lista_copertine.txt');

    $default_img = "logo.jpg"; // immagine inserita quando no ci sono feste
    $fiestas = array('$stringa');

    // oggi è il:
    $today = date("d-m-Y");

    if(
    $fiestas[$today]) {
    $img = $fiestas[$today];
    }
    else
    $img = $default_img;

    echo
    "<img src=\"files/".$img."\">";

    ?>
    Dove ho sbagliato?

  4. #4
    Guest

    Predefinito

    file_get_contents() restituisce il contenuto del file; questo com'è strutturato? Hai un esempio?

    $fiestas = array('$stringa'); questa invece, se verrà stampata, avrà un valore con $stringa, perché messa tra apici.

    Dovresti studiare un po' di più gli apici e le virgolette. Ti faccio un esempio preso da Internet:
    Codice PHP:
    <?php

    $nome
    = 'Anna';
    echo
    "$nome è simpatica... a pochi"; // stampa: Anna è simpatica... a pochi
    echo '$nome è simpatica... a pochi'; // stampa: $nome è simpatica... a pochi
    echo "{$nome} è simpatica a pochi"; // è una sintassi alternativa, con lo stesso effetto della prima

    ?>

  5. #5
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Bhe.. io non ti ho suggerito solamente quella funziona, ma di cambiare proprio il metodo con qui recuperi / salvi l'array nel file txt, che credo fosse migliore, poi dovresti studiarti te come fare.

    Premetto che ora non saprei proprio in che modo farlo utilizzando il metodo che te adoperi, ma credo che sia più complicato del mio, cmq, proverò a vedere cosa si può fare per il tuo codice.

    Sevenjeak
    Software developer and much more

  6. #6
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    Il file che contiene le righe da inserire nell'array è strutturato cosi:
    Codice:
    "04-02-2012"=>"Natale.jpg",
    "05-02-2012"=>"capodanno.jpg"
    Io ho fatto altre prove ma non riesco.

  7. #7
    Guest

    Predefinito

    A 'sto punto mi viene da consigliarti di usare explode() e preg_split() per ricavare data e nome, anche se il metodo da te utilizzato non è dei migliori e ci sono tantissimi altri metodi per poter fare ciò che vorresti.


  8. #8
    adminreluca non è connesso Utente
    Data registrazione
    06-03-2006
    Messaggi
    112

    Predefinito

    Ho fatto in modo diverso:
    Codice PHP:
    <?PHP
    $today
    = date("d-m-Y");

    if(
    $today == "04-02-2012" ) {echo "<img src=\"files/capodanno.jpg\">";} else {echo "<img src=\"files/logo.jpg\">";}

    ?>
    Ora dalla pagina per aggiungere le date e l'immagine invece che modificare il file txt, modifichero il file contenente il codice qui sopra. Pero ho un dubbio, il comando per cancellare il ?> qual'è? Ovviamente dopo aver inserito la riga con la condizione lo torno a scrivere.

    Poi stavo pensando come posso fare nel caso io volessi far vedere la stessa immagine non per un solo giorno ma ad esempio dal 7 febbraio al 21 marzo?

  9. #9
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Bhe.. i caratteri ?> potresti semplicemente sostituirli con un carattere vuoto:

    Codice PHP:
    str_replace("?>", "", $file_contenente il carattere)
    Per far apparire lo stesso logo, ad esempio dal 7 al 12 febbraio, credo che dovresti lavorare sul timestamp prodotto dalle due date, dovresti controllare se corrisponde al timestamp di una delle due date, o se si trova fra i due timestamp prodotti.

    Dovresti studiarti meglio il php, e dopo fare il tutto, e trovare il metodo migliore per gestire al meglio la cosa.
    Ultima modifica di sevenjeak : 05-02-2012 alle ore 14.19.36

    Sevenjeak
    Software developer and much more

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •