Création Internet, référencement: dahut.be

Prestations sur Internet

 
B-6810 IZEL
Tél. /fax: 00 (0) 61/32.00.15.

Création de site

Référencement Références Contact
 
Quelques aides en programmation PHP
Cette partie reprend quelques trucs spécifiques en langage PHP.

Aide PHP - MySQL

Téléchargements

 

12. Gestion d'activités.

1 Connexion au serveur - 2. Sélection d'une base de donnée - 3. Requête PHP - MySQL - 4. Gestion des erreurs dans les requêtes SQL - 5. Création d'une table - 6. Suppression d'une table - 7. Requêtes d'insertion - 8. Modification des valeurs - 9. Suppression enregistrements

1. Introduction.

Ce petit développement va permettre à des visiteurs d'insérer des activités (fêtes locales, expositions, ...) sur votre site. Pour insérer une activité, ils devront s'inscrire au préalable et accepter les cookies.

Comme dans la gestion des petites annonces, les liens et images dans les annonces sont automatiquement effacés. Nous reprenons également la gestion des mots interdits et le remplacement automatique de certains mots, utilisés par exemple pour les adresses mails.

Une partie est reprise du développement principal comme la gestion des utilisateurs. Nous utiliserons également les deux fichiers includes\start.php qui permettent de démarrer la connection MySQL et include\stop.php (de l'arrêter). La mise en page se fait par les 4 fichiers standards du répertoire includes: head.php, footer.php, colon-left.php et colon-right.php

2. Création des tables MySQL

2.1 La table "activités" 

Cette table activite reprend:

  1. uid: numéro de l'annonce, automatique

  2. titre: le titre de l'activité, 40 caractères

  3. description: une courte description, 80 caractères

  4. date_init: une date de début

  5. date_fin: une date de fin (qui peuvent être identiques).

  6. categorie: la catégorie qui sera sélectionné dans une autre table, 40 caractères

  7. numero: le numéro utilisateur de l'annonceur

  8. lieu, lieu de la manifestation, 40 caractères

  9. Ville, 40 caractères

  10. Région, 40 caractères (reprend la région + pays)

  11. nom: nom de contact éventuel, 20 caractères

  12. tel: un numéro de téléphone éventuel, 15 caractères

<?php
require('includes\start.php');
$requete="CREATE TABLE if not exists activite (uid smallint(6) primary key NOT NULL auto_increment,titre varchar(40) Not null,description varchar(80) Not Null,date_init date Not Null,date_fin date,categorie varchar (40), numero smallint(6) NOT NULL, lieu varchar(40),ville varchar(40),region varchar(40), nom varchar(20), tel varchar (15))";
$resultat=mysql_query($requete);
$erreur1=mysql_error();
print($erreur1);
?>

2.2. La table catégorie categ

Cette table categ sera directement gérée par la partie administration. Elle permettra aux utilisateurs de sélectionner une catégorie d'activités. Les lignes de commandes viennent à la fin de celle ci-dessus. 

$requete="CREATE TABLE if not exists categ (uid smallint(6) primary key NOT NULL auto_increment,categorie varchar(40) Not null)";
$resultat=mysql_query($requete);

2.3. La table utilisateur "member"

Elle est identique à celle utilisée dans les petites annonces.

// création de la table utilisateurs (member).
$requete="CREATE TABLE if not exists member (uid smallint(6) primary key NOT NULL auto_increment,titre enum('Monsieur','Madame','Mademoiselle') Not null,nom varchar(25) Not Null,prenom varchar(25) Not Null,adresse varchar(40),codepostal varchar(10),ville varchar(25),pays varchar(20) Not Null,telephone varchar(20) Not Null, email varchar(60) Not null,username varchar(25) Not Null,password varchar(40) Not Null,type char(2) Not null,bday smallint(2),bmonth smallint(2),byear smallint(4),regdate date )";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
print($erreur."<br>");
print($erreur1);
Echo'table member créée';
// fin création table

Dans le cas d'une utilisation couplée avec le développement des petites annonces, un utilisateur pourra rentrer une annonce ou une activité.

3. Formulaire d'inscription

Ce formulaire est identique à celui utilisé dans les petites annonces. Il utilise un formulaire inscription.php et renvoi vers un fichier de traitement inscription1.php.

inscription.php

<html>

<head>
<meta http-equiv="Content-Language" content="fr-be">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Inscription utilisateur</title>
</head>

<body vlink="#0000FF" bgcolor="#D8EAFA">
<?php
include('includes/header.php');
?>
<div align="center">
<table border="1" width="90%">
<tr>
<td width="20%" align="center">
<?php
include('includes/colon-left.php');
?>
</td>
<td width="60%" align="center">
<form method="POST" action="inscription1.php" name="creer-utilisateur">
<p>Nom d'utilisateur (*) <input type="text" name="username" size="25"></p>
<p>Mot de passe (*) <input type="password" name="password" size="40"> (minimum
5 caractères)</p>
<p>Adresse mail (*) <input type="text" name="email" size="60"></p>
<p>Titre <select size="1" name="titre">
<option selected>Monsieur</option>
<option>Madame</option>
<option>Mademoiselle</option>
</select></p>
<p>Nom (*) <input type="text" name="nom" size="25">

Prénom (*) <input type="text" name="prenom" size="25"></p>
<p>Adresse <input type="text" name="adresse" size="40"> (minimum 5
caractères)</p>
<p>Code Postal <input type="text" name="codepost" size="10"> Ville (*) <input type="text" name="ville" size="25">
(minimum 3 caractères)</p>
<p>Pays (*) <input type="text" name="pays" size="20"></p>
<p>Téléphone <input type="text" name="telephone" size="20"></p>
<p>Date de naissance: Jour <input type="text" name="bday" size="2"> mois <input type="text" name="bmonth" size="2">
Année <input type="text" name="byear" size="4"></p>
<p> <p> <input type="submit" name="ok" value="Envoyer" /><input type="reset" value='Annuler' /></p>
</form>
</tr>
</table>
</div>
</body>
</html>

Le fichier inscription1.php

<?php
$correct=true;
include('includes/header.php');
?><body vlink="#0000FF" bgcolor="#D8EAFA">
<div align="center">
<table border="1" width="90%">
<tr>
<td width="20%" align="center">
<?php
//affichage navigation
include('includes/colon-left.php');
?>
</td>
<td width="60%" align="center">
<?php
if(!taille_variable('username',2,25)){
echo'Login invalide, rentrez minimum 2 caractères';
echo'<br>';
$correct=False;
}elseif (!taille_variable('password',5,40)){
echo'Mot de passe invalide, rentrez minimum 5 caractères, 40 caractères maximum';
echo'<br>';
$correct=False;
}elseif (!taille_variable('email',8,60)){
echo'email invalide, rentrez minimum 8 caractères';
echo'<br>';
$correct=False;
}
if (!strpos($_POST['email'],'@')){
echo'Adresse mail non valide';
$correct=False;
}
/*
list($user,$dns)=explode("@",$_POST['email']);
If (!checkdnsrr($dns)){
echo'L\'adresse mail n\'est pas valide';
$correct=False;
}
*/
if(!taille_variable('nom',3,25)){
echo'Nom invalide, rentrez votre nom (minimum 3 lettres)';
echo'<br>';
$correct=False;
}elseif (!taille_variable('prenom',3,25)){
echo'Prénom invalide, rentrez votre nom';
echo'<br>';
$correct=False;
}elseif(strlen($_POST['adresse'])<>0){
if(!taille_variable('adresse',5,40)){
echo'Adresse invalide, rentrez minimum 5 caractères';
echo'<br>';
$correct=False;
}
}
if (strlen($_POST['codepost'])<>0){
if(!taille_variable('codepost',4,10)){
echo'Code Postal invalide, entre 4 et 10 caractères';
echo'<br>';
$correct=False;
}
}
if (!taille_variable('ville',3,25)){
echo'Ville invalide, rentrez minimum 3 caractères';
echo'<br>';
$correct=False;
}elseif (!taille_variable('pays',3,20)){
echo'Pays invalide, rentrez minimum 3 caractères';
echo'<br>';
$correct=False;
}elseif (strlen($_POST['telephone'])<>0){
if (!taille_variable('telephone',5,20)){
echo'Numéro de téléphone non valide';
echo'<br>';
$correct=False;
}
}
if (strlen($_POST['bday'])<>0){
if (!taille_variable('bday',1,2)){
echo'Jour de naissance invalide, rentrez 2 chiffres';
echo'<br>';
$correct=False;
}if (($_POST['bday'])<"1"){
echo'Jour inférieur à 1';
echo'<br>';
$correct=False;
}elseif (($_POST['bday'])>"31"){
echo'Jour supérieur à 31';
echo'<br>';
$correct=False;
}
}
if (strlen($_POST['bmonth'])<>0){
if (!taille_variable('bmonth',2,2)){
echo'Mois de naissance invalide, rentrez 2 chiffres';
echo'<br>';
$correct=False;
}
if ($_POST['bmonth']<1){
echo'Mois de naissance >0';
echo'<br>';
$correct=False;
}elseif ($_POST['bmonth']>12){
echo'Mois de naissance <12';
echo'<br>';
$correct=False;
}

}
if (strlen($_POST['byear'])<>0){
if (!taille_variable('byear',4,4)){
echo'Année de naissance invalide, rentrez 4 chiffres';
echo'<br>';
$correct=False;
}
if ($_POST['byear']<1900){
echo'Année de naissance >1900';
echo'<br>';
$correct=False;
}elseif ($_POST['byear']>2020){
echo'Année de naissance <2020';
echo'<br>';
$correct=False;
}
}
// on commence par vérifier si le formulaire est correctement rentré
if ($correct){
$titre=$_POST['titre'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$adresse=$_POST['adresse'];
$codepostal=$_POST['codepost'];
$ville=$_POST['ville'];
$pays=$_POST['pays'];
$telephone=$_POST['telephone'];
$mail=$_POST["email"];
$utili= $_POST["username"];
$password=$_POST["password"];
$type="US";
$bday=$_POST["bday"];
$bmonth=$_POST["bmonth"];
$byear=$_POST["byear"];
$regdate=date('Ymd');
/*impression éventuelle de la date d'enregistrement, messages erreur correctes"
//echo$regdate;
echo'<br>';
echo'Valeurs correctes';
echo'<br>'; 
*/
require('includes/start.php');
// on ouvre la table
$requete="SELECT * FROM member where username='$utili'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo'Username existe déjà';
echo'<br>Rentrez un autre nom';
// retour en arrière
}else{
$requete="SELECT * FROM member where email='$mail'";
$valeur=mysql_query($requete);
if (mysql_affected_rows()<>0){
echo'Adresse mail existe déjà';
// procédure pour récupérer le mot de passe
}else{
// nom utilisateur et adresse mail inconnue, on peut rentrer l'utilisateur
echo'Utilisateur accepté<br>';
print('Merci pour votre inscription');
$requete="INSERT member SET titre='$titre',nom='$nom',prenom='$prenom',adresse='$adresse',codepostal='$codepostal',
ville='$ville',pays='$pays',telephone='$telephone',email='$mail',username='$utili',
password='$password',type='$type',bday='$bday',bmonth='$bmonth',byear='$byear',
regdate='$regdate'";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
/* print($erreur);
$erreur doit afficher 1 pour un enregistrement rentré.
print($erreur1);
*/
if ($erreur=1){
print('<br>');
print("Utilisateur inséré dans la base de donnée");
}else{
echo'erreur lors de l\'insertion de l\'utilisateur';
}
}
}
require('includes/stop.php');
}
?>
</td>
<td width="20%" align="center">
<?php
include('includes/colon-right.php');
?>
</td>
</tr>
</table>
</div>
<?php
function taille_variable($variable,$taille_min=0,$taille_max=0){
global $_POST;
if(!isset($_POST[$variable])){
// valeur non définie
return false;
}elseif (strlen($_POST[$variable])<$taille_min){
return False;
}elseif(strlen($_POST[$variable])>$taille_max){
return FALSE;
}
return True;
}
?>

4. Connexion utilisateur.

Cette partie utilise un petit fichier connexion.php qui envoie un cookies lors de la connexion.

} else{
// Echo'Connexion réussie';
}
Mysql_select_db('ybet');
$requete="SELECT * FROM member where username='$login' and password='$password'";
$valeur=mysql_query($requete);
$ligne=mysql_num_rows($valeur);
if ($ligne==0)
{
echo"Utilisateur inconnu";
die('<meta http-equiv="refresh" content="3; URL=inscription.php">');
}else{
//echo"Utilisateur connu";
if ($memo=="")
{
Setcookie('ybet',$login."-pw-".$password."memo".$memo,time()+3600);
}else{
Setcookie('ybet',$login."-pw-".$password."memo".$memo,time()+864000);

}
echo"Bonjour ".$login.", vous êtes maintenant connecté";
die('<meta http-equiv="refresh" content="3; URL=index.php">');
}
}
$form="<form method=\"POST\"><p>Nom utilisateur: <input type=\"text\" name=\"login\" size=\"20\"></p>
<p>Mot de passe: <input type=\"password\" name=\"password\" size=\"20\"></p>
<p>Mémoriser la connexion: <input type=\"checkbox\" name=\"memo[]\" value=\"ON\"> </p>
<p><input type=\"submit\" value=\"Envoyer\" name=\"B1\"></p>
</form>";
echo $form;
?>

Il est quasiment identique à celui des annonces.

6. Administration: entrée et modification des catégories.

Cette partie s'insère dans le dossier admin à protéger par un .htaccess.

Création des catégorie: entree-cat-activite.php

<HTML>
<HEADER>
<TITLE>Entrée des catégories en adminsitration.</TITLE>
</HEADER>
<BODY>
<?php
// test d'execuction du sommaire
if (isset($_POST['go'])){
$nom = $_POST['nom'];
$erreur_nom = "";

if ($_POST['nom'] == ''){
$erreur_nom = "Le nom de la catégorie doit être renseigné<br>";
} else {
$ajout = "";
require('../includes/start.php');
Mysql_select_db('ybet');
// $requete="Insert categorie(nom,description,attachement,image,actif) Values('$nom','$description','$attachement','$image','$actif')";
$requete="INSERT categ SET categorie='$nom'";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
// print($erreur);
// print($erreur1);
require('../includes/stop.php');
}
$nom = "Nom de la catégorie";
$erreur_nom = "";
} else {
$nom = "Nom de la catégorie";
$erreur_nom = "";
}
$form = "<table>
<form METHOD=POST>
<tr><td>Nom de la catégorie</td><td><input type=text name=nom value=\"$nom\" size=\"25\"><br>$erreur_nom</td></tr>
<tr><td><input type=submit name=go value=sauve></td><td><input type=reset name=reset value=\"recommencer\"></td></tr>
</form>
</table>
<HR>";
print($form);
?>
</BODY>
</HTML>

