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

  FORUM HardWare.fr
  Programmation

  [PHP/SQL] Mise en place d'Archive. Prob con avec script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/SQL] Mise en place d'Archive. Prob con avec script

n°105767
rainckill
Posté le 27-02-2002 à 21:53:38  profilanswer
 

Voila, j'aimerai faire un systeme d'archives, classées par mois. Mon probleme semble moindre, peut etre arriverez vous aisément a le résoudre.
Le voici :
ma page archives se compose d'un page, indexé tous les mois de l'année, voila son code ki est a corrigé, je le rappelle :
 
<?
require("config.php3" );
$db=mysql_connect("$sql","$log","$pas" );
mysql_select_db("$dbs",$db);
 
 
$reqARC = MYSQL_QUERY("SELECT DISTINCT date,id FROM sys_news ORDER BY id" ) OR DIE("pb selection" );
$resARC = mysql_num_rows($reqARC) OR DIE("pb numrows" );
 
$i=0;
while($i!=$resARC)
 {
$mois = substr(mysql_result($reqARC,$i,"date" ),3,7);
$ARCHIVES = " [<a href='archives.php3?date=$mois'>$mois</a>] ";
$i++;
echo "$ARCHIVES";
 
 }
 
mysql_close();
?>
 
 
Le probleme, est kil m'affiche autant de fois $ARCHIVES qu'il n'y a de news. Or, je ne voudrai que le meme mois ne s'affiche qu'une seule fois pour former le lien vers ce mois-ci.
Le résultat obtenue avec ce codage est tout a fait compréhensible, seulement, je n'arrive aps en faire en sorte kil en soit autrement.
 
Merci
 
Rainckill

mood
Publicité
Posté le 27-02-2002 à 21:53:38  profilanswer
 

n°105770
Tentacle
Posté le 27-02-2002 à 22:01:38  profilanswer
 

rainckill a écrit a écrit :

$reqARC = MYSQL_QUERY("SELECT DISTINCT date,id FROM sys_news ORDER BY id" ) OR DIE("pb selection" );




 
Fait plutôt un "SELECT DISTINCT date FROM ... " parce que là c'est normal qu'il te sorte autant de mois que de news, parce qu'il cherche les combinaisons uniques de la date ET de l'id, donc tout les ids normalement.

n°105772
rainckill
Posté le 27-02-2002 à 22:03:01  profilanswer
 

