Le fonctionnement (suite et fin)
Notre code HTML de base n'englobe qu'un appel de fonction,
<?=affichage();?>. Cette
fonction se présente comme suit :
function affichage() {
if (
(isset($_REQUEST['creer']) && $_REQUEST['creer']
== 'oui')
&& (isset($_REQUEST['url']) && !empty($_REQUEST['url'])
)
&& (isset($_REQUEST['titre']) && !empty($_REQUEST['titre'])
)
&& (isset($_REQUEST['desc']) )
&& (isset($_REQUEST['mots']) && !empty($_REQUEST['mots'])
)
) {
enregistrerUrl($_REQUEST['url'], $_REQUEST['titre'],
$_REQUEST['desc'], $_REQUEST['mots']);
afficherLiens();
}
elseif (isset($_REQUEST['m']) && !empty($_REQUEST['m'])
) {
afficherLiensPourMot($_REQUEST['m']);
}
else {
afficherFormulaire();
afficherLiens();
}
}
Le
premier if() permet de tester
si toutes les variables envoyées par le formulaire sont en
place, auquel cas nous pouvons en déduire que l'utilisateur
l'a rempli et validé, et qu'il convient donc de placer ces
informations dans la base. Cela se fera au moyen d'une fonction
enregistrerUrl(), qui prend
en compte tous les arguments.
Si ces variables ne sont pas en place, deux solutions : soit
l'utilisateur souhaite afficher les liens attachés à un mot-clef
(repérable par l'usage de la variable "m"),
soit il veut afficher tous les liens de la base. Les fonctions
afficherLiensPourMot() et
afficherLiens() servent à
cela, la seconde étant appelée par défaut (par exemple, au
premier chargement de la page), avec le formulaire.
Voyons les fonctions dans l'ordre. enregistrerUrl()
contient des appels SQL des plus classiques :
function enregistrerUrl($url, $titre,
$desc, $mots) {
$date = date("Y-m-d h:i:s");
$req = "INSERT INTO delicieux (id, url, titre,
description, mots, datation) ";
$req .= "VALUES ('', '$url', '$titre', '$desc',
'$mots', '$date');";
if (mysql_query($req))
{
?>Lien correctement ajouté. <a
href="index.php">En ajouter un autre</a>.<?
}
else
{
?>Raté!<?
}
}
Très classique : nous mettons les données du
formulaire dans la base. Les données ne sont pas réellement
testées ni vérifiées, mais ce n'est pas
le but de cet article (lisez pour cela "PHP
: Se protéger contre les attaques CSRF").
afficherLiens() est déjà
plus intéressante :
function afficherLiens() {
$req = 'SELECT * FROM delicieux ';
$req.= 'WHERE 1 GROUP BY datation DESC;';
$res = mysql_query($req);
echo '<div class="liens">';
afficherMots();
while ($row = mysql_fetch_array($res)) {
echo "<p><a href='$row[1]'>$row[2]</a><br/>";
echo !empty($row[3]) ? $row[3].'<br/>':null;
echo "<small>dans " . separerMots($row[4])
. ", le $row[5]</small></p>";
}
echo '</div>';
}
Dans une balise div (ce qui
nous permettra de mettre l'affichage en page via CSS), nous
affichons les liens contenus dans la base. Le but étant
de rendre les mots-clefs cliquables, nous traitons la chaîne
de mots tirés de la base via la fonction separerMots(),
qui se chargera de créer les liens, afin de parvenir
à ce résultat :
PHP
: foreach()
Youhouh, foreach(), de la balle!
dans php foreach
code ref
, le 2005-02-24 03:18:03
|
Voici cette fonction :
function separerMots($chaine) {
$liens = '';
$mots = explode(' ', $chaine);
foreach ($mots as $mot) {
$liens .= "<a href='index.php?m=$mot'>$mot</a>
";
}
return $liens;
}
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Comme vous pouvez le voir, c'est en fait très simple
: d'une chaîne contenant des mots-clefs séparés
par un espace, nous tirons un tableau dont chaque ligne contient
un mot-clef. Il ne nous reste ensuite qu'à afficher
ces mots-clefs entourés d'une balise de liaison, et
chaque mot-clef affiché aura pour action un lien vers
sa propre catégorie.
Nous utilisons un lien brut, index.php?m=$mot.
Il suffirait de créer un fichier
.htaccess faisant usage de
mod_rewrite pour rendre
les URLs beaucoup plus lisibles, par exemple mot/$mot.
|