Visualizzazione risultati 1 fino 7 di 7

Discussione: Immagine e file di testo

  1. #1
    legaitalianalibera non è connesso Utente AlterBlog
    Data registrazione
    30-08-2017
    Messaggi
    48

    Predefinito Immagine e file di testo

    Salve a tutti, sono abbastanza inesperto di php.
    Stavo scrivendo un programmino che legge dei dati in un file di testo e poi pubblica un immagine (random).
    I dati sono del tipo:

    Codice:
    ACM|TX Copy|tx-copy.htm|images/TX-Copy-Bicanale-fm-433,92-.jpg
    ACM|TX Dip|tx-dip.html|images/TX-Dip.jpg
    ACM|TX2 Small|tx2-small---solo-foto.html|images/TX2-SMALL-Bicanale-fm-433,9.jpg
    ACM|TX4|tx4---solo-foto.html|images/tx4-retro.jpg
    con separatore |

    Fino a leggerli non ho problemi

    Codice PHP:
    <?php
    <?php
    $str
    =file('files/telecomandi.txt');
    $max = count($str);
    {
    $nuovo= $str[array_rand($str)];
    $link=explode('|',$nuovo);
    echo
    "$link[0] - $link[1] - $link[2] - $link[3]";
    }
    ?>
    MA appena cerco di passare i dati all'immagine mi si blocca la pagina

    Normalmente sarebbe
    Codice PHP:
    <?php echo(" <center><img src=\"linkimmagine\"></center>")?>
    Bisogna però unire la marca e il nome telecomando per title e alt e dargli il width

    Quindi <img src="path/nome" alt="xxx" title= "xxx" width="200">
    sapendo che
    $link[0] = Marca
    $link[1] = Nome
    $link[2] = link
    $link[3] = file immagine
    $link[0]+$link[1]= alt
    $link[0]+$link[1]= title

    dovrebbe diventare

    Codice PHP:
    echo(" <img src=\"$link[3]\" alt=\" $link[0]+$link[1] \" title=\"$link[0]+$link[1]" width=\"200\">";
    Ma non funziona

    Consigli?
    Grazie
    Ultima modifica di legaitalianalibera : 22-12-2018 alle ore 10.45.26 Motivo: Sintassi ballerina, si capisce poco...

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    C'è una parentesi aperta di troppo. echo è un costrutto, non una funzione: non servono parentesi.

    I suggerimenti che do più spesso:


  3. #3
    legaitalianalibera non è connesso Utente AlterBlog
    Data registrazione
    30-08-2017
    Messaggi
    48

    Predefinito

    Già. Mi deve essere rimasta lì da qualche prova ...a un certo punto scrivevo caratteri a caso sulla tastiera imitando il fatto che un infinità di scimmie in un infinità di tempo scriverà un opera di Shakespeare (teorema della scimmia instancabile)
    E però pur essendo giusto (lo provo in una pagina altervista) mi provoca un
    Parse error: syntax error, unexpected 'width' (T_STRING), expecting ',' or ';' in /membri/legaitalianalibera/prove/--telecomando-random-con-link-da-file-txt---php.php on line 357

    Se levo il width mettendo
    Codice PHP:
    echo" <img src="$link[3]" alt=" $link[0]+$link[1] " title="$link[0]+$link[1] ">";
    Parse error: syntax error, unexpected 'imGroup_4' (T_STRING), expecting ',' or ';' in /membri [...]txt---php.php on line 366

    Quindi il problema è altrove
    In questo momento il codice è:

    Codice PHP:
    <?php
    $str
    =file('files/telecomandi2.txt');
    $max = count($str);
    {
    $nuovo= $str[array_rand($str)];
    $link=explode('|',$nuovo);
    echo
    "$link[0] - $link[1] - $link[2] - $link[3]";
    echo
    "<br\>";

    echo
    "<h2>" . $link[0] .
    "</h2>\n" . $link[1];
    echo
    "<br\>";
    echo
    "<br\>";
    echo
    " <img src=\"$link[3]\" alt=\" $link[0]+$link[1] \" title=\"$link[0]+$link[1]" width=\"200\">";

    ?>
    All'inizio avevo usato un
    Codice PHP:
    $file=fopen("files/telecomandi2.txt","r");
    ma poi guardando vari esempi avevo notato che non lo usavano e devo averlo rimosso in favore di
    Codice PHP:
    $str=file('files/telecomandi2.txt');
    Idee? Consigli?

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Un paio di errori sintattici qua e là. Segui le indicazioni dell'interprete PHP.

    Alla riga 14 (intendo del frammento di codice che hai riportato) manca un backslash dopo $link[1].
    Alla riga 4 c'è una parentesi graffa aperta che non serve a nulla, va rimossa.

    L'idea di utilizzare file mi sembra buona, attenzione però che usata in questo modo "inserisce" anche il ritorno a capo alla fine di ogni elemento del vettore: potresti usare il flag FILE_IGNORE_NEW_LINES per evitarlo.

    Occhio ai nomi degli identificatori: $str non è una stringa, come il nome suggerirebbe, ma un vettore di righe, così come $max non è un massimo ma il numero di righe (e non viene usato).

    Messo tutto assieme il codice diventa:
    Codice PHP:
    <?php
    $telecomandi
    = file('telecomandi2.txt', FILE_IGNORE_NEW_LINES);
    $telecomando = $telecomandi[array_rand($telecomandi)];

    $dati_telecomando = explode('|', $telecomando);

    echo
    "$dati_telecomando[0] - $dati_telecomando[1] - $dati_telecomando[2] - $dati_telecomando[3]";
    echo
    "<br\>";

    echo
    "<h2>" . $dati_telecomando[0]
    .
    "</h2>\n" . $dati_telecomando[1];
    echo
    "<br\>";
    echo
    "<br\>";
    echo
    " <img src=\"$dati_telecomando[3]\" alt=\"$dati_telecomando[0]+$dati_telecomando[1]\" title=\"$dati_telecomando[0]+$dati_telecomando[1]\" width=\"200\">";
    ?>

    I suggerimenti che do più spesso:


  5. #5
    legaitalianalibera non è connesso Utente AlterBlog
    Data registrazione
    30-08-2017
    Messaggi
    48

    Predefinito

    Funziona :)
    Grazie anche per le precisazioni su $str e $max

    Segnalo un paio di cose:
    * Controllare il percorso! (la prima volta non funzionava perchè mancava la directory files/)
    * Controllare Alt e Title!
    Infatti il mio ALT e TITLE erano la somma di due variabili: marca e modello. Ma la somma fatta con l'esempio sopra restituisce "marca+modello" e non "marca modello" (c'è il segno "+" in mezzo).
    Quindi la riga è:
    Codice PHP:
    echo" <img src="$dati_telecomando[3]" alt="$dati_telecomando[0] $dati_telecomando[1]" title="$dati_telecomando[0] $dati_telecomando[1]" width="200">";
    E per me funziona

    Però a cosa serve un immagine senza link?
    Codice PHP:
    <?php
    $telecomandi
    = file('files/telecomandi2.txt', FILE_IGNORE_NEW_LINES);
    $telecomando = $telecomandi[array_rand($telecomandi)];

    $dati_telecomando = explode('|', $telecomando);


    echo
    " <a href=\"$dati_telecomando[2]\">";
    echo
    " <img src=\"$dati_telecomando[3]\" alt=\"$dati_telecomando[0] $dati_telecomando[1]\" title=\"$dati_telecomando[0] $dati_telecomando[1]\" width=\"200\">";
    echo
    "<br\>";


    echo
    "<h2>" . $dati_telecomando[0] . "</h2>" . $dati_telecomando[1];
    echo
    " </a>";

    ?>
    Ho quindi messo un <a href></a>
    L'unico mio dubbio è che il nome del link va a capo dovrebbe stare su un unica linea con marca in h2 e modello in testo normale.... i punti di unione ci vanno, il "/n" è inutile visto che è testo a video... che sia l'h2?

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Molto bene

    L'unico mio dubbio è che il nome del link va a capo dovrebbe stare su un unica linea con marca in h2 e modello in testo normale.... i punti di unione ci vanno, il "/n" è inutile visto che è testo a video... che sia l'h2?
    Sì, l'<h2> è un elemento di tipo blocco, occupa tutto lo spazio della riga. Puoi renderlo di tipo inline utilizzando CSS:
    Codice:
    h2 {
        display: inline;
    }
    Però piuttosto di trasformare tutti gli <h2> ti conviene assegnare una classe a quelli che ti interessano e lavorare su quella, per esempio:
    Codice PHP:
    echo "<h2 class=\"nome_telecomando\">" . $dati_telecomando[0] . "</h2>" . $dati_telecomando[1];
    Codice:
    h2.nome_telecomando {
        display: inline;
    }

    I suggerimenti che do più spesso:


  7. #7
    legaitalianalibera non è connesso Utente AlterBlog
    Data registrazione
    30-08-2017
    Messaggi
    48

    Predefinito

    Funziona perfettamente, grazie

Tags for this Thread

Regole di scrittura

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