SELECT Singoli elementi

DieciJack

Nuovo Utente
22 Feb 2015
13
0
0
Salve a tutti, da qualche tempo sto cercando di apprendere PHP tramite la lettura di un libro. Il mio obiettivo è quello di creare un blog tramite PHP/MySQL e sto facendo delle prove per comprendere bene la funzione SELECT. Ho un problema con la visualizzazione dei singoli risultati per adattarli al template HTML che ho scritto.

Questo è il codice che ho utilizzato per la query e la conversione in array:

PHP:
<?php 
    $sql = 'SELECT * FROM `articoli` ORDER BY `data_articolo` DESC';
    $result = $pdo->query($sql);

while ($row = $result->fetch())
{
  $articles_id[] = $row['id_articolo'];
  $articles_titles[] = stripslashes($row['titolo_articolo']);
  $articles_texts[] = stripslashes($row['testo_articolo']);
  $articles_authors[] = stripslashes($row['autore_articolo']);
  $articles_dates[] = $row['data_articolo'];
}
?>

Nel libro per visualizzare i risultati viene utilizzato un foreach, in questo modo:

(L'ho adattato per la visualizzazione dell'autore)

PHP:
<?php foreach ($articles_authors as $article_author): ?>
<?php echo htmlspecialchars($article_author, ENT_QUOTES, 'UTF-8'); ?> <br />
<?php endforeach; ?>

Questo codice mi restituisce tutti i campi del database e non i singoli risultati. Purtroppo il ciclo foreach mi ha confuso molto le idee e non mi è ancora ben chiaro come utilizzarlo. Un altro dei miei quesiti è come rendere "dinamica" la classe che ho creato per il blog:

HTML:
<section class="blog">
<h2>Titolo Articolo<p>Data: *, pubblicato da: *</p></h2>
<article class="blog">Testo Articolo</article>
</section>

Ossia come ripetere questa classe per visualizzare ogni singolo articolo con il proprio titolo, autore, testo ecc.
Grazie in anticipo per le vostre risposte.
 
Ciao, io mi fermerei sul primo ciclo while, con capisco il motivo di creare un altro array.
Esempio
PHP:
<?php
while ($row = $result->fetch()) {
    ?>
    <div class="articolo">
        <div class="titolo">
    <?php echo stripslashes($row['titolo_articolo']); ?>
        </div>
        <div class="testo">
    <?php echo stripslashes($row['testo_articolo']); ?><
        </div>
    </div>
    <?php
}
 
Grazie mille per la risposta adesso funziona tutto alla perfezione, ho adattato il codice in questo modo:

PHP:
while ($row = $result->fetch())
{
?>
<section class="blog">
<div class="articolo">
<h2><i class="fa fa-file-text-o" style="margin-right: 8px;"></i><?php echo stripslashes($row['titolo_articolo']); ?>
<p>Data: <?php echo ($row['data_articolo']); ?>, pubblicato da: <?php echo stripslashes($row['autore_articolo']); ?></p></h2>
<article class="blog"><?php echo stripslashes($row['testo_articolo']); ?></article>
</div>
</section>
	<?php 
}
?>

Adesso quello che mi chiedo è se la funzione htmslpecialchars è ancora necessaria con l'echo dei risultati. Da quello che ho capito è molto importante per la sicurezza visto che converte i caratteri, ma non saprei affiancarla alla funzione stripslashes che ho utilizzato. E' possibile utilizzarle entrambi oppure una delle due non è necessaria?
 
Le funzioni si possono concatenare
PHP:
htmlspecialchars(stripslashes($row['testo_articolo']));
ma , per la sicurezza è importante filtrare i dati prima di inserirli nel database non tanto quando si visualizzano,
 

Discussioni simili