Surligne ligne avec condition

Eléphanteau du PHP | 22 Messages

24 nov. 2010, 12:47

$date = "6.1.2009 13:00+01:00";
Tu l'as définit manuellement, alors que je voudrait que ça prenne la date du jour

edit: Je viens d'avoir un flash, je pense avoir compris!

Eléphanteau du PHP | 22 Messages

24 nov. 2010, 13:06

En fait je n'ai pas compris, ca n'inscrit toujours pas dans ma BDD
date_default_timezone_set('Europe/Paris'); 
$date = date("d-m-Y");
$date3=date_parse_from_format("J.n.Y",$date);
ensuite plus bas dans mon code:
if(mysql_query('update membre set att="'.$att.'", def="'.$def.'", fightvalue="'.$fightvalue.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'", maj="'.$date3.'" where clodo="'.$_SESSION['clodo'].'"'))
Pourquoi rien ne veut s'enregistrer????? #-o

ViPHP
ViPHP | 5462 Messages

24 nov. 2010, 14:42

ca donne quoi si tu fais ?
echo 'update membre set att="'.$att.'", def="'.$def.'", fightvalue="'.$fightvalue.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'", maj="'.$date3.'" where clodo="'.$_SESSION['clodo'].'"';

Eléphanteau du PHP | 22 Messages

24 nov. 2010, 15:06

J essaie ce soir je te tiens au courant

Merci

Eléphanteau du PHP | 22 Messages

24 nov. 2010, 21:52

Ca me met ca:

update membre set att="495", def="515", habilite="100", attaque="110", defense="95", maj="Array" where clodo="guillaume"

Eléphanteau du PHP | 22 Messages

27 nov. 2010, 19:21

Je viens de modifier mon code pour enregistrer une date dans ma BDD avec la fonction NOW()
<?php

date_default_timezone_set('Europe/Paris'); 
$date = date("d-m-Y");



