Anniversaires et dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Anniversaires et dates

par Ryle » 16 févr. 2006, 11:09

Question bête déjà, est-ce qu'il y a bien un anniversaire à fêter aujourd'hui dans ta base ? (16/02/2006) :)

C'est vrai qu'un champ date est plus propre pour une date, mais il n'y a aucune raison que cela ne marche pas avec un varchar, il pourrait très bien chercher autre chose que des dates et la requête sql avec un like serait donc bonne.

En revanche, j'ai un doute sur les quotes autour du champ age. La syntaxe devrait être "SELECT * FROM nuked_users WHERE age LIKE '$date%'" (maintenant ça marche peut être aussi, j'ai jamais essayé)

par Cyrano » 16 févr. 2006, 11:03

Suggestion : au lieu d'un type VARCHAR, utilise un vrai type DATE AAAA-MM-JJ et modifie la requête comme suit:

Code : Tout sélectionner

SELECT * FROM nuked_users WHERE DAY('age') = DAY(NOW() AND MONTH('age') = MONTH(NOW()))
Ça veut dire modifier toutes les entrées de cette colonne, mais ce sera notablement plus cohérent.

Re: Anniversaires et dates

par mario » 16 févr. 2006, 11:03

La colonne 'age' qui contient donc mes date de naissances est au format Varchar(10) 16/02/1981
idéalement, la date doit etre stockée dans un champ de type DATE


$sql="SELECT * FROM nuked_users where 'age' LIKE '$date%'";

la requête n'est pas bonne:

Code : Tout sélectionner

SELECT * FROM nuked_users WHERE age = curdate();
à tester...

Anniversaires et dates

par Dom! » 16 févr. 2006, 09:59

Bonjour à tous :

J'ai fais un petit script pour afficher les anniversaires des membres de mon site. VOici :
<?
echo " <table cellpadding=\"2\" cellspacing=\"2\">
<tr><td valign=\"top\" align=\"left\">&nbsp;&nbsp;<b>Anniversaire du jour</b></td></tr></table>

<table cellpadding=\"6\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><br />";

$date = date("d/m");

$sql="SELECT * FROM nuked_users  where 'age' LIKE '$date%'";
$req= mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$anniv=mysql_num_rows($req);
$data['anniv']=$anniv;

if ($anniv!=0){ 

echo " <center><b>Oy&eacute; Oy&eacute; aujourd'hui nous f&eacute;tons l'anniversaire de :</b></center><br />";

$sql1="SELECT * FROM nuked_users  WHERE 'age' LIKE '$date%'";
$req1= mysql_query($sqll) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
while($data1 = mysql_fetch_array($req1))
{
$nom=$data1['pseudo'];
$naissance=$data1['date'];

$array_date = explode('/', $naissance); 

$jour = $array_date[0]; 
$mois = $array_date[1];
$annee = $array_date[2];

$newdateannee = date("Y");

$calculannee = $newdateannee - $annee; 

echo " <b>$nom</b> ($calculannee ans) ";}

}else{ 

echo " &nbsp; <center><b>Aucun anniversaire &agrave; f&eacute;ter</b></center>";}
echo " <br /><br /></td></tr></table>";
?>
La colonne 'age' qui contient donc mes date de naissances est au format Varchar(10) 16/02/1981

Quand j'affiche ma page il m'affiche :

Anniversaire du jour


Aucun anniversaire à féter


Merci pour votre aideeeeeee