[RESOLU] comparer 2 dernières lignes dans une colonne

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 : [RESOLU] comparer 2 dernières lignes dans une colonne

Re: comparer 2 dernières lignes dans une colonne

par moogli » 18 févr. 2014, 17:59

rolf :)

peux tu cliquer sur le bouton "résolus" à droite du titre stp ;)

merci

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 18 févr. 2014, 15:15

encore merci pour ton aide
ça marche...
en fait c'est tout simplement mon image comme tu l'as précisé qui n'était pas bonne...
et mon code pourri :D

Re: comparer 2 dernières lignes dans une colonne

par Mazarini » 17 févr. 2014, 18:10

while ($res=mysql_fetch_assoc($req)) {
    $row[]=$res['Bar'];
} 
$pressionFin = $row[1];
$pressionDebut = $row[4];

if ($pressionDebut > $pressionFin) { 
    $imageVariation = '<img src="images/baisse.png" height="35" alt="en baisse" title="en baisse">';
} elseif ($pressionDebut === $pressionFin) { 
    $imageVariation = '<img src="images/baisse.png" height="35" alt="stable" title="stable">'; // est ce la bonne image ?
} elseif ($pressionDebut < $pressionFin) { 
    $imageVariation  = '<img src="images/hausse.png" height="35" alt="en hausse" title="en hausse">';
}
Comme tu peux le voir, j'ai juste changé les noms des variables pour que ce soit plus facilement compréhensible. Enfin, c'est un avis personnel, mais si tu reprends le code dans quelques temps, tu te poseras certainement moins de questions.

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 17 févr. 2014, 17:51

Utiliser $image comme variable par exemple. Ce qui me gêne, c'est juste que $row['4'] contient d'abord une pression puis un sens de variation. Ca complique la compréhension et ca peut induire en erreur.
peux tu me donner un exemple concret ?
merci pour ton aide

Re: comparer 2 dernières lignes dans une colonne

par Mazarini » 17 févr. 2014, 17:26

Utiliser $image comme variable par exemple. Ce qui me gêne, c'est juste que $row['4'] contient d'abord une pression puis un sens de variation. Ca complique la compréhension et ca peut induire en erreur.

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 17 févr. 2014, 15:34

ok merci
et c'est quoi la meilleure idée ???

merci pour ton aide

Re: comparer 2 dernières lignes dans une colonne

par Mazarini » 17 févr. 2014, 15:12

$row[4] n'est défini qu'après la 5ème lecture. Il faut donc terminer la lecture avant de l'utiliser dans les tests. Ce que tu fais pour les tests qui ne sont pas en commentaire.
while($res=mysql_fetch_assoc($req)) {
$row[]=$res['Bar'];
} // fin de la boucle
$val=$row['1'];
if ($row['4'] > $row['1']) { $row['4'] = '<img src="images/baisse.png" height="35" alt="en baisse" title="en baisse">';}
elseif ($row['4'] === $row['1']) { $row['4'] = '<img src="images/baisse.png" height="35" alt="stable" title="stable">';}
elseif ($row['4'] < $row['1']) { $row['4']  = '<img src="images/hausse.png" height="35" alt="en hausse" title="en hausse">';}
Autrement, utliser $row[4] pour mettre $res['Bar'] et l'image n'est pas une bonne idée.

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 17 févr. 2014, 14:40

Il faut mettre les tests en dehors de la boucle, sinon tu fais des tests avant d'avoir lu les valeurs.
ce qui veut dire ???

merci pour ton aide

Re: comparer 2 dernières lignes dans une colonne

par Mazarini » 17 févr. 2014, 12:25

Il faut mettre les tests en dehors de la boucle, sinon tu fais des tests avant d'avoir lu les valeurs.

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 16 févr. 2014, 20:32

merci pour ton aide...
de mon coté je suis parti sur une autre piste

Code : Tout sélectionner