//On se connecte a la Base de donnee
include('mysqlcnn.php');
//On verifie si lutilisateur est connecte
if(isset($_SESSION['clodo']))
{
	//On verifie si le formulaire a ete envoye
	if(isset($_POST['att'], $_POST['def'], $_POST['habilite'], $_POST['attaque'], $_POST['defense']))
	{
		//On verifie si le mot de passe et celui de la verification sont identiques
		//if($_POST['pass']==$_POST['passverif'])
		{
			//On verifie si le mot de passe a 6 caracteres ou plus
			//if(strlen($_POST['pass'])>=6)
			{
				//On enleve lechappement si get_magic_quotes_gpc est active
				if(get_magic_quotes_gpc())
				{

					$_POST['att'] = stripslashes($_POST['att']);
					$_POST['def'] = stripslashes($_POST['def']);
					$_POST['habilite'] = stripslashes($_POST['habilite']);
					$_POST['attaque'] = stripslashes($_POST['attaque']);
					$_POST['defense'] = stripslashes($_POST['defense']);
				}
				//On verifie si lemail est valide
				//if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
				{
					//On echape les variables pour pouvoir les mettre dans une requette SQL

					$att = mysql_real_escape_string($_POST['att']);
					$def = mysql_real_escape_string($_POST['def']);
					$fightvalue=($att*1.1)+$def;
					$habilite = mysql_real_escape_string($_POST['habilite']);
					$attaque = mysql_real_escape_string($_POST['attaque']);
					$defense = mysql_real_escape_string($_POST['defense']);
					
					//On verifie si le clodo a ete modifie pour un autre et que si celui existe deja
					//if($dn['nb']==0 or $_POST['clodo']==$_SESSION['clodo'])
					{
						//On modifie les informations de lutilisateur avec les nouvelles
						if(mysql_query('update membre set att="'.$att.'", def="'.$def.'", fightvalue="'.$fightvalue.'", habilite="'.$habilite.'", attaque="'.$attaque.'", defense="'.$defense.'", maj=NOW() where clodo="'.$_SESSION['clodo'].'"'))
						{
							//Si ca a fonctionne, on ré-affiche le formulaire pour mettre à jour le tableau
							$form = true;

						}
						else
						{
							//Sinon on dit quil y a eu une erreur
							$form = true;
							$message = 'Une erreur est survenue lors des modifications.';
						}
					}
					{
						//Sinon, on dit que le clodo voulu est deja pris
						// $form = true;
						//$message = 'Un autre utilisateur utilise d&eacute;j&agrave; le nom d\'utilisateur que vous d&eacute;sirez utiliser.';
					}
				}
			}
			
			//Sinon, on dit que les mots de passes ne sont pas identiques
			//$form = true;
			//$message = 'Les mot de passe que vous avez entr&eacute; ne sont pas identiques.';
		}
	}
	else
	{
		$form = true;
	}
	if($form)
	{


		//On affiche un message sil y a lieu
		if(isset($message))
		{
			echo '<strong>'.$message.'</strong>';
		}
		//Si le formulaire a deja ete envoye on recupere les donnes que lutilisateur avait deja insere
		if(isset($_POST['att'],$_POST['def'],$_POST['habilite'],$_POST['attaque'],$_POST['defense']))
		{
			$att = htmlentities($_POST['att']);
            $def = htmlentities($_POST['def']);
			$habilite = htmlentities($_POST['habilite']);
			$attaque = htmlentities($_POST['attaque']);
			$defense = htmlentities($_POST['defense']);

		}
		else
		{
			//Sinon, on affiche les donnes a partir de la base de donnee
			$dnn = mysql_fetch_array(mysql_query('select att,def,habilite,attaque,defense from membre where clodo="'.$_SESSION['clodo'].'"'));
			$att = htmlentities($dnn['att']);
			$def = htmlentities($dnn['def']);
			$habilite = htmlentities($dnn['habilite']);
			$attaque = htmlentities($dnn['attaque']);
			$defense = htmlentities($dnn['defense']);
		}
		
La date s'enregistre tres bien dans ma BDD
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.
<?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!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2010, 09:27

hum, now() st une fonction mysql, l'équivalent php est la fonction date

petite question quel est le format choisis pour stocker la date dans le sgbd (date, datetime ...)?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

28 nov. 2010, 09:49

Dans la BDD c est en datetime

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2010, 10:30

ok,

d'après la doc date_diff compare deux "datetime" dans le cas procédurale que tu utilise la doc prévoie
<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%d days');
?>
je modifierais donc ton code ainsi (test à partir de ton code j'ai pas reprise la fonction entière, mais cela fonctionne)
<?php
date_default_timezone_set('Europe/Paris');
 // Construire la requete
$query = "SELECT Clodo,ATT,DEF,Fightvalue,habilite,Attaque,defense, date_format(MAJ,'%Y-%m-%d') lastmaj 
FROM stats WHERE Type='Equipier' ORDER BY Id DESC ";

// Executer la requete
$result = mysql_query($query);
if ($result==false) {
// on p'tit message d'erreur sympa indiquant que ça a merdé pourrait être appréciable (plutôt qu'une page blanche) :) 
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){
		echo '<p style="background:#ff0000;">y plus de 7 jours (',$interval->format('%R%d Jour(s)'),')</p>';
	}
	else {
		echo '<span style="background:#00ff00;">',$interval->format('%R%d Jour(s)'),'</p>';
	}
}
mysql_free_result($result);
mysql_close();
?>
?>
@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

28 nov. 2010, 15:54

Ca marche!!!!!!!!!!!!!!!!!!!!!

Merci

J'ai du modifier un peu le code, mais la base etait bonne =D> =D> =D>

Eléphanteau du PHP | 22 Messages

28 nov. 2010, 16:24

Ca fonctionne en local, j'ai voulu mettre la page en ligne mais plus de tableau!!! #-o #-o #-o #-o

Je n'ai pas d'erreur non plus, je comprend pas pourquoi

Voici mon code pour le tableau:
<?php

// Fonction pour construire une table à partir des résultat de la requête
function buildClodoTable($where='') {

  date_default_timezone_set('Europe/Paris');
 // Construire la requete
$query = "SELECT clodo,att,def,fightvalue,habilite,attaque,defense,maj, date_format(maj,'%Y-%m-%d') lastmaj
FROM membre   ORDER BY Id DESC ";

// Executer la requete
$result = mysql_query($query);
if ($result==false) {
// on p'tit message d'erreur sympa indiquant que ça a merdé pourrait être appréciable (plutôt qu'une page blanche) <img src="./images/smilies/icon_smile.gif" alt=":)" title="Smile" />
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 = '';
 
 
    $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;
}	
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2010, 19:02

tu a une } entre après le echo $table;

si non ton code fonctionne je viens de le tester
<?php
function buildClodoTable($where='') {

  date_default_timezone_set('Europe/Paris');
 // Construire la requete
//$query = "SELECT clodo,att,def,fightvalue,habilite,attaque,defense,maj, date_format(maj,'%Y-%m-%d') lastmaj FROM membre   ORDER BY Id DESC ";
$query = "SELECT Clodo,ATT,DEF,Fightvalue,habilite,Attaque,defense,MAJ, date_format(MAJ,'%Y-%m-%d') lastmaj 
FROM stats WHERE Type='Equipier' ORDER BY Id DESC ";

// Executer la requete
$result = mysql_query($query);
if ($result==false) {
// on p'tit message d'erreur sympa indiquant que ça a merdé pourrait être appréciable (plutôt qu'une page blanche) <img src="./images/smilies/icon_smile.gif" alt=":)" title="Smile" />
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 = '';
 
 
    $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;
?>
J'ai remis les nom de champ que j'ai utilisé suite à tes premier message, je ne vois pas pourquoi tu les a chnager en cours de route, mais ça peut etre une source de tes soucis ;)

ajoute un error_reporting(E_ALL | E_STRICT); au début du script pour avoir les messages d'erreur.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 22 Messages

28 nov. 2010, 19:46

tu a une } entre après le echo $table;
C'est pour fermer ma session

J'ai changé les noms des champs pour les remettre avec celle de ma BDD en ligne

En mettant les echos c'est a partir du WHILE que ca ne ce fait plus
while ($row = mysql_fetch_array($result)) {
        $lastmaj = new DateTime($row['lastmaj']);
        $interval = $lastmaj->diff($now);
        if( $interval->format('%d') >= 7)$style = 'background-color:red';

Eléphanteau du PHP | 22 Messages

28 nov. 2010, 20:01

Mon probleme est résolu en changent un peu mon code
 if( $row['lastmaj'] <= 7)
Merci de votre aide =D>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2010, 20:23

O_o

y a comme un soucis la tu compare une chaine de caractère à un nombre ...

la version de php sur le serveur en ligne est elle >= 5.3.0 ? (si en dessous ça ne fontionne pas et tu n'affiche pas les erreurs).

@+
Il en faut peu pour être heureux ......