Ses derniers messages sur les forums
Bonjour @ tous,
Voilà j'ai un petit problème avec un formulaire de recherche. En effet je stocke dans ma base de données la date de naissance du membre. Ensuite je calcul l'age via ce code :
$tab_naiss = explode("-",$data["date_naissance"]);
$tab_jour = explode("-",date("Y-m-d"));
// calcul de mon age d'après la date de naissance
$annais = $tab_naiss[0];
$anjour = $tab_jour[0];
$moisnais = $tab_naiss[1];
$moisjour = $tab_jour[1];
$journais = $tab_naiss[2];
$jourjour = $tab_jour[2];
$age = $anjour-$annais;
if ($moisjour<$moisnais){$age=$age-1;}
if ($jourjour<$journais && $moisjour==$moisnais){$age=$age-1;}
Cependant maintenant je souhiaterais en fait récupérer tous les membres dont l'age par exemple est entre x et y. Je ne sais pas du tout comment m'y prendre, avec date_add() ?
Merci d'avance pour vos propositions
Mdr j'ai tester en fait cette requete avant que tu me la dise mais ce n'est pas possible encore avec les versions mysql actuelle il faut la 4.1 je crois non ? C'est une requete imbriquée et pour le moment pas possible...
J'ai reussi à le faire mais en plusieurs requetes, j'aurais préféré récupéré directement les membres qui n'étaient pas dans la table credits, mais je n'y suis pas arrivé :
// Recuperation de la liste des membres
$sql_two = "SELECT id FROM ".$GLOBALS["table_membres"]." WHERE actif=1";
$query_two = mysql_query($sql_two) or die("Erreur sur $sql_two :<br>".mysql_error());
while($data_two = mysql_fetch_array($query_two)){
$sql = "SELECT COUNT(*) AS nbre FROM ".$GLOBALS["table_credits"]." WHERE id_membre='".$data_two["id"]."' AND date = DATE_FORMAT(NOW(),'%Y-%m-%d')";
$query = mysql_query($sql) or die("Erreur sur $sql :<br>".mysql_error());
$data = mysql_fetch_array($query);
$nbre = $data["nbre"];
if($nbre==0){
// Mise à jour du champ credit
mysql_query("UPDATE ".$GLOBALS["table_membres"]." SET credit=credit-1 WHERE id='".$data_two["id"]."'") or die(mysql_error());
// Ajout dans la table
$new_date = date("Y-m-d");
mysql_query("INSERT INTO ".$GLOBALS["table_credits"]." VALUES('','".$data_two["id"]."','".$new_date."');") or die(mysql_error());
}
}
La table crédits contient l'id du membre et la date de l'insertion qui permet de verifier si le meme a deja updater son compte ce jour ou pas...
En gros je souahite recuperer tous les id des membres de la table membres qui ne sont pas contenues dans la table crédits (champ id_membre) et dont la date correspond à celle du jour ?
En fgait c'est pas trop ca mon raisonnement. Ce que je veux faire c'est que chaqque jour, chaque membre perd un credit. J'ai donc une table crédits avec l'id du membre et la date. Et maintenant je souhaiterais recuperer tous les membres qui ne font pas partie de la table credits et dont la date est celle du jour (tous les autres membres en fait)...
La je bloque...
Non car il peut recharger.
En fait dans la table credits est enregistré tous les jours l'id du membre et la date, cela veut dire que son compte à bien été mis à jour.
Cependant j'aurais souhaiter recuperer directement tous les membres qui ne s'ont pas dans cette table et dont la date est egal à la date du jour. Mais là ma requete plante....
Quelqu'un pourrait m'aider ?
Bonjour @ tous,
Voilà j'ai deux tables, une table membres qui contient tous les membres du site avec leurs id et une table credits qui contient trois champs (id, id_membre, date (format Y-m-d).
Le principe : Je veux en fait que chaque jour, on enleve 1 au le champ credit du compte des membres. en effet chaque jour coute un credit...
Le problème c'est que je n'arrive pas à trouver l'id des membres qui ne sont pas stockés dans la table credits. En effet si la mise à jour est effectuée pour un membre il ne faut pas que cela se refasse dans la journée.
Voici ùmon code :
$sql = "SELECT
".$GLOBALS["table_membres"].".id
FROM ".$GLOBALS["table_membres"].",".$GLOBALS["table_credits"]."
WHERE ".$GLOBALS["table_membres"].".id!=".$GLOBALS["table_credits"].".id_membre
AND ".$GLOBALS["table_credits"].".date = DATE_FORMAT(NOW(),'%Y-%m-%d')";
$query = mysql_query($sql) or die("Erreur sur $sql :<br>".mysql_error());
while($data = mysql_fetch_array($query)){
// Mise à jour du champ credit
mysql_query("UPDATE ".$GLOBALS["table_membres"]." SET credit=credit-1 WHERE id='".$data["id"]."'") or die(mysql_error());
// Ajout dans la table
$new_date = date("Y-m-d");
mysql_query("INSERT INTO ".$GLOBALS["table_credits"]." VALUES('','".$data["id"]."','".$new_date."'") or die(mysql_error());
}
Le problème c'est que aucun champs n'est mise à jour et aucune entrée n'est faite dans la table credits.
Je sais qu'il y a un truc qui cloche dans la requete mais ej sais asp trop quoi...
Merci d'avance pour votre aide..
Oui ou mets ton champ en UNSIGNED ca te vire tous les negatifs possibles et donc augmente tes valeurs...
Oui il est meme très bien ce package ca rl'on peut telecharger des add-on pour switcher entre php 4.3.8 par exemple et php 5. Très sympa et aussi facile que easyphp....