Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2010, 18h39   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 2
Points : 2
Par défaut Surligne ligne avec condition

Bonjour a tous!!!

Je bloque sur un petit probleme:

J'ai un tableau dans lequel on rentre des stats régulierement et j'aimerai que la personne qui n'est pas rentré ses stats au bout d'une semaine soit surligné en rouge.

J'ai une colonne MAJ, dans lequel s'affiche automatiquement la date du jour des qu'il valide ses nouvelles stats.

J'arrive a enregistrer la date dans ma BDD avec la fonction NOW()
Le probleme c'est que maintenant j'ai voulu réutiliser la fonction NOW() dans une requete mais ca ne fonctionne pas, ca me met que NOW() n'est pas définie.

Code :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
 
// Fonction pour construire une table à partir des résultat de la requête
function buildClodoTable($where='') {
 
    // Ajouter la clause where si définie (par défaut, tout le temps)
 
 
    // Construire la requete
    $query = "SELECT Clodo,ATT,DEF,Fightvalue,habilite,Attaque,defense,MAJ FROM stats WHERE Type='Equipier' ORDER BY Id DESC ";
 
    // Executer la requete
    $result = mysql_query($query);
 if ($result==false) {
 
    }
    $lines = '';
    while ($row = mysql_fetch_array($result)) {
 
 
     $date2 = new DateTime($row['MAJ']);
 
if(date_diff($date2,Now()) >= 7) $style = 'background-color:red';
else $style = '';
 
 
    $lines .= '
    <tr style="'.$style.'">
        <td>'.$row['Clodo'].'</td>
        <td>'.$row['ATT'].'</td>
        <td>'.$row['DEF'].'</td>
      <td>'.$row['Fightvalue'].'</td>
        <td>'.$row['habilite'].'</td>
        <td>'.$row['Attaque'].'</td>
        <td>'.$row['defense'].'</td>
    <td>'.$row['MAJ'].'</td>
 
    </tr>';
    }
    return '
<table border="1" cellpadding=5 cellspacing=5 height=50>
    <tr>
        <th class="name"> Nom clodo </th>
        <th> ATT </th>
        <th> DEF </th>
      <th> Fightvalue </th>
        <th> habilité </th>
        <th> attaque </th>
        <th> défense </th>
      <th> MAJ </th>
 
    </tr>'.$lines.'
</table>';
}
 
 //Construire le tableau à partir du résultat de la requête
    $table = buildClodoTable("");
 
    echo $table; 
?>
Merci de votre aide
magoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 20h33   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Code :
if(date_diff($date2,Now()) >= 7) $style = 'background-color:red';
La fonction PHP now( ) n'existe pas.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 20h40   #3
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Tu ne l'utilises pas dans une requête SQL mais directement comme une fonction PHP, qui n'existe évidement pas...

Le mieux dans ce cas est d'ajouter un champ supplémentaire à ton select :

Code :
SELECT ......, TO_DAYS(NOW()) - TO_DAYS(MAJ) as lastMaj FROM ....
ce nouveau champs contiendra le nombre de jours depuis la dernière mise à jour.
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 21h54   #4
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 2
Points : 2
ok merci j'avais deja pensé a cette solution mais je pensais que ca aurait ete plus simple!

Je vais essayer demain

Si a tout hasard quelqu'un aurait la patience de m'apprendre les fonctions avec les dates je suis preneur car j'ai du mal.

Merci
magoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2010, 22h16   #5
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Fonctions de gestion des dates :
Sous MySQL : http://dev.mysql.com/doc/refman/5.1/...functions.html
Sous PHP : http://www.php.net/manual/fr/ref.datetime.php
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/11/2010, 17h39   #6
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 2
Points : 2
J'ai trouvé mon code

Voici mon code si ca peut aider quelqu'un

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
 // Construire la requete
$query = "SELECT clodo,att,def,fightvalue,habilite,attaque,defense,maj, date_format(maj,'%Y-%m-%d') lastmaj
FROM membre  ORDER BY fightvalue DESC";
 
// Executer la requete
$result = mysql_query($query) or die('Erreur SQL !<br>'.$result.mysql_error());
if ($result==false) {
 
echo mysql_error();
}
$lines = '';
        $now = new DateTime(date('Y-m-d'));
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
        $interval = $lastmaj->diff($now);
        if( $interval->format('%d') >= 7)$style = 'background-color:red';
else $style = '';
 
 
?>
magoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 18h15   #7
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Avec le SQL que je te proposais tu n'avais qu'à faire :

Code :
1
2
3
4
 
if( $row['lastmaj'] > 7) {
   ...
}
Plus clean non ?
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2010, 19h18   #8
Invité de passage
 
Inscription : novembre 2010
Messages : 7
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 7
Points : 2
Points : 2
Je viens de faire comme toi c'est clair c'est + clean!!!!
magoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h25.


 
 
 
 
Partenaires

Hébergement Web