$row=array(); $req=mysql_query("SELECT Bar FROM Zibase ORDER BY id DESC LIMIT 5 "); while($res=mysql_fetch_assoc($req)) { $row[]=$res['Bar']; $val=$row['1']; //if ($row['4'] > $row['1']) { $row['4'] = '<img src="images/baisse.png" height="35" alt="en baisse" title="en baisse">';} //elseif ($row['4'] === $row['1']) { $row['4'] = '<img src="images/baisse.png" height="35" alt="stable" title="stable">';} //elseif ($row['4'] < $row['1']) { $row['4'] = '<img src="images/hausse.png" height="35" alt="en hausse" title="en hausse">';} } if ($row['4'] > $val) $row['4'] = ' en baisse'; elseif ($row['4'] == $val) $row['4'] = ' stable'; elseif ($row['4'] < $val) $row['4'] = ' en hausse';
là je compare la 5ieme ligne avant la dernière, soit une heure d’écart
ce que je n'explique pas c'est pourquoi ça ne marche pas avec les 3 lignes commentées... (celles qui ont des images en valeur)
par contre avec ' en baisse' ' stable' et ' en hausse' ça fonctionne...

avez vous une idée ???

merci

Re: comparer 2 dernières lignes dans une colonne

par moogli » 16 févr. 2014, 20:07

Si je pars du principe qu'une fois la ligne inséré elle ne change pas (en tout cas la date heure) tu peux te baser sur ce chamois ( si tu est que les données inséré auront toujours une clef primaire croissante pour des dates / heure croissante tu peux aussi l'utiliser).

Donc le principe c'est de sélectionner les deux dernières lignes et de faire le calcul en php ou en sql.
Je part du principe du principe que tu utilise mysql.
Select pression from latablequivabien order by lechampdatetime DESC limit 0,2;
Avec ça tu auras deux lignes de résultats la première étant la plus récente et la seconde la plus vieille.
A partir de la tu récupère les données en php et tu fait ta soustraction.

Le tout en sql il faut que tu fasse deux sous requêtes.
 
Select
((Select pression from table order by date desc limit 0,1) -
(Selet pression from table order by date desc limit 1,1)) as diff
Si diff est est positif la pression monte sinon elle descend.

Vu que je suppose que tu utilise la chose régulièrement je te conseil d'utiliser une udf (fonction utilisateur) sur le SGBD tu y gagnera en performance (si si un poil quand même) et un simplicité d'utilisation.

@+

Re: comparer 2 dernières lignes dans une colonne

par darkmoon » 16 févr. 2014, 10:27

salut,

comment peux tu déterminer ce qu'est la dernière ligne ?
clef primaire ?
champs de type date / datetime etc ?
un incrément quelconque ?
les dernières avec un ordre précis (order by une colonne asc / desc) ?

ce que tu demande est surement réalisable mais la on ne peux pas t'aider sans avoir plus d'info;

globalement, la solution à ton problème réside dans la réponse à ma question et la requête SQL que tu va y associé.

@+
merci pour ton aide
j'ai en effet un champs 'id' autoincrémenté et un champs 'date'
la table se remplie toutes les 15 minutes donc à heure fixe 12h00 12h15 12h30 etc...
je veux juste savoir au moment de la requète (que je ne sais pas trop construire car je suis une buse...)
si le dernier enregistrement est plus grand , plus petit ou égale à l'avant dernier... (la valeur est une pression atmosphérique)
c'est donc pour déterminer si la pression monte, descend ou reste stable...

encore merci pour votre aide

Re: comparer 2 dernières lignes dans une colonne

par moogli » 16 févr. 2014, 00:49

salut,

comment peux tu déterminer ce qu'est la dernière ligne ?
clef primaire ?
champs de type date / datetime etc ?
un incrément quelconque ?
les dernières avec un ordre précis (order by une colonne asc / desc) ?

ce que tu demande est surement réalisable mais la on ne peux pas t'aider sans avoir plus d'info;

globalement, la solution à ton problème réside dans la réponse à ma question et la requête SQL que tu va y associé.

@+

comparer 2 dernières lignes dans une colonne

par darkmoon » 15 févr. 2014, 13:36

bonjour, j'ai une table 'matable'
dans laquelle j'ai une colonne 'Bar'

j'aimerai comparer les 2 dernières lignes de cette colonne 'bar' qui contient des chiffres du style 1020 1010
je voudrais savoir si la dernière ligne est supérieure, égale ou inférieure à l'avant dernière...

merci pour votre aide