Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    inserire spazio in foreach

    Buongiorno!
    essendo alle primissime armi con php, stavo cercando di modificare alcune pagine che stampavano una serie di dati (nel dettaglio sono eventi in una specifica data). Ad ogni modo, i comando che ho sono i seguenti:

    <?php
    $pippo= "ppppppppp";
    foreach ($rows['items'] as $hour): ?>
    <?php foreach ($columns as $column): ?>
    <?php print isset($hour['values'][$column]) ? implode($hour['values'][$column]) : '' ;
    ?>
    <?php endforeach; ?>
    <?php endforeach; ?>

    Che stampa una cosa simile a questa:

    evento1
    data e ora
    evento2
    data e ora
    evento3
    data e ora

    Mettiamo che io voglia inserire dei comandi html nella funzione sopra, allo scopo di ottenere qualcosa come:

    evento1
    data e ora

    evento2
    data e ora

    evento3
    data e ora

    O varianti dello stesso.
    QUalcuno sarebbe così gentile da spiegarmi come fare? Deve essere abbastanza semplice, ma per il momento non ci sono ancora riuscito...

    grazie

  2. #2
    Ciao!

    in primo luogo non è necessario per ogni riga aprire e chiudere il tag php (<?php ?>), così facendo il codice risulta poco leggibile.

    Codice PHP:
    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 
     print isset(
    $hour['values'][$column]) ? implode($hour['values'][$column]) : ' ' ;

     endforeach; 
     endforeach; 
    ?>
    Per scrivere HTML all'interno di stringhe PHP è sufficiente che metti i tag HTML all'interno delle stringhe, ad esempio così:

    Codice PHP:

    <?php

    echo "<h1>Testo formattato un H1</h1>";

    ?>
    Se invece devi scrivere codice HTML più complesso ti consiglio la sintassi heredoc:

    http://www.php.net/manual/en/languag...syntax.heredoc

    Nel tuo caso:

    Codice PHP:
    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 


       echo 
    "

    {$hour['values'][$column]"}</p>; 


     endforeach; 
     endforeach; 
    ?>
    o questo :

    Codice PHP:
    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 


       echo <<<HTML
       <div>
          

    {$hour['values'][$column]"}</p>
         

    altro codice</p>
       </div>
    <<<HTML;

     endforeach; 
     endforeach; 
    ?>

  3. #3
    Grazie, ma nessuna delle due forme che mi ha suggerito funziona, generano entrambi errori.

    Nel primo caso:

    Parse error: syntax error, unexpected '"', expecting '}' in (...) on line 39

    Nel secondo caso:

    Parse error: syntax error, unexpected T_SL in (...) on line 39


    Ovviamente (...) l'ho messo io perchè l'url era abbastanza lungo

  4. #4
    ops, non ho chiuso le virgolette

    Codice PHP:

    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 


       echo 
    "

    {$hour['values'][$column]}</p>"


     endforeach; 
     endforeach; 
    ?>
    Ad ogni modo, se preferisci, puoi usare anche la concatenazione, che forse all'inizio è più semplice:


    Codice PHP:

    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 


       echo 
    "

    $hour['values'][$column]  . "</p>"


     endforeach; 
     endforeach; 
    ?>

  5. #5
    grazie, nel frattempo ero più o meno arrivato alle virgolette.
    Purtroppo però gli esempi che mi hai fatto non mi risolvono il problema, nel senso che la mia funzione originaria è:

    print isset($hour['values'][$column]) ? implode($hour['values'][$column]) : '' ;

    i tuoi esempio mi stampano solo "un pezzo" della funzione originaria:

    echo "

    {$hour['values'][$column]}</p>";

    e

    echo "

    " . $hour['values'][$column] . "</p>";

    alla fine mi restituiscono solo la scritta "array"

  6. #6
    Codice PHP:
    <?php
    $pippo
    "ppppppppp";
    foreach (
    $rows['items'] as $hour): 
     foreach (
    $columns as $column): 


       echo 
    "

    implode($hour['values'][$column]) . "</p>"


     endforeach; 
     endforeach; 
    ?>

  7. #7
    Non va bene comunque.
    Facendo così l'html viene stampato all'inizio, prima dei contenuti veri e proprio.
    Inserendo al posto della

    la stampa di un carattere qualsiasi, mettiamo una semplice lettera c, facendo riferimento al mio esempio, uscirebbe:

    c
    evento1
    data e ora
    evento2
    data e ora
    evento3
    data e ora

    Che non è quello che mi serve.

    Nel frattempo cercando di capire i comandi, leggendo cosa fa implode:

    http://it.php.net/manual/en/function.implode.php

    ho dedotto che forse mi bastava inserire uno spazio vuoto come divisorio dei valori stampati richiamando $hour['values'], come comunque si impotizza in uno degli esempi della pagina linkata. Ho quindi inserito uno spazio nel codice:


    <?php
    foreach ($rows['items'] as $hour): ?>
    <?php foreach ($columns as $column): ?>
    <?php print isset($hour['values'][$column]) ? implode("&nbsp", $hour['values'][$column]) : ' ' ;
    ?>
    <?php endforeach; ?>
    <?php endforeach; ?>

    il risultato così è:

    evento1
    data e ora

    evento2
    data e ora

    evento3
    data e ora

    Grazie mille per l'assistenza, ho imparato un po' di cose

  8. #8
    si perfetto! non mi sono soffermato tanto sul codice, quanto nel farti vedere come inserire codice html all'interno del codice PHP

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.