Surligne ligne avec condition

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 : Surligne ligne avec condition

Re: Surligne ligne avec condition

par guilstunt » 28 nov. 2010, 20:29

Oui elle est en 5.3.0

Re: Surligne ligne avec condition

par moogli » 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).

@+

Re: Surligne ligne avec condition

par guilstunt » 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>

Re: Surligne ligne avec condition

par guilstunt » 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';

Re: Surligne ligne avec condition

par moogli » 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.

@+

Re: Surligne ligne avec condition

par guilstunt » 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;
}	
?>

Re: Surligne ligne avec condition

par guilstunt » 28 nov. 2010, 15:54

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

Merci

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

Re: Surligne ligne avec condition

par moogli » 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();
?>
?>
@+

Re: Surligne ligne avec condition

par guilstunt » 28 nov. 2010, 09:49

Dans la BDD c est en datetime

Re: Surligne ligne avec condition

par moogli » 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 ...)?

@+

Re: Surligne ligne avec condition

par guilstunt » 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!

Re: Surligne ligne avec condition

par guilstunt » 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"

Re: Surligne ligne avec condition

par guilstunt » 24 nov. 2010, 15:06

J essaie ce soir je te tiens au courant

Merci

Re: Surligne ligne avec condition

par stealth35 » 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'].'"';

Re: Surligne ligne avec condition

par guilstunt » 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