Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2816 connectés 

 


Dernière réponse
Sujet : [PHP] afficher un 'nouveau' pour les derniers enregistrements...
hum hum

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.


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
hum hum

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.

orazur tsss, utilise le timestamp, ca prend 2 lignes
ludo2604 c bon desole ca marche javais pas reflechi yavai pas else!
 
merciiiiiiiiiii beaucoupppppppp c top tout es nickel now :)
 
 :hello:
ludo2604 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 :/

hum hum

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.

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

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;

ludo2604 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";  
}
hum hum

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

ludo2604 ???
greg@freestarthu TON code?
hahem
ludo2604 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()

greg@freestarthu 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?
ludo2604 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 :/

HappyHarry

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

ludo2604 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 + ??
greg@freestarthu bonne chance:)
ludo2604 oui oui champs je sais scuse...
 
oky merci bien je vais voir ça ^^
greg@freestarthu

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

ludo2604 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  :)
greg@freestarthu

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 ;))

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

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?

ludo2604 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 ?
greg@freestarthu et c'est "nouveau" par rapport à quoi?
t'es pénible là...
hum hum 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.
ludo2604 afficher le mot "nouveau"
 
par exemple comme ça:
 
. Cardigans (the) (39) Nouveau !
. Coolio (1)
. Corrs (the) (38)
. Craig David (11)
. Cramberries (the) (27) Nouveau !
greg@freestarthu un nouveau QUOI?
ludo2604 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:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)