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

  FORUM HardWare.fr
  Programmation
  PHP

  [ RESOLU ] [ PHP ] Modification de chaines

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ RESOLU ] [ PHP ] Modification de chaines

n°1633082
_Rit0n_
Posté le 29-10-2007 à 16:47:56  profilanswer
 

Bonjours, je vous expose mon probleme :
 
Sur une gallerie, dans une table Sql, je souhaite inscrire la date ( mais pas la date de l'ajout a la gallerie, une date qu'on ajoute manuellement par formulaire, qui correspond a la date de creation de la photo ), Sous la forme 01.01.07.
 
Ensuite je balance un triage Sql, pour faire un classement par année.
 
Le seul probleme c'est que Sql trie litterallement les expression, et me pond donc une ligne par date, donc sa ne fonctionne pas.
 
Comment je pourrai faire en php pour lui dire de ne pas regarder les premiere valeur "01.01." ( quite a mettre une autre valeur a la place ), et ne pouvoir garder que la derniere expression ?
 

Code :
  1. $date2 = str_replace(" . ", ". ", $date2);


 
Je penssai a un truc de cette forme, mais j'y connait fichtre rien en php un peu approfondi.
 
Merci d'avance :)
 
Resolution :
 
 

Code :
  1. $sql = 'SELECT distinct id,date,mini  FROM galerie_tbl ORDER BY YEAR(date) DESC';
  2. // on envoie la requête
  3. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  4. // SELECTION DU SKIN
  5. if(isset($_GET["css"])){ $css = $_GET["css"]; }else echo "FAUT CHOISIR UN SKIN";
  6. $current_date = 'XXXX';
  7. $limite = 6;
  8. // on fait une boucle qui va faire un tour pour chaque enregistrement
  9. while($data = mysql_fetch_assoc($req))
  10.     {
  11. // on affiche les informations de l'enregistrement en cours
  12.   $id = $data['id'];
  13.   $mini = $data['mini'];
  14.   $date = substr($data['date'], 0, 4);
  15.   //echo "Date : <$date> <br></br>";
  16.   //echo "Current date : < $current_date ><br></br>" ;
  17.   if ($current_date != $date) {
  18.   $current_date = $date;
  19.   echo "<br><a href=\"page.php?rubrique=galerie2&date=$date&css=$css\" class=\"galerie_lien\" target=\"_self\"><font class=\"galerie_lien\">$date</font></a><br>";
  20.   $limite = 6;
  21.  }
  22.  if ($limite > 0)
  23.   echo "<a HREF=\"#\"onClick=\"popupcentre('_photo.php?id=$id','','scrollbars=no ,width=780,height=650');return(false)\"><img src=$mini width=\"100\" height=\"100\" border=\"4\"></a> ";
  24.  $limite -= 1;
  25. }
  26.      
  27. // on ferme la connexion à mysql
  28. mysql_close();


Message édité par _Rit0n_ le 01-11-2007 à 01:51:49

---------------
Site web : http://nobock.fr
mood
Publicité
Posté le 29-10-2007 à 16:47:56  profilanswer
 

n°1633099
FlorentG
Unité de Masse
Posté le 29-10-2007 à 16:59:07  profilanswer
 

Tu peux réorganiser par année facilement en SQL :

Code :
  1. ... ORDER BY YEAR(`champdate`) ...

n°1633109
_Rit0n_
Posté le 29-10-2007 à 17:09:16  profilanswer
 

apercu de la page ici > http://nobock.fr/page.php?rubrique=niak&css=_niak
 
En fait le select sur sql ce fait comme sa :  
 

Code :
  1. // on crée la requête SQL
  2. $sql = 'SELECT distinct date FROM galerie_tbl ORDER BY date DESC';


 
Le truc qui aurai été le plus simple ( sa doit etre la solution ),  
 
Sa serai un truc du genre :
 
la variable Date2 > supprimer les 5 premier caractere en partant de la gauche,  réenregistrer dans date2 ( qui lui repasse dans une moulinette pour un classement de chaque année ).
 
J'ai trouvé la fonction n substr_replace qui pourrai fonctionner, mais je sait pas comment on peut lui faire comprendre de mettre une etoile *, pour subtiliser n'importe quelle valeur ensuite.
 


---------------
Site web : http://nobock.fr
n°1633127
FlorentG
Unité de Masse
Posté le 29-10-2007 à 17:23:56  profilanswer
 

Fait-ça directement dans le SQL, ça sera plus rapide :

Code :
  1. $sql = 'SELECT distinct date FROM galerie_tbl ORDER BY YEAR(date) DESC';

Message cité 1 fois
Message édité par FlorentG le 29-10-2007 à 17:24:06
n°1633217
TheRom_S
Posté le 29-10-2007 à 19:18:27  profilanswer
 

ou alors réorganise la structure de tes dates en utilisant le format japonais : yyyy-mm-dd, après tu peux trier "alphabétiquement" et tu auras le bon ordre


