Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Dans ce tuto, vous allez réaliser un script php pendant que
je siroterai un cocktail peinard je vous aiderai. Ce script permettra de facilement changer le CSS en ligne.
Connaissances requises :
- notion du CHMOD et écriture / lecture dans un fichier (
ici pour ceux qui ne connaissent pas)
- php/mysql, ça risque d'être utile.
Avant de vous lancer corps et âme dans la réalisation de ce script, regardons le fonctionnement et l'organisation de ce script :
- un fichier
style.css dans laquelle s'écrira ... le CSS
- une page
css.php où l'on affichera le fichier CSS et où l'on traitera les modifications
- une page
modif.php, pour modifier le code
- une page
rajout.html, quand on rajoutera du code.
Voici la table SQL à créer :
Code : SQL1
2
3
4
5
6 | CREATE TABLE `css` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`commentaire` varchar(50) collate latin1_general_ci NOT NULL,
`code` varchar(255) collate latin1_general_ci NOT NULL,
KEY `id` (`id`)
)
|
Commençons par la page
css.php, dans laquelle on affichera le fichier css et on traitera les modifications :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13 | <?php
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier)) //tant que l'on n'est pas a la fin du fichier
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
?>
|
La fonction feof() (end of files) vérifie si l'on est à la fin du fichier, elle renvoie true si c'est le cas.
Ce script affiche donc tout le contenu de la feuille de style.
Mais pourquoi utiliser une base de données ?
Pour faciliter la gestion du code, vous allez voir.
Attaquons-nous au fichier
rajout.html, il devra comporter un formulaire :
Code : HTML1
2
3
4 | <form method="POST" action="css.php">
Commentaires : <input type="text" name="commentaire" size=25/><br />
Code : <br /><textarea name="code" cols=30 rows=8></textarea><br />
<input type="submit" value="Rajouter" name="rajout"/>
|
Revenons dans le fichier
css.php pour traiter ce formulaire :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | <?
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
//-------------------------------------------
//Vérif 1 : Est-ce qu'on rajoute quelque chose ?
//-------------------------------------------
if(isset($_POST['rajout']))
{
$commentaire=$_POST['commentaire'];
$code=$_POST['code'];
mysql_query("INSERT INTO css VALUES('','".$commentaire."','".$code."')");//on rajoute tout ça dans la base de données
}
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier))
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
mysql_close(*****);
?>
|
Enfin, la page
modif.php permettra de modifier ces entrées :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | <form method="POST" action="css.php">
<?php
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
$retour=mysql_query('SELECT * FROM css');//on récupére les entrées
$id=0;
while ($donnees=mysql_fetch_array($retour))
{
echo "<input size=25 type='text' value='".$donnees['commentaire']."' name='style[$id][commentaire]' />"; //le champ de texte du commentaire
echo "<a href='css.php?supr=".$donnees['id']."'>Supprimer</a><br />"; //le lien pour supprimer un code
echo "<textarea name='style[$id][code]' cols=30 rows=8>".$donnees['code']."</textarea><br/>"; //un textarea qui contiendra le code
echo "<input type='hidden' name='style[$id][id]' value='".$donnees['id']."' />"; //un champ caché pour récupérer l'id du code
echo "<br /><br />";
$id++;
}
mysql_close(*****);
?>
<input type="submit" value="Modifier" name="modifier"/>
|
On a créé un tableau
'style' dans
$_POST pour chaque code, regardons comment l'exploiter dans
css.php :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 | <?php
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
//-------------------------------------------
//Vérif 1 : Est-ce qu'on rajoute quelque chose ?
//-------------------------------------------
if(isset($_POST['rajout']))
{
$commentaire=$_POST['commentaire'];
$code=$_POST['code'];
mysql_query("INSERT INTO css VALUES('','".$commentaire."','".$code."')");
}
//-------------------------------------------
//Vérif 2 : Est-ce que l'on modifie le code ?
//-------------------------------------------
if (isset($_POST['modifier'])) {
$p = $_POST['style'];//on décale les tableaux d'un rang
foreach($p as $key =>$s)
{
$code=$s['code'];
$commentaire=$s['commentaire'];
$id=$s['id'];
mysql_query( 'UPDATE css SET code=\''.$code.'\', commentaire=\''.$commentaire.'\' WHERE id='.$id.' ');
}
}
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier))
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
mysql_close(*****);
?>
|
Et on rajoute un script pour supprimer un code :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 | <?php
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
//-------------------------------------------
//Vérif 1 : Est-ce qu'on rajoute quelque chose ?
//-------------------------------------------
if(isset($_POST['rajout']))
{
$commentaire=$_POST['commentaire'];
$code=$_POST['code'];
mysql_query("INSERT INTO css VALUES('','".$commentaire."','".$code."')");
}
//-------------------------------------------
//Vérif 2 : Est-ce que l'on modifie le code ?
//-------------------------------------------
if (isset($_POST['modifier'])) {
$p = $_POST['style'];//on décale les tableaux d'un rang
foreach($p as $key =>$s)
{
$code=$s['code'];
$commentaire=$s['commentaire'];
$id=$s['id'];
mysql_query( 'UPDATE css SET code=\''.$code.'\', commentaire=\''.$commentaire.'\' WHERE id='.$id.' ');
}
}
//-------------------------------------------
//Vérif 3 : On essaye de supprimer quelque chose ?
//-------------------------------------------
if (isset($_GET['supr']))
{
$id=$_GET['supr'];
mysql_query( "DELETE FROM css WHERE id=".$id." ");
}
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier))
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
mysql_close(*****);
?>
|
Maintenant, on va s'occuper de l'écriture du fichier.
Nous allons l'ouvrir en mode "w", ce qui permet d'écraser tout le contenu :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | <?php
mysql_connect(******,******,*******);//Connexion à la bdd
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
//-------------------------------------------
//Vérif 1 : Est-ce qu'on rajoute quelque chose ?
//-------------------------------------------
if(isset($_POST['rajout']))
{
$commentaire=$_POST['commentaire'];
$code=$_POST['code'];
mysql_query("INSERT INTO css VALUES('','".$commentaire."','".$code."')");
}
//-------------------------------------------
//Vérif 2 : Est-ce que l'on modifie le code ?
//-------------------------------------------
if (isset($_POST['modifier'])) {
$p = $_POST['style'];//on décale les tableaux d'un rang
foreach($p as $key =>$s)
{
$code=$s['code'];
$commentaire=$s['commentaire'];
$id=$s['id'];
mysql_query( 'UPDATE css SET code=\''.$code.'\', commentaire=\''.$commentaire.'\' WHERE id='.$id.' ');
}
}
//-------------------------------------------
//Vérif 3 : On essaye de supprimer quelque chose ?
//-------------------------------------------
if (isset($_GET['supr'])) {
$id=$_GET['supr'];
mysql_query( "DELETE FROM css WHERE id=".$id." ");
}
//-------------------------------------------
//On écrit dans le fichier
//-------------------------------------------
$fichier=fopen("../style.css","w"); //on l'ouvre en mode "w"
$retour = mysql_query('SELECT * FROM css');
while ($donnees = mysql_fetch_array($retour))
{
$message .= $donnees['code'];
$message .="\n";//retour à la ligne
}
fputs($fichier, $message);
fclose($fichier);
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier))
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
mysql_close(*****);
?>
|
N'oubliez pas de rajouter des liens entres ces pages.
Voila donc les trois pages au final :
css.php
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 | <a href="modif.php">Modifier le code</a>
<a href="rajout.html">Rajouter une balise </a>
<?php
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
//-------------------------------------------
//Vérif 1 : Est-ce qu'on rajoute quelque chose ?
//-------------------------------------------
if(isset($_POST['rajout']))
{
$commentaire=$_POST['commentaire'];
$code=$_POST['code'];
mysql_query("INSERT INTO css VALUES('','".$commentaire."','".$code."')");
}
//-------------------------------------------
//Vérif 2 : Est-ce que l'on modifie le code ?
//-------------------------------------------
if (isset($_POST['modifier'])) {
$p = $_POST['style'];//on décale les tableaux d'un rang
foreach($p as $key =>$s)
{
$code=$s['code'];
$commentaire=$s['commentaire'];
$id=$s['id'];
mysql_query( 'UPDATE css SET code=\''.$code.'\', commentaire=\''.$commentaire.'\' WHERE id='.$id.' ');
}
}
//-------------------------------------------
//Vérif 3 : On essaye de supprimer quelque chose ?
//-------------------------------------------
if (isset($_GET['supr'])) {
$id=$_GET['supr'];
mysql_query( "DELETE FROM css WHERE id=".$id." ");
}
//-------------------------------------------
//On écrit dans le fichier
//-------------------------------------------
$fichier=fopen("style.css","w"); //on l'ouvre en mode "w"
$retour = mysql_query('SELECT * FROM css');
while ($donnees = mysql_fetch_array($retour))
{
$message .= $donnees['code'];
$message .="\n";//retour à la ligne
}
fputs($fichier, $message);
fclose($fichier);
//-------------------------------------------
//On affiche le fichier
//-------------------------------------------
$fichier=fopen("style.css","r");
$compteur=1;
while (!feof($fichier))
{
$ligne=fgets($fichier);
echo $compteur.'.'.nl2br($ligne);
$compteur++;
}
mysql_close(*****);
?>
|
rajout.html
Code : HTML1
2
3
4
5 | <a href="css.php">Index css</a>
<code type="html"><form method="POST" action="css.php">
Commentaires : <input type="text" name="commentaire" size=25/><br />
Code : <br /><textarea name="code" cols=30 rows=8></textarea><br />
<input type="submit" value="Rajouter" name="rajout"/>
|
modif.php
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | <a href="css.php">Index css</a>
<a href="rajout.html">Rajouter une balise </a>
<form method="POST" action="css.php">
<?php
mysql_connect(******,******,*******);//Connexion à la BDD
mysql_select_db(*******);// n'oubliez pas de remplacer les *****
$retour=mysql_query('SELECT * FROM css');//on récupère les entrées
$id=0;
while ($donnees=mysql_fetch_array($retour))
{
echo "<input size=25 type='text' value='".$donnees['commentaire']."' name='style[$id][commentaire]' />"; //le champ de texte du commentaire
echo "<a href='css.php?supr=".$donnees['id']."'>Supprimer</a><br />"; //le lien pour supprimer un code
echo "<textarea name='style[$id][code]' cols=30 rows=8>".$donnees['code']."</textarea><br/>"; //un textarea qui contiendra le code
echo "<input type='hidden' name='style[$id][id]' value='".$donnees['id']."' />"; //un champ caché pour récupérer l'id du code
echo "<br /><br />";
$id++;
}
mysql_close(*****);
?>
<input type="submit" value="Modifier" name="modifier"/>
|
Et vous devriez obtenir quelque chose comme ça :
css.php
rajout.html
modif.php
Et voilà, ce tuto touche à sa fin.
Amusez-vous bien à changer votre CSS directement en ligne.