Suppression des catégories d'activités: del-cat-activite.php

<HTML>
<HEADER>
<TITLE>Affichage et suppression des catégories.</TITLE>
</HEADER>
<BODY>

<?php
if (isset($_POST['go'])){
$uid = $_POST['uid'];
$erreur_uid = "";
if ($_POST['uid'] == 0){
$erreur_uid = "Numéro de la catégorie à supprimer: ";
} else {
// supprime la catégorie
require('includes/start.php');
$requete="delete from categ where uid='$uid'";
$valeur=mysql_query($requete);
// catégorie supprimée, début vérification sous catégorie
$requete="select uid(*) from categ where attachement='$uid'";
$valeur=mysql_query($requete);
print ("catégorie supprimée: ".$uid);
require('includes/stop.php');
}
}else{
$uid = 0;
$erreur_uid = "Numéro de la catégorie";
}
$form = "<table>
<form action=\"$PHP_SELF\" METHOD=POST>
<tr><td>Numéro de la catégorie à supprimer</td><td><input type=text name=uid value=\"$uid\" size=\"10\">$erreur_uid</td></tr>
<tr><td><input type=submit name=go value=Supprime></td><td><input type=reset name=reset value=\"recommencer\"></td></tr>
</form>
</table>
<HR>";
print($form);
require('includes/start.php');
$requete="select * from categ order by 'uid' DESC";
$valeur=mysql_query($requete); 
$tableau=array(); 
while ($tableau=mysql_fetch_array($valeur)){ 
echo$tableau['uid']."-".$tableau['categorie']."<br>";
}
?>
</BODY>
</HTML>

Nous allons compléter momentanément le dossier admin par un simple fichier index.html reprenant ces 2 fichiers. Nous le complèterons plus bas.

<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Menu administration</title>
</head>

<body>

<h1>Gestion des activitées</h1>
<p><a href="entree-cat-activite.php">insertion catégorie</a></p>
<p><a href="entree-cat-activite.php">Suppression catégorie</a></p>

</body>

</html>

7. Gestion des lieux, régions, pays.

Dans la table des activités, nous avons créés quelques champs spécifiques pour renseigner l'endroit de la manifestation:

  1. lieu, lieu de la manifestation, 40 caractères

  2. Ville, 40 caractères

  3. Région, 20 caractères

  4. Pays, 20 caractères

Nous allons laisser l'utilisateur entrer le lieu, la ville. Par contre, nous allons limiter les régions. Dans le cas de la Belgique, nous reprenons les provinces. Dans le cas de la France, les départements. Ceci va nous permettre de créer une liste déroulante composée de ces différentes régions. De nouveau, cette partie va être reprise dans un menu administration.

Nous pourrions créer deux tables MySQL. Pourtant, nous allons utilise une autre méthode. Chaque région est d'office reliée à un pays. L'entrée des données se fait en deux parties. La première nous permet de choisir les pays sur-lesquels nous insérons les régions. Cette partie va être rentrée dans une table config. Pour rentrer les régions, nous sélectionnerons le pays dans une liste déroulante, reprenant les valeurs rentrées dans config.

Création de la table MySql region

$requete="CREATE TABLE if not exists region (uid smallint(6) primary key NOT NULL auto_increment,
region varchar(20) Not null, pays varchar(40) Not Null)";
$resultat=mysql_query($requete);
$erreur1=mysql_error();
print($erreur1);
Print"<br>création table region";

Cette partie s'insère à la fin du fichier creation.php

7.1. Insertion des Pays.

Notre développement va nous conduire à créer une table spéciale de configuration. Cette table Mysql (config) va être utilisée dans d'autres parties. Elle reprend trois champs:

  • uid, autoincrement

  • type: champ de 4 lettres 

  • valeur, champ de 40 lettres maximum.

Cette table va reprendre des données en vrac, seul le champ type va déterminer à quoi la valeur correspond. Dans notre cas, pour désigner un pays, le type sera simplement PA. Nous l'utiliserons pour d'autres paramètres comme le nom du site, l'adresse du site principal, ...

Creation.php

$requete="CREATE TABLE if not exists config (uid smallint(6) primary key
NOT NULL auto_increment,type varchar(4) Not null,valeur varchar(40) Not Null)";
$resultat=mysql_query($requete);
$erreur1=mysql_error();
print($erreur1);
Print"<br>création table config";

L'entrée, la modification et la suppression des pays se fait via le menu administration avec le fichier pays.php

<?php
// Tests des valeurs introduites
if (isset($_POST['B1']))
{
require('../includes/start.php');
$region=ADDSLASHES($_POST['region']);
$pays=ADDSLASHES($_POST['pays']);
$requete="INSERT region SET region='$region',pays='$pays'";
$erreur=mysql_query($requete);
require('../includes/stop.php');
echo"Région insérée";
}
// formulaire d'entrée.
$form="<form method=\"POST\">
<p>Région: <input type=\"text\" name=\"region\" size=\"20\"></p>
<p><select size=\"1\" name=\"pays\">";
require('../includes/start.php');
// récupération des pays.
$requete="SELECT * FROM config where type='PA'";
$valeur=mysql_query($requete);
if (isset($pays))
{
$form=$form."<option selected>".$pays."</option>";
}
while ($tableau=mysql_fetch_array($valeur))
{
$form=$form."<option>".$tableau['valeur']."</option>";
}
// gestion des régions dans activités: rentrée

// Affichage des régios déjà entrées.

$requete="select region,pays from region order by 'pays','region' DESC";
$valeur=mysql_query($requete);
?>
<table border="1" width="50%">
<tr>
<td width="50%"><b>Région</b></td>
<td width="50%"><b>Pays</b></td>
</tr>
<?php
while ($tableau=mysql_fetch_array($valeur))
{
?>
<tr>
<td width="50%"><?php
echo STRIPSLASHES($tableau['region']);
?>
</td>
<td width="50%"><?php
echo STRIPSLASHES($tableau['pays']);
?>
</td>
</tr>
<?php
}
require('../includes/stop.php');
?>
</table>
<?php
$form=$form."</select></p>
<p><input type=\"submit\" value=\"Insérer\" name=\"B1\"></p>
</form>";
echo $form;
?>

7.2. Gestion des régions

De nouveau dans le répertoire admin, nous allons créer le fichier permettant de gérer les régions. Il est similaire à celui ci-dessus. Nous n'utilisons pas une table relationnelle, le pays (sélectionné dans une liste déroulante) est directement inséré dans la table.

Les choix possibles sont l'insertion ou la suppression de la région.

region.php: insertion

<?php
// Tests des valeurs introduites
if (isset($_POST['B1']))
{
require('../includes/start.php');
$region=$_POST['region'];
$pays=$_POST['pays'];
$requete="INSERT region SET region='$region',pays='$pays'";
$erreur=mysql_query($requete);
require('../includes/stop.php');
echo"Région insérée";
}
// formulaire d'entrée.
$form="<form method=\"POST\">
<p>Région: <input type=\"text\" name=\"region\" size=\"20\"></p>
<p><select size=\"1\" name=\"pays\">";
require('../includes/start.php');
// récupération des pays.
$requete="SELECT * FROM config where type='PA'";
$valeur=mysql_query($requete);
if (isset($pays))
{
$form=$form."<option selected>".$pays."</option>";
}
while ($tableau=mysql_fetch_array($valeur))
{
$form=$form."<option>".$tableau['valeur']."</option>";
}
// gestion des régions dans activités: rentrée

// Affichage des régios déjà entrées.

$requete="select region,pays from region order by 'pays','region' DESC";
$valeur=mysql_query($requete);
?>
<table border="1" width="50%">
<tr>
<td width="50%"><b>Région</b></td>
<td width="50%"><b>Pays</b></td>
</tr>
<?php
while ($tableau=mysql_fetch_array($valeur))
{
?>
<tr>
<td width="50%"><?php
echo $tableau['region'];
?>
</td>
<td width="50%"><?php
echo$tableau['pays'];
?>
</td>
</tr>
<?php
}
require('../includes/stop.php');
?>
</table>
<?php
$form=$form."</select></p>
<p><input type=\"submit\" value=\"Insérer\" name=\"B1\"></p>
</form>";
echo $form;
?>

region-suppression.php

<?php
// suppression d'une région
if (isset($_POST['B1']))
{
require('../includes/start.php');
$uid=$_POST['T1'];
$requete="DELETE From region where uid='$uid'";
$valeur=mysql_query($requete);
require('../includes/stop.php');
}
// affichage des régions.
require('../includes/start.php');
$requete="select * from region order by 'pays','region' DESC";
$valeur=mysql_query($requete);
?>
<table border="1" width="50%">
<tr>
<td width="33%"><b>Numéro</b></td>
<td width="33%"><b>Région</b></td>
<td width="33%"><b>Pays</b></td>
</tr>
<?php
while ($tableau=mysql_fetch_array($valeur))
{
?>
<tr>
<td width="33%"><?php
echo $tableau['uid'];
?>
</td>
<td width="33%"><?php
echo $tableau['region'];
?>
</td>
<td width="33%"><?php
echo$tableau['pays'];
?>
</td>
</tr>
<?php
}
?>
</table>
<?php
// formulaire
$form="<form method=\"POST\">
<p>Numéro à supprimer <input type=\"text\" name=\"T1\" size=\"20\"></p>
<p><input type=\"submit\" value=\"Supprimer\" name=\"B1\"></p>
</form>";
echo $form;
?>

De nouveau, ces lignes doivent être rajoutées dans notre fichier d'index

8. Mots interdits, mots de remplacement

Pour éviter les messages de type spammings, nous allons définir en administration des mots interdits. Une annonce d'activité reprenant un mot de la liste sera automatiquement supprimée. En même temps, nous allons permettre d'utiliser des mots de remplacements. Ce chapitre va nous permettre d'administrer ces 2 tables. Elles sont identiques à celle des petites annonces standard.

Les liens, images seront supprimées directement dans le formulaire d'entrée des activités.

8.1. Création des tables.

Les tables sont également utilisée par les petites annonces

//gestion des mots interdits

$requete="CREATE TABLE if not exists interdit (interdit varchar(30) primary key NOT NULL)";
$erreur=mysql_query($requete); 
$erreur1=mysql_error(); 
print($erreur."<br>"); 
print($erreur1); 

// gestion des remplacements

$requete="CREATE TABLE if not exists remplace (refuse varchar(30) primary key NOT NULL,remplace varchar(30))";
$erreur=mysql_query($requete);
$erreur1=mysql_error();
print("<br>table remplacement créée");

 8.2. Administration des mots interdits

De nouveau, nous reprenons le développement des petites annonces.

<?php
$mots_interdits=array();
$tableau=array();
// début du tests auto-invocant
if (isset($_POST['go']))
{
// variable reprenant les 3 paramètres du formulaire
$choix =$_POST['mot'];
$action=$_POST['action'];
$nouveau=ADDSLASHES($_POST['nouveau']);
// vérification du deuxième bouton
if ($action=="Effacer"){
// cas effacer, on efface le choix sélectionné dans la liste déroulante
require('../includes/start.php');
$requete="delete from interdit where interdit='$choix'";
$valeur=mysql_query($requete);
}elseif ($action=="Modifier"){
// Cas modifier: on remplace la valeur dans la liste déroulante par celle de la zone texte Nouvelle valeur
if ($_POST['nouveau']=="")
{
// on teste si la valeur de remplacement est nulle. Dans ce cas aucune action
Echo"Aucune valeur de remplacement sélectionnée, recommencez";
}else{
// sinon on effectue le remplacement
require('../includes/start.php');
$requete="UPDATE interdit SET interdit='$nouveau' WHERE interdit='$choix'";
$valeur=mysql_query($requete);
}
// fin de modifier
}elseif (($action=="Insérer")and($nouveau<>'')){
// insertion d'une nouvelle valeur si elle n'est pas nulle
require('../includes/start.php');
$requete="insert into interdit Set interdit='$nouveau'";
$erreur=mysql_query($requete);
}
}
require('../includes/start.php');
$requete="SELECT * FROM interdit";
$valeur=mysql_query($requete);
$i=1;
$ligne=0;

while ($tableau=mysql_fetch_array($valeur)){
// on récupère les données de la table
// print($ligne);
$mots_interdits[$i]=STRIPSLASHES($tableau['interdit']);
$i=$i+1;
}
require('../includes/stop.php');

$ligne=$i;
$i=1;
$formulaire="<form method=\"POST\"><p>Mots <select size=\"1\" name=\"mot\">";
while ($i<$ligne){
$formulaire=$formulaire."<option>".$mots_interdits[$i]."</option>";
$i=$i+1;
}
$formulaire=$formulaire."</select> <select name=\"action\"><option>Insérer</option><option>Modifier</option>
<option>Effacer</option></select>

nouvelle valeur: <input type=\"text\" name=\"nouveau\" size=\"30\"><input type=\"submit\" value=\"Envoyer\" name=\"go\"></p></form>";
print($formulaire);
?>

8.3. Administration des mots de remplacement

L'administration des mots à remplacer est identique.

<?php
if (isset($_POST['go']))
{
// variable reprenant les 3 paramètres du formulaire
$choix =$_POST['mot'];
$action=$_POST['action'];
$refuse=$_POST['refuse'];
$remplace=$_POST['remplace'];
// vérification du deuxième bouton
if ($action=="Effacer"){
// cas effacer, on efface le choix sélectionné dans la liste déroulante
require('../includes/start.php');
$requete="delete from remplace where refuse='$choix'";
$valeur=mysql_query($requete);
$erreur=mysql_query($requete);

}elseif ($action=="Modifier"){
// Cas modifier: on remplace la valeur dans la liste déroulante par celle de la zone texte Nouvelle valeur

if ($_POST['refuse']=="")
{
// on teste si la valeur de remplacement est nulle. Dans ce cas aucune action
Echo"Aucune valeur de départ n'est sélectionnée, recommencez";
}else{
// sinon on effectue le remplacement
require('../includes/start.php');
$requete="UPDATE remplace SET refuse='$refuse',remplace='$remplace' WHERE refuse='$choix'";
$valeur=mysql_query($requete);
}
// fin de modifier
}elseif (($action=="Insérer")and($refuse<>'')){
// insertion d'une nouvelle valeur si elle n'est pas nulle
require('../includes/start.php');
$requete="insert into remplace Set refuse='$refuse', remplace='$remplace'";
$erreur=mysql_query($requete);
}
}
$mots_remplace=array();
require('../includes/start.php');
$requete="SELECT * FROM remplace";
$valeur=mysql_query($requete);
$ligne=1;
$i=1;
while ($tableau=mysql_fetch_array($valeur)){
// on récupère les données de la table
// print($ligne);
// on récupère les données de la table
// print($ligne);
$mots_remplace[$i]["refuse"]=STRIPSLASHES($tableau['refuse']);
$mots_remplace[$i]["remplace"]=STRIPSLASHES($tableau['remplace']);
$i=$i+1;
}
$ligne=$i;
$formulaire="<form method=\"POST\"><p><b>Gestion de la table de remplacement</b> </p>
<p>Mots <select size=\"1\" name=\"mot\">";
$i=1;
while ($i<$ligne){
$formulaire=$formulaire."<option value=\"".$mots_remplace[$i]["refuse"]."\">".$mots_remplace[$i]["refuse"]." : ".$mots_remplace[$i]["remplace"]."</option>";
$i=$i+1;
}
$formulaire=$formulaire."</select> <select name=\"action\"><option>Insérer</option><option>Effacer</option>
<option>Modifier</option></select>

<p>nouveau refuse: <input type=\"text\" name=\"refuse\" size=\"30\">Remplacé par: <input type=\"text\" name=\"remplace\" size=\"30\"><input type=\"submit\" value=\"OK\" name=\"go\"></p></form>";
print($formulaire);
?>

9. Entrée des activités.

Cette partie est de loin la plus complète puisqu'elle reprend la gestion des utilisateurs (qui a rentré l'activité), la vérification des activités (mots interdits, remplacement, suppression des liens et images, ...) et entrée des activités dans la base de donnée. Une partie est reprise après modification de la partie petites annonces.

  • Nous commençons par vérifier si l'utilisateur est connecté via un cookies. S'il est connecté, nous remplaçons le cookies par un nouveau.

  • Nous créons les variables d'erreurs (les messages qui s'affichent si une donnée obligatoire n'est pas insérée).

  • la partie suivante récupère les variables si le bouton est enfoncé.

    Si c'est le cas, nous commençons par vérifier si les champs sont correctement remplis
    Nous vérifions ensuite la présence de mots interdits. Si un mot est détecté, un mail est envoyé à l'administrateur et l'annonce est refusée.

    Nous remplaçons ensuite les mots "refusés" comme @ pour les adresses mails.

    La partie suivante supprime les liens et images dans les annonces.

    Si le fichier est correct, il est enregistré.

  • la dernière partie est simplement le formulaire d'entrée des données.

Des développements futurs devraient permettre aux administrateurs d'insérer des liens et des images et de bloquer automatiquement les annonceurs tapant des mots interdits.

<?php
//Vérification de l'utilisateur
if(!isset($HTTP_COOKIE_VARS['ybet']))
{
$login="";
$uid_util="";
}else{
$cookies=$HTTP_COOKIE_VARS['ybet'];
$cookies_array=array();
$cookies_array=Explode("-pw-",$cookies);
$login=$cookies_array[0];
$l=$cookies_array[1];
$cookies_array=explode("memo",$l);
$password=$cookies_array[0];
$memo=$cookies_array[1];
if(!mysql_connect('localhost','root')){
Echo'Connection Impossible';
exit();
} else{
// Echo'Connexion réussie';
}
Mysql_select_db('ybet');
$requete="SELECT * FROM member where username='$login' and password='$password'";
$valeur=mysql_query($requete);
$ligne=mysql_num_rows($valeur);

if ($ligne==0)
{
echo"Vous ne pouvez pas rentrer d'annonce, merci de vous connecter";
die('<meta http-equiv="refresh" content="3; URL=inscription.php">');
}else{
//echo"Utilisateur connu";
if ($memo=="")
{
Setcookie('ybet',$login."-pw-".$password."memo".$memo,time()+3600);
}else{
Setcookie('ybet',$login."-pw-".$password."memo".$memo,time()+864000);
}
while ($tableau=mysql_fetch_array($valeur)){
$mail=$tableau['email'];
$uid_util=$tableau['uid'];
// type = US pour user, AD pour administrateur. Développé pour permettre aux admins d'insérer des liens.
$type=$tableau['type'];
}
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="fr">
<meta name="description" content="Inscrire une activitée: fête, repas, exposition, rencontre sportive, ...">
<title>Inscrire votre activitée</title>
</head>
<?php
require('includes/header.php');
//require('includes/fonctions.php');
$titre="";
$erreur_titre="";
$description="";
$erreur_description="";
$date_init=date('d/m/Y');
$erreur_date_init="";
$date_fin=date('d/m/Y');
$erreur_date_fin="";
$lieu="";
$erreur_lieu="";
$ville="";
$erreur_ville="";

?>
<body vlink="#0000FF" bgcolor="#D8EAFA" topmargin="0" leftmargin="0">
<div align="center">
<table border="1" width="90%">
<tr>
<td width="20%" align="center">
<?php
// include('includes/colon-left.php');
?>
</td>
<td width="60%">
<?php
// début affichage et traitement du formulaire

// test d'exécution du sommaire

if (isset($_POST['go'])and $login<>""){
// vérification des données entrées.
$titre=ADDSLASHES($_POST['titre']);
$description=nl2br(ADDSLASHES($_POST['description']));
$date_init=ADDSLASHES($_POST['date_init']);
$date1=array();
$date1=Explode("/",$date_init);
$date_fin=ADDSLASHES($_POST['date_fin']);
$date2=array();
$date2=Explode("/",$date_fin);
$categorie=ADDSLASHES($_POST['categorie']);
$numero=$uid_util;
$lieu=ADDSLASHES($_POST['lieu']);
$ville=ADDSLASHES($_POST['ville']);
$region=ADDSLASHES($_POST['region']);
$nom=ADDSLASHES($_POST['nom']);
$tel=ADDSLASHES($_POST['tel']);
if ($titre=="")
{
$erreur_titre="Entrez un titre pour votre activité";
}elseif ($description==""){
$description="";
$erreur_description="Entrez une description";
}elseif ($date_init==""){
$erreur_date_init="Entrez une date de début";
$date_init=date('d/m/Y');
}elseif ($date_fin<$date_init){
$erreur_date_fin="La date de fin doit être supérieure à la date initiale";
$date_fin=$date_init;
}elseif ($lieu==""){
$erreur_lieu="Entrez un lieu pour votre activité";
}elseif ($ville==""){
$erreur_ville="Entrez une ville";
}
// fin de la première vérification
elseif ((!isset($date1[0])) or (!isset($date1[1])) or (!isset($date1[2])))
// or (checkdate($date1[1],$date1[0],$date1[2])))
{
$erreur_date_init="Votre date doit être au format J/M/année";
} elseif ((!isset($date2[0])) or (!isset($date2[1])) or (!isset($date2[2])))
// or (checkdate($date2[1],$date2[0],$date2[2])))
{
$erreur_date_fin="Votre date de fin doit être au format J/M/année";
}else{
// vérification des caractères interdits
$correct="O";

require('includes/start.php');
$requete="select interdit from interdit";
$valeur=mysql_query($requete);
$tableau=array();
while ($tableau=mysql_fetch_array($valeur))
{
if (EREG($tableau['interdit'],$titre))
{
$correct="N";
}elseif (EREG($tableau['interdit'],$description))
{
$correct="N";
}elseif (EREG($tableau['interdit'],$lieu))
{
$correct="N";
}elseif (EREG($tableau['interdit'],$ville))
{
$correct="N";
}elseif (EREG($tableau['interdit'],$nom))
{
$correct="N";
}elseif (EREG($tableau['interdit'],$tel))
{
$correct="N";
}
}
if ($correct=="N")
{
print "<b>Mots refusés détectés, un message est envoyé aux médérateurs ...</b><br>";
// envoi par mail
$date=date('Ymd');
$message=date("d/m/Y H:m:s\n")."\n Activitée incorrecte: "."\n Titre: ".$titre."\n Description: ".$description." /n Lieu: ".$lieu."/n Ville: ".$ville;
$entetes = "From: contact@site.be\nReply-to: contact@site.be\n";
$sujet="Activitée incorrecte ".$numero;
$webmaster=('contact@site.be');
// mail($webmaster,$sujet,$message,$entetes);
}
// remplacement des mots provenant de la table REMPLACE.
$requete="select * from remplace";
$valeur=mysql_query($requete);
$tableau=array();
$tableau=array();
$remplace="N";
while ($tableau=mysql_fetch_array($valeur))
{
if (EREG($tableau['refuse'],$titre))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$titre);
}elseif (EREG($tableau['refuse'],$description))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$description);
}elseif (EREG($tableau['refuse'],$lieu))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$lieu);
}elseif (EREG($tableau['refuse'],$ville))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$ville);
}elseif (EREG($tableau['refuse'],$nom))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$nom);
}elseif (EREG($tableau['refuse'],$tel))
{
$remplace="O";
STR_replace($tableau['refuse'],$tableau['remplace'],$tel);
}
}
require('includes/stop.php');
if ($remplace="O")
{
// envoi par mail, pas de blocage
$date=date('Ymd');
$message=date("d/m/Y H:m:s\n")."\n Activitée incorrecte, mots remplacéss: "."\n Titre: ".$titre."\n Description: ".$description." /n Lieu: ".$lieu."/n Ville: ".$ville;
$entetes = "From: contact@site.be\nReply-to: contact@site.be\n";
$sujet="Activitée incorrecte, mots remplacés ".$numero;
$webmaster=('contact@site.be');
// mail($webmaster,$sujet,$message,$entetes);
}
// suppression des liens
// titre
while (EREG("<a href",$titre))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$titre,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$titre=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$titre,2);
$titre=$texte2 [0].$texte2 [1];
}
// description
while (EREG("<a href",$description))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$description,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$description=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$description,2);
$description=$texte2 [0].$texte2 [1];
}
// lieu
while (EREG("<a href",$lieu))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$lieu,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$lieu=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$lieu,2);
$lieu=$texte2 [0].$texte2 [1];
}
// ville
while (EREG("<a href",$ville))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$ville,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$ville=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$ville,2);
$ville=$texte2 [0].$texte2 [1];
}
// nom
while (EREG("<a href",$nom))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$nom,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$nom=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$nom,2);
$nom=$texte2 [0].$texte2 [1];
}
while (EREG("<a href",$titre))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$titre,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$titre=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$titre,2);
$titre=$texte2 [0].$texte2 [1];