---------------
The Rom's, à votre service
n°1633275
_Rit0n_
Posté le 29-10-2007 à 20:31:56  profilanswer
 

FlorentG a écrit :

Fait-ça directement dans le SQL, ça sera plus rapide :

Code :
  1. $sql = 'SELECT distinct date FROM galerie_tbl ORDER BY YEAR(date) DESC';



 
 
Ok, je vais essayer, mais bon dans mon champs date, je doit lui definir la YEAR, et je fait comment ( mon champ date est 01.01.07 )
 
 
Il y aura la reponse la bas :
 
http://www.laltruiste.com/document [...] heure.html
 
On va test et j'en dit + dans la soirée


---------------
Site web : http://nobock.fr
n°1633441
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2007 à 09:40:32  profilanswer
 

_Rit0n_ a écrit :

Ok, je vais essayer, mais bon dans mon champs date, je doit lui definir la YEAR, et je fait comment ( mon champ date est 01.01.07 )


tu utilises la fonction mysql year qui s'applique sur un champ type date (voir la doc) et que FlorentG te conseille depuis le début [:w3c compliant]

TheRom_S a écrit :

ou alors réorganise la structure de tes dates en utilisant le format japonais : yyyy-mm-dd, après tu peux trier "alphabétiquement" et tu auras le bon ordre


[:prozac]

n°1633532
_Rit0n_
Posté le 30-10-2007 à 10:46:20  profilanswer
 

Code :
  1. $sql = 'SELECT distinct date FROM galerie_tbl ORDER BY YEAR(date) DESC';


 
Sa marche nickel, mais maintenant le probleme, c'est qu'ensuite  
 
En fait avec year effectivement sa marchait, sauf que c'etait en fait ensuite un autre probleme qui survenait.
 
Le classement s'éffectue par année, mais le probleme c'est qu'ensuite je charge l'info apres l'avoir classée
 

Code :
  1. // on affiche les informations de l'enregistrement en cours  $date = $data['date'];


 
Et du coup la date complete apparait, au lieu de juste l'année, et sa me crée une ligne par thumb.
 
Faudrai un truc du genre :
 

Code :
  1. // on affiche les informations de l'enregistrement en cours  $date = $data['YEAR(date)'];


 
Mais bon mes conaissance en php sont tres limité, et encore plus en sql, vu que c'est pas vraiment mon metier.
 
Merci pour tout ces conseil !
 


---------------
Site web : http://nobock.fr
n°1633540
FlorentG
Unité de Masse
Posté le 30-10-2007 à 10:52:57  profilanswer
 

Tu peux mettre :

Code :
  1. SELECT YEAR(`date`) AS `annee` FROM `galerie_tbl` ORDER BY `annee`DESC

n°1633651
_Rit0n_
Posté le 30-10-2007 à 11:43:16  profilanswer
 

En fait un
 
 

Code :
  1. $date = substr("$date", 0, 4);


 
Suffit largement, comme sa il me charge la date , ex : " 2007.01.01 " , et ne garde que l'année " 2007 ".
 
Par contre apres pour ma seconde requette
 

Code :
  1. $sql2 = "SELECT id,date,mini FROM galerie_tbl WHERE date  = '$date' ORDER BY id DESC LIMIT 0,6";


 
Elle selectionne 6 thumb par année, mais le probleme c'est que sa trie par rapport a la date exacte, et que ici la variable $date ne contient que l'année.
 


---------------
Site web : http://nobock.fr
mood
Publicité
Posté le 30-10-2007 à 11:43:16  profilanswer
 

n°1633653
FlorentG
Unité de Masse
Posté le 30-10-2007 à 11:44:17  profilanswer
 

Rajoute un year :

Code :
  1. WHERE YEAR(date) = '$date'

n°1633674
_Rit0n_
Posté le 30-10-2007 à 11:52:45  profilanswer
 

Code :
  1. $sql2 = "SELECT id,date,mini FROM galerie_tbl WHERE YEAR(date)  = '$date' ORDER BY id DESC LIMIT 0,6";


 
Transmission de penssée, le temps que je fasse validé et j'ai trouver sa, par contre sa me pond toujours plusieur ligne ( faudrai que je fasse des recoupement ).
 
Apres recoupement, une ligne est crée pour chaque valeur d'anné, mais par contre l'organisation ce passe nickel.


---------------
Site web : http://nobock.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [ RESOLU ] [ PHP ] Modification de chaines

 

Sujets relatifs
Carte Interactive [RESOLU][PHP] Condition de triage
[Résolu]Requêtes sur Msysobjects[Résolu] Symfony - Premier projet et configuration d'un virtualhost
[Résolu] Article et image dans MySQL[PHP/MySQL] Problème très bizarre :S
[Resolu]wxWidgets : forcer un objet à utiliser la taille du plus grand[PHP][resolu] appel de fonction avec nom généré dynamiquement
[HTML/PHP] Erreur simple dans code, mais introuvable 
Plus de sujets relatifs à : [ RESOLU ] [ PHP ] Modification de chaines


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR