Optimisation livre d'or

Fermé
slek22 Messages postés 19 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 16 mars 2008 - 27 févr. 2008 à 10:50
TechAndCo Messages postés 252 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 4 octobre 2010 - 27 févr. 2008 à 12:59
Bonjour,
J'ai réussi a coder un livre d'or mais maintenant, je voudrait l'optimiser !!!
Donc je vais commencé par vous donner la liste des point à améliorer et après, je vous donne le script ;)
1 - Je ne veux plus que les ' soit remplacé par des /
2 - Je voudrais que quand un membres clic sur le bouton alors qu'il n'a pas renseigner tout les champ, le message d'erreur suivant s'affiche au dessus du formulaire en rouge : Désolé, mais vous n'avez pas renseignez tout les champ du formulaire !!!

Et voici le script :

<center>Si vous avez appreciez un projet réalisé pas les membres du CCJ et que vous voulez le faire savoir,<br/> vous êtes au bon endroit !!!</center>
<form method="post" action="livreor.php">
<fieldset><legend>Pseudo<center></legend><input name="pseudo" /></center></fieldset>
<fieldset><legend>Message<center></legend><textarea name="message" rows="8" cols="35"></textarea></center></fieldset>
<center><input type="submit" value="Signer le livre d'or" /></center>
</p>
</form>

<p class="pages">

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("ccj");

// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}

// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>

<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>


Voila, donc ça serait super si quelqu'un pouvait m'optimiser se script :)
Merci d'avance et à bientôt ;)
A voir également:

3 réponses

slek22 Messages postés 19 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 16 mars 2008
27 févr. 2008 à 11:15
Je mes suis renseigné, j'ai trouver la fonction pour éviter que les ' ne soit remplacé par des / : c'est stripslashes mais je ne sait pas l'utiliser :(
0
slek22 Messages postés 19 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 16 mars 2008
27 févr. 2008 à 11:54
Pour les antislash, j'ai cru avoir trouvé la soluc mais ça n'ais pas le cas :( Regarder ce que j'ai fais et dite moi ou est
mon erreur !!!
<fieldset><legend>Le Livre d'Or</legend>

<form method="post" action="livreor.php">
<fieldset><legend>Pseudo<center></legend><input name="pseudo" /></center></fieldset>
<fieldset><legend>Message<center></legend><textarea name="message" rows="8" cols="35"></textarea></center></fieldset>
<center><input type="submit" value="Signer le livre d'or" /></center>
</p>
</form>

<p class="pages">

<?php
mysql_connect("", "", "");
mysql_select_db("ccj");

// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}

// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="livreor.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>

<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
$message = nl2br(stripslashes($donnees['message']));
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}

mysql_close();
?>

</fieldset>
0
TechAndCo Messages postés 252 Date d'inscription jeudi 3 mai 2007 Statut Membre Dernière intervention 4 octobre 2010 20
27 févr. 2008 à 12:59
Bonjour,

Alors déjà des conseils de structures:
1. Segmente ton code en plusieurs fichiers (ca sera plus clair pour toi et pour les autres)
2. Crée un fichier par exemple variables.conf.php dans lequel tu places toutes tes variables à initialiser
3. Crée un fichier connection.php pour ta connection à la bdd
4. Tu peux utiliser un switch sur un paramètre passé a la page pour : Afficher les titres du livre par ex (nom = titre), afficher un message (nom = message&id=....), afficher ton formulaire (nom=nvmess)

Ca fait déjà pas mal.

A bientot.
0