// tel
while (EREG("<a href",$tel))
{
// suppression de la chaîne <a href
$texte1=explode("<a href",$tel,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$tel=$texte1 [0].$texte2 [1];
// suppression de la chaîne </a>
$texte2=explode("</a>",$tel,2);
$tel=$texte2 [0].$texte2 [1];
}
// fin de suppression des liens.
// début suppression des images.
while (EREG("<img",$titre))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$titre,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$titre=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
// début suppression des images.
while (EREG("<img",$description))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$description,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$description=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
// début suppression des images.
while (EREG("<img",$lieu))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$lieu,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$lieu=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
while (EREG("<img",$ville))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$ville,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$ville=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
while (EREG("<img",$nom))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$nom,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$nom=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
while (EREG("<img",$tel))
{
// suppression de la chaîne <a href
$texte1=explode("<img",$tel,2);
// suppression de > à la fin de l'adresse
$texte2=explode(">",$texte1 [1],2);
$tel=$texte1 [0].$texte2 [1];// suppression de la chaîne </a>
}
// fin de manipulation. Si le message est correct, il peut être enregistré.
if($correct=="O")
{
$date_init=$date1[2].$date1[1].$date1[0];
$date_fin=$date2[2].$date2[1].$date2[0];
require('includes/start.php');
$requete="INSERT activite SET titre='$titre',description='$description',date_init='$date_init',date_fin='$date_fin',categorie='$categorie',
numero='$numero',lieu='$lieu',ville='$ville',region='$region',nom='$nom',tel='$tel'";
$resultat=mysql_query($requete);
echo "<b>Votre activitée a bien été enregistrée. Merci</b>";
die('<meta http-equiv="refresh" content="6; URL=index.php">');
}
}
}

if ($login=="")
{
echo"<b>Vous ne pouvez pas insérer une activité, merci de vous <a href=\"connexion.php\"> connecter</a>
ou de vous <a href=\"inscription.php\">inscrire</a></b>";
}else{
echo"<b>Bonjour ".$login."</b>";
}
// formulaire d'entrée
$form="<form method=\"POST\">
<p><b>Nom de l'activité (*)</b>: <input type=\"text\" name=\"titre\" size=\"20\" value=\"".$titre."\"></p><font color=\"#FF0000\">".$erreur_titre."</font>
<p><b>Description (*)</b>: <textarea rows=\"2\" name=\"description\" cols=\"20\">".$description."</textarea><font color=\"#FF0000\">".$erreur_description."</font></p>
<p><b>Lieu (*)</b>: <input type=\"text\" name=\"lieu\" size=\"40\"value=\"".$lieu."\"><font color=\"#FF0000\"> ".$erreur_lieu."</font></p>
<p><b>Ville (*)</b>
: <input type=\"text\" name=\"ville\" size=\"40\" value=\"".$ville."\"><font color=\"#FF0000\"> ".$erreur_ville."</font></p>
<p><b>Région - pays (*):</b> <select size=\"1\" name=\"region\">";
require('includes/start.php');
$requete="select region,pays from region order by 'pays','region' DESC";
$valeur=mysql_query($requete);
if(isset($region)){
$form=$form."<option selected>".STRIPSLASHES($region)."</option>";
}
while ($tableau=mysql_fetch_array($valeur))
{
$form=$form."<option>".STRIPSLASHES($tableau['region'])." - ".STRIPSLASHES($tableau['pays'])."</option>";
}
$form=$form."</select></p>
<p><b>Date début (*)</b>: <input type=\"text\" name=\"date_init\" size=\"10\" value=\"".$date_init."\">
<font color=\"#FF0000\">".$erreur_date_init."</font> Date de Fin: <input type=\"text\" name=\"date_fin\" size=\"10\" value=\"".$date_fin."\"><font color=\"#FF0000\">".$erreur_date_fin."</font></p>&nbsp;&nbsp;
</p><p><b>Type d'activité (*)</b>: <select size=\"1\" name=\"categorie\">";
$requete="select * from categ order by 'categorie' DESC";
$valeur=mysql_query($requete);
if(isset($categorie)){
$form=$form."<option selected>".STRIPSLASHES($categorie)."</option>";
}
while ($tableau=mysql_fetch_array($valeur))
{
$form=$form."<option>".STRIPSLASHES($tableau['categorie'])."</option>";
}
$form=$form."</select></p>
<p>Personne de contact éventuelle : <input type=\"text\" name=\"nom\" size=\"20\"></p>
<p>Téléphone de contact: <input type=\"text\" name=\"tel\" size=\"20\"></p>
<p>(*) Les cases en gras sont obligatoires.</p>
<p><input type=\"submit\" value=\"Insérer\" name=\"go\"></p></form>";
print($form);
//Fin affichage entrée des données>
?>
</td>
<td width="20%" align="center">
<?php
include('includes/colon-right.php');
?>
</td>
</tr>
</table>
</div>
<?php
include('includes/footer.php');
?>
</BODY>
</HTML>

10. Affichage des activités.

C'est ici qu'il va y avoir des adaptations à faire. Nous allons développer différentes versions de l'affichage. La première version est de type bannière et va s'insérer dans la colonne de droite de notre site principal. Pour permettre à chacun de l'utiliser sur son site, nous allons utiliser la table config pour permettre de gérer le nombre d'activités affichées dans cette bannière.

La deuxième version va s'afficher complètement dans une page et reprendre plus d'activités. Cette page permettra également de filtrer suivant la région ou la date.

La dernière reprend une activité par page.

Le principe est similaire à celui des petites annonces.

10.1. Affichage type bannière verticale

Nous allons commencer par développer l'administration. Le fichier config-banniere.php va permettre de sélectionner le nombre d'activités et suivant quel configuration (fonction de la date, de la région, ...). Une autre partie va permettre de sélectionner la couleur de fond, la couleur du titre, de la description, ....

Le type débute par BA. 

  • Le nombre d'activité est de type BA1N.

  • La couleur de fond: BA1F

  • la couleur titre: BA1T

  • la couleur du texte: BA1X

