Besoin d'un petit code source mysql php [Résolu/Fermé]

Signaler
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
-
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
-
Bonjour !
Toute mes excuses je sais que ce n'est pas ici qu'il faut demander des codes sources mais ce que je cherche j'imagine que quelqu'un peut m'aider rapidement ici; Il s'agit de vérifier la validité d'un utilisateur dans la base des données mysql à partir de php, c'est à dire si le client à par exemple payé pour un mois dès que nous sommes à l'anniversaire de son mois de paiement que son statut passe en rouge.

Voici ce que j'ai pu créer comme table client dans la base des données.
[QUOTE]CREATE TABLE IF NOT EXISTS 'site' (
'id' int(11) NOT NULL AUTO_INCREMENT,
'dateactivation' date NOT NULL,
'datefinacitivation' date NOT NULL,
'adressesite' varchar(100) NOT NULL,
'etat' varchar(45) NOT NULL,
'emailsite' varchar(100) NOT NULL,
'ville' varchar(45) NOT NULL,
'telephone' int(15) NOT NULL,
'observation' text NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'idsiteinterne' ('idsiteinterne','idsiteprovider')
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='dateactivation' AUTO_INCREMENT=4 ;
/QUOTE

Mon souci est que quand le client arrive dans 'datefinacitivation' que son etat passe en rouge dans mon interface.

Merci !




8 réponses

Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Bonjour,

Ca se fera en php (en faisant attention au format des dates !). Je vous mets la structure, à vous de mettre vos champs.

for(tous les utilisateurs affichés){ 
  $style =""; 
  if(datefinactivation > date du jour){ 
    $style = 'color:red'; 
  }else{ 
    $style = 'color:black'; 
  } 
  echo "<p style=' ".$style." >". $nom_utilisateur ."</p>"; 
}
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Oups !
Heureusement que tu es là ;)
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Assasin Touriste, :-)
Merci pour ton aide
voici ce que j'ai pu faire mais ce n'est pas trop concret je te montre peut être tu auras une idée...
Je n'ai pas bien saisie date du jour, à quoi ressemblera la date du jour dans mon code ?

toute mes dates sont stockée dans la base des données c'est là que je l'ai récupère.
voilà ce que j'ai essayé de faire
<?php

// information pour la connection à le DB// connection à la DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'mabase'; 

$sql = 'SELECT etat FROM 'client' WHERE id="2"';
$req2 = 'SELECT 'dateactivation'SELECT * FROM 'client'';
$req3 = 'SELECT 'dateactivation'SELECT * FROM 'client'';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data=mysql_fetch_assoc($req);

for($sql){
$style ="";
if($req2 > date du jour){
$style = 'color:red';
}else{
$style = 'color:black';
}
echo <tr><td style='.$style.'> ''.$data['idetatsite'].'';</td></tr>;
}
?>
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Comment stockes-tu tes date ? Quel format ?
Les timestamp sont les plus faciles à manipuler.
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Je pense que c'est plus :
while($data=mysql_fetch_assoc($req))

plutôt que :
for($sql)


Sous réserve que Mihawk me corrige =)
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Entièrement raison mon cher
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Hello glodybiss, ça fait un bail ;-)

Rien à ajouter à AssassinTourist : rien à faire au niveau de ta DB ; c'est en PHP que tu vérifieras que cette dernière est antérieure ou non à la date actuelle.

Par contre je diffère avec AssassinTourist sur la méthode de mise en place du rouge. Je déconseille vivement l'utilisation de l'attribut "style" qui a un poids CSS très fort. Mieux vaut faire varier la classe du div et prévoir donc deux classes CSS.

for(tous les utilisateurs affichés){ 
   $class ="user"; 
   if(datefinactivation > date du jour){ 
      $class .= " active_user"; 
   } else { 
      $class .= " inactive_user"; 
   } 
    echo '<p class=\"'.$class.'">'. $nom_utilisateur .'</p>'; 
} 

<style> 
   .user { 
      /* Tous les attributs communs à tous les utilisateurs */ 
   .inactive_user { 
      color:red; 
   } 
   .active_user { 
      color:green; 
   } 
</style>

Mihawk
"Tant qu'on ne fait pas, on ne sait pas."
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Pas besoin de simplicité avec glodybiss, il est sur ce forum depuis un bout de temps ^^
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Merci Mihawk moi je dirai même que ça fait une éternité , c'est gentil et j'suis très content de te revoir (Je voulais dire de revoir tes solutions, lol !)

Assassin ! Jolie comme surnom, uhm! je te remercie aussi, je prends vos sources et je travail dessus je vous donne la suite peut être avant la fin de la journée. Thanks so munch
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Je suggère qu'on ajoute le bouton j'aime sur Commentçamarche, je voulais aimer ce que vous avez écrit mais dommage.
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Moi aussi, j'aimerai bien m'aimer... =)
Sinon, il y a le bouton +1 lorsqu'un commentaire t'a aidé (mais bon, c'est vrai que ce n'est pas pareil)

Je suis Assassin parce que je tue des gens, pas parce que je suis méchant =) Mais merci !
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Moi aussi j'aime mémé !
CCM est un forum d'entre-aide, pas un réseau social ;-)
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Bonjour ! Je reviens à vous
mon code n'a pas fonctionner mais je crois que j'y suis presque
regarder à quoi ressemble ce que j'ai fait, mais je crois que s'il ne fonction pas c'est peut être parce qu'il compare les dates comme des chaines des caractères il n'y a t-il pas un fonction qui peut faire ça ?

<?php
$host = 'localhost';
$user = 'root';
$pass ='';
$db = 'mabase'; 

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//if ($link=0){
//echo "die";
//} else {echo "OK";}

$sql = 'SELECT idetatsite, dateactiv FROM cyb_site';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data=mysql_fetch_assoc($req))
{ 
   $class ="user"; 
   if($data['dateactiv'] > date("Y-m-d")){ 
      $class .= "active_user"; 
   } else { 
      $class .= "inactive_user"; 
   } 
    echo '<p class=\"'.$class.'">'.$data['idetatsite'].'';'</p>'; 
} 
?>


Aucune erreur et aucun résultat de ce que j'attends, les dates je la date d'active je la récupère dans la base des données.
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Tu as rajouté les classes active_user et inactive_user dans ton css ?
Sinon, qu'est-ce qu'il y a dans cette variable $data['dateactiv'] ? Quel format de la date ? C'est 21/02/2012 ou 2012-02-21 ?
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Mihawk je stocke sous format "Date"
Assassin je j'ai bien ajouter les classses dans mon style
voici le code complet

<html>
<head>
<style type="text/css">
<!--
   .user
   {color:#333;}
      /* Tous les attributs communs à tous les utilisateurs */ 
   .inactive_user { 
      color:#996600;} 
.active_user {color:#6666;} 
-->
</style>
</head>

<body>

<?php
$host = 'localhost';
$user = 'root';
$pass ='';
$db = 'mabase'; 

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//if ($link=0){
//echo "mawa";
//} else {echo "OK";}

$sql = 'SELECT idetatsite, dateactiv FROM cyb_site';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data=mysql_fetch_assoc($req))
{ 
   $class ="user"; 
   if($data['dateactiv'] > date("Y-m-d")){ 
      $class .= "active_user"; 
   } else { 
      $class .= "inactive_user"; 
   } 
    echo '<p class=\"'.$class.'">'.$data['idetatsite'].'';'</p>'; 
} 
?>
</body></html>
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Qu'affiche : echo $data['dateactiv']; ?
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
dateactiv n'affiche rien c'est la variable qui récupère la date d'activation dans la base des données
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
$data['dateactive'], et non 'dateactive'
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Oki, d'après ce lien https://www.commentcamarche.net/contents/1056-sql-creation-de-table ta date, c'est du genre 21/02/2012.

Il faut la convertir en 2012-02-21 avant de la comparer à ta Date("Y-m-d")
J'ai souvenir de faire ça salement avec la fonction split() de php, mais peut-être existe-t-il une autre solution :$
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Date est du genre d/m/Y et non Y/m/d, du coup, il faut aussi inverser d et Y
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
J'ai bien suivi Mihawk, voici le format de ma variable $data['dateactiv'] : 2012-02-04 sinon j'ai bien aimé l'idée de me fournir le code source complet mais toute fois je me bat si ça ne va pas toujours je vais courir derrière vous.

Assassin, merci mais je choisi la méthode proposition de Mihawk celle de m'aider avec le code complet. :-)
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Pas de soucis =)
De toute manière, ta variable $data['dateactiv'] est correcte alors il n'y a pas besoin de remplacer quoique ce soit... :$
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Pfff mais pourquoi personne utilise les timestamp, c'est tellement mieux
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
J'ai aussi utiliser un timestamp mais pour un autre champ de ma table qui commencera à prendre la date et l'heure automatiquement à chaque update dans la table, alors le format date 0000-00-00 je l'ai utilisé parce que j'avais uniquement besoin de la date.
Messages postés
4310
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
761
Essaye ça.
J'ai juste une réserve sur le preg_replace ; si ça ne marche pas on tentera autre chose.

<?php 
$host = 'localhost'; 
$user = 'root'; 
$pass =''; 
$db = 'mabase';  

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error()); 
mysql_select_db($db) or die ('Erreur :'.mysql_error()); 
//if ($link=0){ 
//echo "die"; 
//} else {echo "OK";} 

$sql = 'SELECT idetatsite, dateactiv FROM cyb_site'; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data=mysql_fetch_assoc($req)) 
{  
   $class ="user";  
   $dateUser = intval(preg_replace("#^(\d{4})-(\d{2})-(\d{2})$#", "$1$2$3", $data['dateactiv'])); 
   $currentDate = intval(date("Ymd")); 
   if($dateUser > $currentDate){  
      $class .= "active_user";  
   } else {  
      $class .= "inactive_user";  
   }  
    echo '<p class=\"'.$class.'">'.$data['idetatsite'].'';'</p>';  
}  
?> 

Mihawk
"Tant qu'on ne fait pas, on ne sait pas."
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
Moi, j'ai soudain une question bête :$
As-tu dans tes résultats de ta base quelqu'un qui nous mettrait dans le rouge à un moment ?
Sinon quand tu disais que ton code ne marchait toujours pas, tu affichais quand même le nom de l'utilisateur (c'est juste qu'il n'était pas de la bonne couleur) ?
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Bonjour vous deux,

ça fait un temps que je vous taquine mais supporter cela s'il vous plait,:-)

Mihawk, j'ai essayé d'étudier le code et maintenant j'ai un résultat sauf que celui-ci ne prend pas en charge la condition pour dire qu'il ne vérifie pas les dates dates, il ne prend que la couleur du style inactive_user même quand la date du jour est supérieur à celle qui se trouve dans la base des données. Est-ce que la condition est bien faite ? essayé de revoir encore s'il vous plait.

<html>
<head>
<style type="text/css">
<!--
   .user {color:#ff0000;background:#333;}
      /* Tous les attributs communs à tous les utilisateurs */ 
   .inactive_user { color:#fff;background:#074695;} 
.active_user {color:#000;background:#999;} 
-->
</style>
</head>

<body>

<?php 
$host = 'localhost'; 
$user = 'root'; 
$pass =''; 
$db = 'mabase';  

$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error()); 
mysql_select_db($db) or die ('Erreur :'.mysql_error()); 
//if ($link=0){ 
//echo "die"; 
//} else {echo "OK";} 

$sql = 'SELECT idetatsite, dateactiv FROM cyb_site'; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data=mysql_fetch_assoc($req)) 
{  
   $class ="user";  
   $dateUser = intval(preg_replace("#^(\d{4})-(\d{2})-(\d{2})$#", "$1$2$3", $data['dateactiv'])); 
   $currentDate = intval(date("YYYY-mm-dd")); 
   if($dateUser > $currentDate){  
      $class .= " active_user";  
   } else {  
      $class .= " inactive_user";  
   }  
    echo '<p class="'.$class.'">'.$data['idetatsite'].'</p>';  
}  
?> 
</body></html>
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Ca y est c'est trouvé!

Je devais utiliser utiliser le STRTOTIME à la place de ceci : $dateUser = intval(preg_replace("#^(\d{4})-(\d{2})-(\d{2})$#", "$1$2$3", $data['dateactiv']));


Voici la correction.

$dateUser = strtotime($mysql_date);
$currentDate = time();
 
if ($dateUser < $currentDate) {
   ...
}



GRAND MERCI à Mihawk et à Assassin qui m'ont beaucoup aider pour et pour les codes sources.
Messages postés
5693
Date d'inscription
lundi 16 janvier 2012
Statut
Contributeur
Dernière intervention
27 octobre 2019
990
De rien !
Content de voir que tu aies pu trouver la solution finale (sans nous) =)
Messages postés
440
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
29 juillet 2015
9
Le grand grand travail c'est vous donc je ne peux que dire que moi je ne rien foutu. ^^