wé ta pas tor, mais c toujours le meme probleme...
 :(

n°105773
Tentacle
Posté le 27-02-2002 à 22:04:47  profilanswer
 

rainckill a écrit a écrit :

wé ta pas tor, mais c toujours le meme probleme...
 :(  




 
tu veux dire que tu as encore des doublons dans les mois? et tu es sûr que tu as écris les mois partout de la même façon? la casse y comprise..

n°105774
rainckill
Posté le 27-02-2002 à 22:07:15  profilanswer
 

le code de la page est coller ci haut... le resultat kil donne est :
 
[01/2002] [02/2002] [02/2002] [02/2002] [02/2002]
 
a savoir : il y a dans ma table sys_news 1 news datant de janvier 02, et 4 autres datant de fevrirer 02 (comme le montre le resultat coller en ahut)

n°105776
Tentacle
Posté le 27-02-2002 à 22:11:16  profilanswer
 

rainckill a écrit a écrit :

le code de la page est coller ci haut... le resultat kil donne est :
 
[01/2002] [02/2002] [02/2002] [02/2002] [02/2002]
 
a savoir : il y a dans ma table sys_news 1 news datant de janvier 02, et 4 autres datant de fevrirer 02 (comme le montre le resultat coller en ahut)  




 
 
Bon essaie alors ceci :
 
SELECT date FROM sys_news GROUP BY date ORDER BY id DESC

n°105777
rainckill
Posté le 27-02-2002 à 22:13:07  profilanswer
 

nop, tjs pô :(
 
resultat :
[02/2002] [02/2002] [02/2002] [02/2002] [01/2002]
 
mùais il vient aps de là le probleme, je pense, mais plutot de la boucle while :-/

n°105780
Tentacle
Posté le 27-02-2002 à 22:18:59  profilanswer
 

rainckill a écrit a écrit :

nop, tjs pô :(
 
resultat :
[02/2002] [02/2002] [02/2002] [02/2002] [01/2002]
 
mùais il vient aps de là le probleme, je pense, mais plutot de la boucle while :-/  




 
bah non parce que tu ne peux pas faire plus de boucle que le nombre de lignes dans ton résultat...
 
Tu peux redonner la requête que tu as maintenant?

n°105784
rainckill
Posté le 27-02-2002 à 22:28:01  profilanswer
 

ben, je voit aps ou tu veux en venir qd tu me demandes kelle requete g en ce moment :) car, enfait, g rien essayer de plus que tu ma dit, voila un ptit historique :
 
SELECT DISTINCT date,id FROM sys_news ORDER BY id" ) OR DIE("pb selection" (la mienne du debut)
 
 
apres y a eu :
SELECT DISTINCT date FROM sys_news ORDER BY id" ) OR DIE("pb selection"
 
ensuite :
"SELECT date FROM sys_news GROUP BY date ORDER BY id DESC"
 
 
sachant ke toutes mene au meme probleme...celui cité plus haut :)
 
La en ce moment, je suis revenu a celle du début... mais bon, aucun resultat bien sur  :(

n°105786
Tentacle
Posté le 27-02-2002 à 22:33:58  profilanswer
 

Tu peux essayer un banal :
 
SELECT DISTINCT date FROM sys_news;
 
?

mood
Publicité
Posté le 27-02-2002 à 22:33:58  profilanswer
 

n°105789
rainckill
Posté le 27-02-2002 à 22:37:42  profilanswer
 

tjrs le meme blem :(

n°105792
Tentacle
Posté le 27-02-2002 à 22:42:27  profilanswer
 

rainckill a écrit a écrit :

tjrs le meme blem :(  




 
bon écoute... 2 possibilités :
- Soit ,par exemple si tu testes sur ton site web, le script n'est pas à jour... genre tu as oublié de l'uploader
- Soit les dates ne sont pas EXACTEMENT ecrits de la même façon dans chaque rangées (vérifie avec phpmyadmin)
 
TIENS... au fait ... comment stockes -tu la date dans la base... je veux sous quel format? avec le jour, heure, seconde je suppose?

n°106248
rainckill
Posté le 28-02-2002 à 18:12:26  profilanswer
 

1/ j'utilise easyphp (en local donc) pour testé mes script php...
 
2/ je les stocke sous le format 27/02/2002 et oui, elle sont toutes pareilles ce ki est logique :-/ avec le "substr(mysql_result($reqARC,$i,"date" ),3,7" je ne garde ke le moi et l'anné : [02/2002]

n°106307
Tentacle
Posté le 28-02-2002 à 20:33:42  profilanswer
 

rainckill a écrit a écrit :

1/ j'utilise easyphp (en local donc) pour testé mes script php...
 
2/ je les stocke sous le format 27/02/2002 et oui, elle sont toutes pareilles ce ki est logique :-/ avec le "substr(mysql_result($reqARC,$i,"date" ),3,7" je ne garde ke le moi et l'anné : [02/2002]  




 
donc le problème c'est qu'il fait le distinct sur la date complete... jour/mois/annee et non pas par mois (il ne peut pas deviner tes intentions :)
Donc comme je suppose que tu as stocké la date dans un champ texte (vu le format), il faut que tu fasses le Substr dans la requête MySQL :
 
 
SELECT DISTINCT SUBSTRING (date, 4, 7) FROM sys_news ORDER BY id;

n°106324
rainckill
Posté le 28-02-2002 à 20:57:28  profilanswer
 

oui, c au format texte (varchar), je savais aps kon pouvais faire un SUBSTRING  direct a aprtir de la requete sql :)
 
mais, il y a un probleme... T sur de la syntaxe du code ke ta mis la ? car enfait, g mis :
 
$reqARC = MYSQL_QUERY("SELECT DISTINCT SUBSTRING (date, 4, 7) FROM sys_news ORDER BY id" ) OR DIE("pb selection" );
 
et il me dit justement erreur selection :-/

n°106328
Tentacle
Posté le 28-02-2002 à 21:07:04  profilanswer
 

rainckill a écrit a écrit :

oui, c au format texte (varchar), je savais aps kon pouvais faire un SUBSTRING  direct a aprtir de la requete sql :)
 
mais, il y a un probleme... T sur de la syntaxe du code ke ta mis la ? car enfait, g mis :
 
$reqARC = MYSQL_QUERY("SELECT DISTINCT SUBSTRING (date, 4, 7) FROM sys_news ORDER BY id" ) OR DIE("pb selection" );
 
et il me dit justement erreur selection :-/  




 
essaie ca alors :
SELECT DISTINCT SUBSTRING (date, 4, 7) as date, id FROM sys_news ORDER BY id

n°106343
rainckill
Posté le 28-02-2002 à 21:53:25  profilanswer
 

nop, tjrs meme pb :
 
"pb de selection"

n°106351
Tentacle
Posté le 28-02-2002 à 22:21:30  profilanswer
 

rainckill a écrit a écrit :

nop, tjrs meme pb :
 
"pb de selection"  




 
hum tu peux plutot mettre un :
OR DIE (mysql_error())
 
pour que je sache au moins l'erreur :D

n°106849
rainckill
Posté le 01-03-2002 à 21:20:06  profilanswer
 

"Something is wrong in your syntax près de '(date, 4, 7) as date, id FROM sys_news ORDER BY id' à la ligne 1"

n°106854
Tentacle
Posté le 01-03-2002 à 21:27:08  profilanswer
 

rainckill a écrit a écrit :

"Something is wrong in your syntax près de '(date, 4, 7) as date, id FROM sys_news ORDER BY id' à la ligne 1"  




 
Peut-être que tu as une espace avant les parenthèses?enfin essaie
et surtout rentre cette requête et débrouille toi pour que ce soit sur plusieurs lignes, comme ca on saura précisemment l'erreur :
 
SELECT DISTINCT SUBSTRING(date, 4, 7) AS date2, id
FROM sys_news
ORDER BY id;

n°106857
rainckill
Posté le 01-03-2002 à 21:34:51  profilanswer
 

bon, oui y avait un espace :D
 
 
maintenant il affiche : [2002] [2002] [2002] [2002] [2002]  
 
sans le mois kom tu peux le voir... mais toi, ct 4, 7 alors kavant ct 3, 7 g donc mis 3, 7 mais la c pire : [/200] [/200] [/200] [/200] [/200]  
 
m'enfin, la n'est aps le véritable probleme... mais bel et bien de celui ki fait kil se repete plusieur fois :((

n°107083
Tentacle
Posté le 02-03-2002 à 19:00:26  profilanswer
 

rainckill a écrit a écrit :

bon, oui y avait un espace :D
 
 
maintenant il affiche : [2002] [2002] [2002] [2002] [2002]  
 
sans le mois kom tu peux le voir... mais toi, ct 4, 7 alors kavant ct 3, 7 g donc mis 3, 7 mais la c pire : [/200] [/200] [/200] [/200] [/200]  
 
m'enfin, la n'est aps le véritable probleme... mais bel et bien de celui ki fait kil se repete plusieur fois :((  




 
oui pour le SUBSTRING (date, 4, 7) j'ai mis 4 parce que j'avais vu que ça ne marchera pas avec 3, 7 :)
 
Pour la requête essaie ça (mais vérifie avant que tu stockes bien dans date ce format là : jj/mm/aaaa) :
 
SELECT DISTINCT SUBSTRING(date, 4) AS date2
FROM sys_news  
ORDER BY id;
 
Là normalement tu ne devrais avoir que 2 valeurs en retour (desole j'avais oublie que le distinct agissait sur les 2 champs).
D'ailleurs tu dois récupérer la valeur dans 'date2'.
 
Et je pense que si tu as 2002 en retour, c'est que tu n'as pas désactivé ta fonction substr dans ton code php ;)

mood
Publicité
Posté le   profilanswer
 


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

  [PHP/SQL] Mise en place d'Archive. Prob con avec script

 

Sujets relatifs
[PHP] comment désactiver le Debug Mode ?Trou de sécurité PHP : mises à jour disponibles
[ PHP ]Helpez moi!G un prb a propos d'envoi de donnée sur mysql[PHP] Affichage texte TRONQUER - eXPlication INSIDE
Où trouver des scripts PHP tout fait ?online.fr hebrgement ----> My SQL
[PHP] générer un nombre aléatoire...[PHP-MY SQL]Requete récupéré champs de la BD
[PHP] graphique et symbole euro 
Plus de sujets relatifs à : [PHP/SQL] Mise en place d'Archive. Prob con avec script


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