IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

timestamp + time


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut timestamp + time
    bonjour j'essai de faire un système de commentaire qui lors de la soumission intègre l'heure et la date au moment du post

    voici la structure de ma table

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `commentaires` (
      `id` int(10) NOT NULL auto_increment,
      `idvue` int(10) NOT NULL,
      `nom` varchar(255) NOT NULL,
      `email` varchar(255) default NULL,
      `message` mediumtext NOT NULL,
      `hsoum` timestamp NOT NULL default,
      `active` enum('0','1') NOT NULL default '0',
      PRIMARY KEY  (`id`)
    );

    et lors de l'insrtion en bdd je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	$ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES (NULL, \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\', \''.time().'\', 0);';
    	$resul = requete_SQL($ins_sql);
    et en fait à chaque insertion le champ hsoum reste à 0000-00-00 00:00:00

    je ne comprends pas pourquoi

    merci de votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $time=time();
    $ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES (NULL, \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\', \''.$time.'\', 0)';
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    La solution du dessus ne fonctionnera pas car il faut distinguer timestamp php et timestamp mysql :

    Le timestamp Php représente le temps écoulé en secondes depuis le 01/01/1970 (cf. fonction time() ) donc on aura qqch comme 123456789.

    Le timestamp mysql par contre est un format écrit sur un maximum de 14 chiffres représentant une date ou l'instant présent via la commande Mysql NOW()
    La notation du timestamp Mysql est sous la forme AAAA-MM-DD HH:MM:SS ou AAAAMMJJHHMMSS. En chiffres cela donne par exemple 2006-08-07 11:23:37 ou 20060807112337

  5. #5
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Exact ! (y'a des matins je vous jure ....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES (NULL, \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\',NOW(), 0)';
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    Merci de votre aide

    par contre lorsque je fait comme l'exemple de
    http://www.expreg.com/expreg_article.php?art=timestamp

    ou exactement la meme que tu ma donné ci dessus il y' a un probleme php me retroune une erreur

    Fatal error: Call to undefined function: now() in
    ca veut dire que la finction n'existe pas ou alors c l'hebergeur qui la bride ?

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    Tu dois essayer d'appeler une fonction now() en php alors que tu dois appeler la fonction now() de mysql.

    Peux tu nous montrer ton code stp.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut voila
    voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #autodoc >> Variable qui initialise le debut de la verif
    $ok = 0;
     
    #autodoc >> Verifi si le nom est ok
    if (!$nom)
    	{
    	echo '<p align="center" class="erreur">Vous n\'avez pas mis de nom.</p>';
    	$ok = 1;
    	}
     
    #autodoc >> Verifi si 'email est ok
    if (VerifierAdresseMail($email) == false)
    	{
    	echo '<p align="center" class="erreur">Votre adresse email est incorrect</p>';
    	$ok = 1;
    	}
     
    #autodoc >> Verifi si le message est ok
    if (!$message)
    	{
    	echo '<p align="center" class="erreur">Vous n\'avez pas mis de commentaire.</p>';
    	$ok = 1;
    	}
     
    #autodoc >> Verifi si la personne n'est pas en train de flooder
    if(anti_flood() == true)
    	{ 
    	echo '<p align="center" class="erreur">Vous essayez de nous flooder.</p>';
    	$ok = 1;
    	}
     
    if($ok == 0)
    	{
    	#autodoc >> Traitement du commentaire
    	$message = form(removeHack($message));
    	$hsoum = now();
    	#autodoc >> Insertion en bdd
    	$ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES (NULL, \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\', \''.$hsoum.'\', 0);';
    	$resul = requete_SQL($ins_sql);
    	echo '<p align="center" class="erreur">Votre commentaire a &eacute;t&eacute; ajout&eacute;.</p>';
    	}
    else 
    	{
    	echo '<p align="center" class="erreur">Veuillez recommencer l\'ajout de votre commentaire.</p>';
    	include_once 'formulaire.php';
    	}

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $hsoum = now();
    #autodoc >> Insertion en bdd
    $ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES (NULL, \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\', \''.$hsoum.'\', 0);';
    $resul = requete_SQL($ins_sql);
    Tu essaies effectivement d'utiliser une fonction php qui n'existe pas !

    Il faut que tu fasses directement comme t'as dit RideKick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ins_sql = 'INSERT INTO `commentaires` ( `id` , `idvue` , `nom` , `email` , `message` , `hsoum`, `active` ) VALUES ('', \''.$numcomm.'\', \''.$nom.'\', \''.$email.'\', \''.$message.'\',NOW(), 0)';

  10. #10
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    oki nikel merci ca fonctionne
    et pour faire une comparaison entre la date du post et celle d'aujourd'hui ??

    c a ce moment que je peux peut etre utiliser time() ??

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 70
    Par défaut
    Pas trop compris la dernière question.

    Peux tu donner un exemple ?

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    Admettons que le commentaire est de

    2007-03-01 11:36:57

    et que je souhaite comparer avec la date d'aujourd'hui

    quel fonction dois je utiliser est ce que time est bien approprier dans ce cas ??

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 161
    Par défaut
    C'est surtout pour mon systeme d'anti flood

    je veux comparer la date d'insertion et je laisse environ 5 min avans de pouvoir reposter un commentaire

    comment faire pour comparer voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #autodoc >> Fonction qui evite le FLOOD
     function anti_flood() 
    	{
    	# 1° d'abord commencer par supprimer tout ceux dont le temps a expirer
    	$del_sql = 'DELETE FROM flood WHERE dernier + '.TIMEFLOOD.' < '.time().'';
    	$result_del = requete_SQL($del_sql);
     
    	# 2° ensuite prenez l'ip du visiteur
    	$sel_sql = 'SELECT dernier FROM flood WHERE ip=\''.getip().'\'';
    	$resultat = requete_SQL($sel_sql);
     
    	# 3° Si l Ip du visiteur est deja dans la table, ai !!
    	if(mysql_num_rows($resultat) > 0)
    		{
    			return true;
    		}
    	# 4° sinon tout va bien, reste plus qu'a inserer l'ip de votre visiteur dans la table
    	else
    		{
    			$ins_sql = 'INSERT INTO `flood` ( `ip` , `dernier` ) VALUES (\''.getip().'\', \''.time().'\');';
    			$resultat = requete_SQL($ins_sql);
    			return false;
    		}
    	}

  14. #14
    Membre confirmé Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Par défaut
    MySQL Date and Time Functions :
    Part 1
    Part 2

Discussions similaires

  1. [MySQL] time() comparaison timestamp
    Par david2511 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/04/2009, 19h48
  2. [Dates] Convertion Time en TimeStamp
    Par riete dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2008, 15h45
  3. time, timestamp, gestion des horaires
    Par cyrano_de_bergerac dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/04/2008, 17h48
  4. Insertion timestamp [date+time]
    Par badi082 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 30/01/2008, 10h12
  5. Gestion des champs Time [TimeStamp]
    Par poosh dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/08/2007, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo