Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1754 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Création d'un livre d'or en PHP : problème de débutant...

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'un livre d'or en PHP : problème de débutant...

n°2108119
Mike666
Pouet
Posté le 25-10-2011 à 20:41:02  profilanswer
 

Bonjour à tous :
Voilà, ne sachant plus que faire, j'ai 2 soucis qui commencent un peu à m'ennuyer menu:
 
1) Premièrement :
Pour une raison que je n'explique pas du tout, lorsque je crée un message sur mon livre d'or, une fois celui ci posté, lorsque je rafraichi ma page, eh bien il se trouve que ce dernier est dupliqué, puis si je rafraichi encore, c'est à nouveau le cas, etc.....
Quel diable possède ma page?? !!! Je ne comprends rien, que se passe t-il? J'ai essayé de recréer une nouvelle table sur phpmyadmin, mais le problème reste intact
 
2) Deuxièmement :
Je me suis fortement inspiré du script de M@teo pour mon livre d'or (j'ai tout appris ici pour développer mon site orienté photo, donc ne m'en voulez pas si je n'ai pas vraiment inové)...
Et il se trouve qu'en essayant de rajouter simplement la date aux posts de mes visiteurs, je n'arrive pas à me dépatouiller : en effet, l'ordi m'affiche inexorablement 01/01/1970 (date de création du php si j'en crois les cours de M@teo21..)
Voilà ce que j'ai rajouté dans le script :
 
PS : j'ai donc crée ma table "livreor" : iD/Pseudo/Message/Date
<?php mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $date . "')" );
 
Et pour l'affichage de la date :
<?php echo '<font color="orange">'.date("d/m/Y",$val['date_post']).'</font>';
 
 
Je me rend compte que c'est au niveau de l'enregistrement que cela pêche, car dans phpmyadmin, il y a toujours écrit 00/00/00 dans la colonne date...donc c'est que rien n'est finalement enregistré concernant la date...
 
 
SVP de l'aide car ce problème me stresse HELP !!!
Je ne sais pas trop si ça se fait ici, mais voici mon code extrait en entier (je vous passe le début) :
 
 
Code : PHP - Sélectionner
 
 
<form method="post" action="livreor.php">
        <p>Mon site vous plaît ? Laissez-moi un message !</p>
        <p>
            Pseudo : <input name="pseudo" /><br />
            Message :<br />
            <textarea name="message" rows="8" cols="35"></textarea><br />
            <input type="submit" value="Envoyer" />
        </p>
    </form>
 
    <p class="pages">
 
<?php
mysql_connect("....", ".......", "......" );
mysql_select_db("......." );
 
// --------------- Étape 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 . "', '" . $date . "')" );
}
 
// --------------- Étape 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
 
 
// --------------- Étape 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)
?>
 
</body>
</html>
 


Message édité par Mike666 le 28-10-2011 à 22:51:51
mood
Publicité
Posté le 25-10-2011 à 20:41:02  profilanswer
 

n°2108503
boutlatent
atantansontankilsetan
Posté le 28-10-2011 à 07:22:13  profilanswer
 

Pour ton problème de doublons lors du rafraichissement, il suffit juste après ton insert de vider POST ($_POST = array(); ), et faire une redirection via header.
 
Si tu veux afficher ta date au format français, utilise la fonction DATE_FORMAT de mysql.


Message édité par boutlatent le 28-10-2011 à 07:22:56
n°2108767
guicara
Posté le 30-10-2011 à 13:39:19  profilanswer
 

Pour ta requête d'insertion, tu peux par exemple utiliser la fonction "NOW()" de MySQL qui retourne la date au moment précis de l'insertion. Tu peux aussi passer par CURDATE() ou CURTIME().

 

Dans le code que tu donne, tu utilise une variable $date. Mais elle n'est jamais initialisée.

 

En utilisant NOW() :

Code :
  1. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', NOW()" );
 

En utilisant ta variable $date :

Code :
  1. $date = date("Y-m-d" );
  2. mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $date . "')" );
 

Après il faut bien vérifier si ton champ date dans ta BDD est du type DATE, DATETIME...


Message édité par guicara le 30-10-2011 à 13:39:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Création d'un livre d'or en PHP : problème de débutant...

 

Sujets relatifs
Récuperer info membre Php-MysqlProblème avec Dewplayer et Blogspot
probléme de synthaxe sur vlookupProblème importation Xampp
Problème avec confirm() et AJAXconfigurer PHP pour intaller Magento
Problème formulaire ["undefined"]problème pour ajouter un nombre à une variable (heure UTC et CEST)
[Php/smtp/phpmailer] Envoi de mail smtp (pb ovh perso) 
Plus de sujets relatifs à : Création d'un livre d'or en PHP : problème de débutant...


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR