[PHP] afficher un 'nouveau' pour les derniers enregistrements...

afficher un 'nouveau' pour les derniers enregistrements... [PHP] - Programmation

Marsh Posté le 14-06-2002 à 18:14:33    

salut,
 
j'ai un script de paroles de chansons dans une liste, et j'aimerai afficher un "nouveau" à coté des derniers enregistrements (logique) mais je ne sais pas comment m'y prendre ...
 
Merci d'avance  :hello:


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 18:14:33   

Reply

Marsh Posté le 14-06-2002 à 18:15:48    

un nouveau QUOI?

Reply

Marsh Posté le 14-06-2002 à 18:25:06    

afficher le mot "nouveau"
 
par exemple comme ça:
 
. Cardigans (the) (39) Nouveau !
. Coolio (1)
. Corrs (the) (38)
. Craig David (11)
. Cramberries (the) (27) Nouveau !


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 18:27:56    

Qu'est ce que tu entends par "nouveau",
- les n derniers enregistrements, même si ils datent de 6 mois ?
- les enregistrement vieux de maxi 1 semaine ?
- les n derniers enregistrements mais vieux d'une semaine maxi ?
 
Selon la réponse il y a chaque fois une manière de faire.

Reply

Marsh Posté le 14-06-2002 à 18:28:36    

et c'est "nouveau" par rapport à quoi?
t'es pénible là...

Reply

Marsh Posté le 14-06-2002 à 18:35:11    

les n derniers enregistrements, même si ils datent de 6 mois ?  
oui  :sarcastic:  
 
rho, desole je peux pas expliquer plus precis... je veux juste qu'au 5 derniers id, il affiche "nouveau" à cote... s'pa possible ?


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 18:36:52    

ludo2604 a écrit a écrit :

les n derniers enregistrements, même si ils datent de 6 mois ?  
oui  :sarcastic:  
 
rho, desole je peux pas expliquer plus precis... je veux juste qu'au 5 derniers id, il affiche "nouveau" à cote... s'pa possible ?  




t'as une colonne dans ta db ou tu indiques la date d'insertion du cd?

Reply

Marsh Posté le 14-06-2002 à 18:43:43    

non :/ il faut créer une autre table !?
 
n'y a til pas un autre moyen ?


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 18:58:34    

ludo2604 a écrit a écrit :

non :/ il faut créer une autre table !?
 
n'y a til pas un autre moyen ?  




pas une autre table, mais ajouter une colonne pour ça dans ta table avec tes cd...
sinon ben non, comment veux-tu deviner qu'il s'agit d'un nouveau cd si tu ne sais pas quand tu l'as ajouté dans ta base, ou quand il est sorti ou n'importe quelle date qui te servirait de reference pour determiner si c un "nouveau" ou pas quoi.
tu pourrais tjs te connecter a CDDB, ouais:) (<-- y'a une API en plus, mais j'ai comme l'impression que... ça sera pour plus tard en ce qui te concerne ;))

Reply

Marsh Posté le 14-06-2002 à 19:04:38    

ah ok merci de ces explications...
 
alors,
je crée ma table "date" avec 0000-00-00 00:00:00.
 
et ensuite il reste à faire le bout de code c'est ça... le prob c'est que je ne sais pas trop comment le faire...
 
on yé presque  :)


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 19:04:38   

Reply

Marsh Posté le 14-06-2002 à 19:37:42    

ludo2604 a écrit a écrit :

ah ok merci de ces explications...
 
alors,
je crée ma table "date" avec 0000-00-00 00:00:00.
 
et ensuite il reste à faire le bout de code c'est ça... le prob c'est que je ne sais pas trop comment le faire...
 
on yé presque  :)  




non, tu ne crées pas de table, tu ajoutes une colonne à ta table de cd's...  
par exemple

Code :
  1. alter table disques add column date_sortie date


 
ensuite qd tu affiche ta liste de cd tu compare la data de cette colonne avec la date du jour... par exemple


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le 14-06-2002 à 19:56:51    

oui oui champs je sais scuse...
 
oky merci bien je vais voir ça ^^


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 19:58:43    

bonne chance:)


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le 14-06-2002 à 21:15:56    

thx
 
donc voila j'ai bien crée le champ dans ma table de cette maniere:
 
`date` datetime NOT NULL default '0000-00-00 00:00:00',  
 
là, il me reste à faire le code...
 
on m'a donné cet exemple:
 
while ($i=mysql_fetch_array($tarequete)) {  
 
// code  
 
$date=now();  
$duree = $i[duree]+ [G]???[/g] ;  
if ($date<$duree)
 {  
echo "Nouveau";  
 }  
 
// code  
 
le probleme, c'est que je ne sais pas quoi mettre apres le + ??


Message édité par ludo2604 le 14-06-2002 à 21:17:16

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 21:22:18    

ludo2604 a écrit a écrit :

thx
 
donc voila j'ai bien crée le champ dans ma table de cette maniere:
 
`date` datetime NOT NULL default '0000-00-00 00:00:00',  
 
là, il me reste à faire le code...
 
on m'a donné cet exemple:
 
while ($i=mysql_fetch_array($tarequete)) {  
 
// code  
 
$date=now();  
$duree = $i[duree]+ [G]???[/g] ;  
if ($date<$duree)
 {  
echo "Nouveau";  
 }  
 
// code  
 
le probleme, c'est que je ne sais pas quoi mettre apres le + ??  




 
j'vais essayer de rester calme ...
tu comprends ce bout de code au moins ? ca a pas l'air d'etre le cas sinon la reponse a ta question te paraitrait TRES évidente

Reply

Marsh Posté le 14-06-2002 à 21:26:17    

arf desole mais c delicat
bon deja oui je comprend...
 
en fait,
l'exemple qu'on m'a filé c ca:
 

Code :
  1. while ($i=mysql_fetch_array($tarequete)) {
  2. // code  
  3. $date=time();
  4. // 432000 correspond à 5 jours en secondes  
  5. $duree = $i[duree]+432000 ;
  6. if ($date<$duree) {
  7. echo "Nouveau";
  8. }
  9. // code


 
mais moi, le format de date du champ durée n'est pas en seconde mais comme ça: 0000-00-00 00:00:00
 
donc bon, forcement ça ne peut pas correspondre !
non ??
 
sorry detre dnul :/


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 22:01:45    

ben tu peux utiliser le "timestamp" comme type de colonne au lieu de date
mais t'as essayé au moins? parce que je sais pas ce que retourne php sur un champ datetime de mysql mais si ça se trouve c'est comparable a un timestamp
et si t'as essayé, keske ça donne?


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le 14-06-2002 à 22:54:29    

arf en fait jsais pas, ça marche peut etre, je n'ai pas reussi à l'integrer dans mon code !
 
si kkun pouvait m'aider integrer ça:
 

Code :
  1. $date=time(); 
  2.     $duree = $ligne_artiste->duree+432000 ; 
  3.     if ($date<$duree)
  4.     { 
  5.       echo "Nouveau"; 
  6.     }


 
dans mon code:
 

Code :
  1. <?
  2. $req_artiste=mysql_query("Select DISTINCT t1.nom,id, count(t2.id_artistes) As nbr FROM artistes As t1 LEFT join chansons As t2 On t1.id=t2.id_artistes WHERE UPPER(SUBSTRING(nom,1,1) BETWEEN 'A' AND 'G') group by t1.nom" );
  3. while ($ligne_artiste=mysql_fetch_object($req_artiste))
  4. {
  5. $var=substr($ligne_artiste->nom,0,1);
  6. if($var!=$var2)
  7.   echo '<br>'.'- '.'<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFD16F"> '.'<B>'.substr($ligne_artiste->nom,0,1).'</B>'.'<BR>'.'<BR>';
  8.   $var2=$var; 
  9. echo '  '.'<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#C6BFE8">'.("<B>.</B>  <a href=\"index.php?p=scriptsphp3/lyrics/artistes&id=$ligne_artiste->id\">$ligne_artiste->nom</a> ($ligne_artiste->nbr)" ).'<BR>';
  10. }
  11. ?>


 
voila il reste plus qu'a faire ça et c nickel !
 
merciiiiii d'avance
+
 
 
PS: dans mon insert pour la date, j'ai utilisé NOW()


Message édité par ludo2604 le 14-06-2002 à 22:55:28

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 14-06-2002 à 22:56:03    

TON code?
hahem


---------------
\^o^/ Libérez HotShot \^o^/
Reply

Marsh Posté le 14-06-2002 à 23:00:26    

???


Message édité par ludo2604 le 14-06-2002 à 23:01:11

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 15-06-2002 à 04:19:59    

ludo2604 a écrit a écrit :

les n derniers enregistrements, même si ils datent de 6 mois ?  
oui  :sarcastic:  
 
rho, desole je peux pas expliquer plus precis... je veux juste qu'au 5 derniers id, il affiche "nouveau" à cote... s'pa possible ?  




 
Je vois pas pourquoi vous vous prenez la tête avec les dates... Il veux les 5 derniers enregistrements selon l'ID, quelque soit la date...
 
Tu peux faire comme ça:
une requete avec une clause LIMIT pour ne sortir que le 5e ID depuis la fin.

SELECT ID FROM ta_table ORDER BY ID DESC LIMIT 5,0


 
Ensuite tu fais ta requete sur tes textes dans l'ordre que tu veux et tu compares l'ID de chaque enregistrement avec l'ID limite. si $ID >= $IDlimit bingo, c'est un des 5 derniers enregistrements.
 
Edit: pour le 5e enregistrement les valeurs de la clause LIMIT sont 4,1 , l'index commencant a 0... et c'est bien de sortir 1 enregistrement quand même... Allez, dodo

SELECT ID FROM ta_table ORDER BY ID DESC LIMIT 4,1


Message édité par hum hum le 15-06-2002 à 04:27:54
Reply

Marsh Posté le 15-06-2002 à 09:48:09    

voui merci
 
donc voila, jsais pas trop si c'est correct:
 
$req=mysql_query("SELECT id FROM artistes ORDER BY id DESC LIMIT 4,1" )
while ($ligne=mysql_fetch_object($req))  
 
$idlimit = $ligne->id;  
if ($id >=$idlimit )
 {  
echo "Nouveau";  
}


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 15-06-2002 à 11:05:18    

ludo2604 a écrit a écrit :

voui merci
 
donc voila, jsais pas trop si c'est correct:
 
$req=mysql_query("SELECT id FROM artistes ORDER BY id DESC LIMIT 4,1" )
while ($ligne=mysql_fetch_object($req))  
 
$idlimit = $ligne->id;  
if ($id >=$idlimit )
 {  
echo "Nouveau";  
}  




 
ça devrais fonctionner comme ça.
n.b. tu n'es pas obligé de metre l'instruction while puisque avec LIMIT 4,1 tu ne sort qu'un seul enregistrement.
 
$ligne=mysql_fetch_object($req);
$idlimit = $ligne->id;

Reply

Marsh Posté le 15-06-2002 à 11:30:54    

oui mais il y a quelque chose que je ne comprend pas(decidement !), c'est $id n'est pas defni ici:  
if ($id>=$idlimit )


Message édité par ludo2604 le 15-06-2002 à 11:31:09

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 15-06-2002 à 12:20:07    

ludo2604 a écrit a écrit :

oui mais il y a quelque chose que je ne comprend pas(decidement !), c'est $id n'est pas defni ici:  
if ($id>=$idlimit )  




 
Ha ben vi :-)
Je suis parti du principe que la requete sur tes textes tu l'a connais.
Donc:
1) une requete pour ne connaitre que l'id du 5e enregistrement par la fin, que tu stock dans $idlimit
 
 
2) tu sorts tous tes texte avec la requete qui va bien (par exemple celle que tu as utilisé jusqu'a présent sans oublier bien sure l'id de l'enregistrement et là tu pourra faire ton test if.
p.ex.


$requete="SELECT id, artiste FROM ta_table ORDER BY artiste";
$resultat = mysql_query($requete, $connexion);
while ($ligne = mysql_fetch_object($resultat)) {
$id = $ligne->id;
$artiste = $ligne->artiste;
if($id>=$idlimit) $txtNouveau ="nouveau !";
echo "$artiste $txtNouveau <br>";
}


 
 
n.b Bien sure j'aurais du le préciser dès le début: ceci ne fonctionne que si dans ta table tu as une colonne id de type INT auto_increment qui est la clef primaire, mais si tu as déjà une colonne id c'est probablement le cas.

Reply

Marsh Posté le 15-06-2002 à 21:31:03    

yes merci beaucoup ton truc m'a trop aidé, g un peu mieux pigé:
 

Code :
  1. <?
  2. $req=mysql_query("SELECT id FROM artistes ORDER BY id DESC LIMIT 4,1" );
  3. $ligne=mysql_fetch_object($req);
  4. $idlimit = $ligne->id;
  5. $req_artiste=mysql_query("Select DISTINCT t1.nom,id, count(t2.id_artistes) As nbr FROM artistes As t1 LEFT join chansons As t2 On t1.id=t2.id_artistes WHERE UPPER(SUBSTRING(nom,1,1) BETWEEN 'A' AND 'G') group by t1.nom" );
  6. while ($ligne_artiste=mysql_fetch_object($req_artiste))
  7. {
  8. $var=substr($ligne_artiste->nom,0,1);
  9. if($var!=$var2)
  10. if
  11. ($ligne_artiste->id>=$idlimit)
  12. {
  13. echo '<br>'.'- '.'<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#FFD16F"> '.'<B>'.substr($ligne_artiste->nom,0,1).'</B>'.'<BR>'.'<BR>';
  14. $var2=$var;
  15. echo ' '.'<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#C6BFE8">'.("<B>.</B> <a href=\"index.php?p=scriptsphp3/lyrics/artistes&id=$ligne_artiste->id\">$ligne_artiste->nom</a> ($ligne_artiste->nbr)" ).' Nouveau!';
  16. }
  17. }
  18. ?>


 
maintenant il reste un tout petit probleme, c'est que maintenant ça n'affiche que les nouveaux *lol*
 
desole, juiss vraiment nul :/


Message édité par ludo2604 le 15-06-2002 à 21:32:16

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 15-06-2002 à 21:51:02    

c bon desole ca marche javais pas reflechi yavai pas else!
 
merciiiiiiiiiii beaucoupppppppp c top tout es nickel now :)
 
 :hello:


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 16-06-2002 à 02:33:18    

tsss, utilise le timestamp, ca prend 2 lignes

Reply

Marsh Posté le 16-06-2002 à 13:50:31    

orazur a écrit a écrit :

tsss, utilise le timestamp, ca prend 2 lignes  




 
Comment faire une tartine au miel ?
Ben tu prends du pain et tu étale de la confiture de groseilles dessus.
 
tsss, relis les données du problème.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed