Page 1 sur 1

Quel type de date mettre ?

Posté : 12 mars 2014, 13:05
par ISoon
Bonjour,

j'ai se code pour insérer des éléments dans la base de donnée avec PDO :
<?php
session_start();
$id = htmlspecialchars(intval($_GET['id']));


try
{
    $bdd = new PDO('mysql:host=;dbname=', '', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
 
 
  
$ip = $_SERVER['REMOTE_ADDR'];
$idduel = $id;
  
$req = $bdd->prepare( ' SELECT COUNT(*) AS nb_occurences FROM vote1 WHERE IP = :ip AND  date_passage >= (NOW() - INTERVAL 1 DAY)') ;
$req->bindValue(':ip',$ip, PDO::PARAM_STR);
$req->execute();
$donnees = $req->fetch();
  
if($donnees['nb_occurences'] == 0)
{
    // cette ip ne s'est pas connectée ces dernières 24h
    // on l'insère en BDD
     $req2 = $bdd->prepare( ' INSERT INTO vote1 (idduel, date_passage) VALUES ,:idduel ,:ip, NOW()' );
    $req2->bindValue(':ip',$ip, PDO::PARAM_STR);
    $req2->execute();
    $req2->closeCursor();
    // et on affiche le lien
    echo '<a href = "acceuil.php">Lien</a>';
}
else
{
    echo 'Rien...'; // le membre s'est connecté il y a moins de 24 heures, on n'affiche rien
}
$req->closeCursor();
 
?>
Sauf que pour la colonne "Date_Passage" je ne sais pas quel type mettre?

Merci beaucoup de votre réponse

Re: Quel type de date mettre ?

Posté : 12 mars 2014, 14:15
par xTG
A priori un format datetime si les requêtes que tu nous présentes sont correctes (je fais abstraction de la seconde qui comporte des erreurs de syntaxe).

Re: Quel type de date mettre ?

Posté : 12 mars 2014, 14:28
par ISoon
A priori un format datetime si les requêtes que tu nous présentes sont correctes (je fais abstraction de la seconde qui comporte des erreurs de syntaxe).
Il y a des erreurs dans ma requete?

Re: Quel type de date mettre ?

Posté : 12 mars 2014, 20:38
par xTG
INSERT INTO vote1 (idduel, date_passage) VALUES ,:idduel ,:ip, NOW()
2 colonnes, 3 valeurs et une virgule qui se balade n'importe où.

Re: Quel type de date mettre ?

Posté : 15 mars 2014, 17:20
par ISoon
INSERT INTO vote1 (idduel, date_passage) VALUES ,:idduel ,:ip, NOW()
2 colonnes, 3 valeurs et une virgule qui se balade n'importe où.
Voici mon code, j'arrive à insérer.
<?php
session_start();
$id = htmlspecialchars(intval($_GET['id']));


try
{
    $bdd = new PDO('mysql:host=;dbname=', '', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
 
 
  
$ip = $_SERVER['REMOTE_ADDR'];
$idduel = $id;
$req = $bdd->prepare( ' SELECT COUNT(*) AS nb_occurences FROM vote1 WHERE ip = :ip AND  date_passage >= (NOW() - INTERVAL 1 DAY)') ;
$req->bindValue(':ip',$ip, PDO::PARAM_STR);
$req->execute();
$donnees = $req->fetch();
  
if($donnees['nb_occurences'] == 0)
{
     $req2 = $bdd->prepare( "INSERT INTO vote1 (idduel, ip) VALUES ('$idduel' ,'$ip')" );
    $req2->bindValue(':ip',$ip, PDO::PARAM_STR);
    $req2->execute();
    $req2->closeCursor();
echo'Marche !';

}
else
{
    echo'Vous avez déjà voter ajourd hui !'; 
}
$req->closeCursor();
 
?>
Mais quand j'y retourne quelques secondes après et bas "Marche" se remets et sa ne devrait pas...

Merci beaucoup

Re: Quel type de date mettre ?

Posté : 15 mars 2014, 19:17
par damien_55
Slt,

J'ai pas bien compris. Ton "Marche" se remet.
$req2 = $bdd->prepare( "INSERT INTO vote1 (idduel, ip) VALUES ('$idduel' ,'$ip')" );
La date inserée au moment de cette action est bien définit?

Tu utilises des systemes de caches ?

Re: Quel type de date mettre ?

Posté : 15 mars 2014, 21:37
par ISoon
Slt,

J'ai pas bien compris. Ton "Marche" se remet.
$req2 = $bdd->prepare( "INSERT INTO vote1 (idduel, ip) VALUES ('$idduel' ,'$ip')" );
La date inserée au moment de cette action est bien définit?

Tu utilises des systemes de caches ?
Ba j'aimerais que le "Marche" s'affiche toutes les 24 heures par ip mais il s'affiche tous le temps.

Oui, dans la base de donnée sa la mets automatiquement :)

Euh non...