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

 


Dernière réponse
Sujet : [PHP/SQL] Mise en place d'Archive. Prob con avec script
Tentacle

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


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
Tentacle

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

rainckill 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 :((
Tentacle

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;

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

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

rainckill nop, tjrs meme pb :
 
"pb de selection"
Tentacle

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

rainckill 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 :-/
Tentacle

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;

rainckill 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]
Tentacle

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?

rainckill tjrs le meme blem :(
Tentacle Tu peux essayer un banal :
 
SELECT DISTINCT date FROM sys_news;
 
?
rainckill 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  :(
Tentacle

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?

rainckill 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 :-/
Tentacle

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

rainckill 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)
Tentacle

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..

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

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.

rainckill 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

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