<?php
/*
Ce fichier permet d'administrer les bannières sur le site.
développement activité.
*/
// récupération des propriétés si elles ont été définies.
$nombre=3;
$couleur_fond="FFFFFF";
$couleur_titre="0000FF";
$couleur_texte="000000";
require ('../includes/start.php');
$requete="SELECT * FROM config where type like 'BA%'";
$valeur=mysql_query($requete);
while ($tableau=mysql_fetch_array($valeur)){
switch($tableau['type']){
case "BA1N":
$nombre=$tableau['valeur'];
break;
case "BA1F":
$couleur_fond=$tableau['valeur'];
break;
case "BA1T":
$couleur_titre=$tableau['valeur'];
break;
case "BA1X":
$couleur_texte=$tableau['valeur'];
break;
default:
break;
}
}
require ('../includes/stop.php');
If (isset($_POST['B1']))
{
$nombre=intval($_POST['nombre'],"integer");
echo $nombre;
// tests des valeurs.
$couleur_fond=STRTOUPPER($_POST['couleur_fond']);
$couleur_titre=STRTOUPPER($_POST['couleur_titre']);
$couleur_texte=STRTOUPPER($_POST['couleur_texte']);
echo preg_match("/^[0-F]*$/",$couleur_fond) ;
if (!preg_match("/^[0-F]*$/",$couleur_fond))
{
echo "entrez une couleur de fond valide, seuls 6 caractères 0 à F sont acceptés";
}
elseif(!preg_match("/^[0-F]*$/",$couleur_titre)){
echo "entrez une couleur de titre valide, seuls 6 caractères 0 à F sont acceptés";
}elseif(!preg_match("/^[0-F]*$/",$couleur_texte)){
echo "entrez une couleur de titre valide, seuls 6 caractères 0 à F sont acceptés";
}else{
// données valides
require ('../includes/start.php');
$requete="SELECT * FROM config where type='BA1N'";
$valeur=mysql_query($requete);
// teste si la variable existe
if (mysql_num_rows($valeur)==0)
{
$requete="INSERT config SET type='BA1N',valeur='$nombre'";
}else{
$requete="UPDATE config SET valeur='$nombre' where type='BA1N'";
}
$requete="SELECT * FROM config where type='BA1F'";
$valeur=mysql_query($requete);
// teste si la variable existe
if (mysql_num_rows($valeur)==0)
{
$requete="INSERT config SET type='BA1F',valeur='$couleur_fond'";
}else{
$requete="UPDATE config SET valeur='$couleur_fond' where type='BA1F'";
}
$erreur=mysql_query($requete);
$requete="SELECT * FROM config where type='BA1T'";
$valeur=mysql_query($requete);
// teste si la variable existe
if (mysql_num_rows($valeur)==0)
{
$requete="INSERT config SET type='BA1T',valeur='$couleur_titre'";
}else{
$requete="UPDATE config SET valeur='$couleur_titre' where type='BA1T'";
}
$erreur=mysql_query($requete);
$requete="SELECT * FROM config where type='BA1X'";
$valeur=mysql_query($requete);
if (mysql_num_rows($valeur)==0)
{
$requete="INSERT config SET type='BA1X',valeur='$couleur_texte'";
}else{
$requete="UPDATE config SET valeur='$couleur_texte' where type='BA1X'";
}
$erreur=mysql_query($requete);
require ('../includes/stop.php');
}
}
$form="<form method=\"POST\">
<p><b>Gestion des bannières pour activités:</b></p>
<p style=\"margin-top: 0; margin-bottom: 0\">Nombre d'activités: <input type=\"text\" name=\"nombre\" size=\"4\" value=\"".$nombre."\"></p>
<p style=\"margin-top: 0; margin-bottom: 0\">Couleur de fond en hexadécimal: <input type=\"text\" name=\"couleur_fond\" size=\"6\" value=\"".$couleur_fond."\"></p>
<p style=\"margin-top: 0; margin-bottom: 0\">Couleur du titre en hexadécimal: <input type=\"text\" name=\"couleur_titre\" size=\"6\" value=\"".$couleur_titre."\"></p>
<p style=\"margin-top: 0; margin-bottom: 0\">Couleur du texte en hexadécimal: <input type=\"text\" name=\"couleur_texte\" size=\"6\" value=\"".$couleur_texte."\"></p>
<p><input type=\"submit\" value=\"Enregistrer\" name=\"B1\"></p>
</form>";
echo $form;
?>

Le fichier affichage-bannier.php permet d'afficher une bannière suivant les desiderata de configuration. Tout n'est pas affiché. L'affichage se fait dans un tableau.

<?php
/* affichage sous forme banière
développement dahut.be
*/
// récupération des caractéristiques bannières
require ('includes/start.php');
$requete="SELECT * FROM config where type like 'BA%'";
$valeur=mysql_query($requete);
while ($tableau=mysql_fetch_array($valeur)){
switch($tableau['type']){
case "BA1N":
$nombre=$tableau['valeur'];
break;
case "BA1F":
$couleur_fond=$tableau['valeur'];
break;
case "BA1T":
$couleur_titre=$tableau['valeur'];
break;
case "BA1X":
$couleur_texte=$tableau['valeur'];
break;
default:
break;
}
}
$requete="SELECT * FROM activite order by 'date_init' ASC limit 0,".$nombre;
$valeur=mysql_query($requete);
$erreur=mysql_error();
print($erreur);
?>
<table border="1" width="100%" cellspacing="0" cellpadding="0" bgcolor="#<?php echo $couleur_fond?>">
<?php
while ($tableau=mysql_fetch_array($valeur))
{
?>
<tr>
<td width="100%">
<?php
echo "<b><font color=\"#".$couleur_titre."\">".STRIPSLASHES($tableau['titre'])."</font></b><br>";
echo "<font color=\"#".$couleur_texte."\">".STRIPSLASHES($tableau['description'])."</font><br>";
$date_init=$tableau['date_init'];
list($annee, $mois, $jour) = explode("-",$date_init);
$date = $jour.'/'.$mois.'/'.$annee;
echo "<font color=\"#".$couleur_texte."\">".$date;
$date_fin=$tableau['date_fin'];
if ($date_init<>$date_fin)
{
list($annee, $mois, $jour) = explode("-",$date_fin);
$date = $jour.'/'.$mois.'/'.$annee;
echo" - ". $date;
}
echo "</font><br>";
echo "<b><font color=\"#".$couleur_texte."\">".STRIPSLASHES($tableau['ville'])."</font></b><br>";
echo "<font color=\"#".$couleur_texte."\">".STRIPSLASHES($tableau['categorie'])."</font><br>";
?>
</td>
</tr>
<?php
}
?>
</table>
<?php
?>

Numéro TVA (Arlon -Belgique): BE 0718.409.912.

Conception Internet et référencement 061/32.00.15.

1. Introduction - 5. Résumé des requêtes MySQL - 6. Inscription des utilisateurs - 7. Vérifier une adresse mail entrée dans un formulaire - 8. Quelques petites fonctions utiles - 11. Suppression des adresses Internet et mail dans les annonces - 12. Gestion d'activités


Hors développements:

Un petit calendrier en Php à utiliser sur un site Internet - Gérer un champ.