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
Cette table activite reprend:
-
uid: numéro de l'annonce, automatique
-
titre: le titre de l'activité, 40
caractères
-
description: une courte description, 80
caractères
-
date_init: une date de début
-
date_fin: une date de fin (qui peuvent
être identiques).
-
categorie: la catégorie qui sera
sélectionné dans une autre table, 40 caractères
-
numero: le numéro utilisateur de
l'annonceur
-
lieu, lieu de la manifestation, 40
caractères
-
Ville, 40 caractères
-
Région, 40 caractères (reprend la
région + pays)
-
nom: nom de contact éventuel, 20
caractères
-
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:
-
lieu, lieu de la manifestation, 40
caractères
-
Ville, 40 caractères
-
Région, 20 caractères
-
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:
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>
</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.
<?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
?> |
|