Monico9385
Messages postés279Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 6 août 2007
-
12 août 2005 à 00:07
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 2012
-
13 août 2005 à 20:35
Bonsoir tout le monde,
je vous explique mon probleme. J'aimerai que dans ma liste déroulante
soit sélectionné l'élément voulu. Je m'explique : J'ai par exemple 10
dates dans mon select qui sont récupérer dans une BDD, et j'aimerai
pouvoir sélectionné l'une d'entre elle, par exemple la 5eme au
chargement de la page. Cette sélection n'est pas fixe, elle varie en
fonction de paramètres, mais j'aimerai que ca se selectionne dans le
select, au lieu de l'appeller 2 fois comme je le fais actuellement.
J'espere que j'ai été assez clair, sinon demandez moi.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 12 août 2005 à 00:24
oui non c'est pas super clair lol mais en gros vois si tu ne peux pas faire un replace en fonction de tes paramètres.
en gros tu mets ta grosse balise select en variable et puis
if( tes parametres si tu veux ){
$select= str_replace(">".$tavaleurparametre, " selected>".$tavaleurparametre, $select);
}
bon moi j'utilise ça parfois, mais je sais pas si j'ai été assez clair lol
Monico9385
Messages postés279Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 6 août 2007 12 août 2005 à 00:49
Evangun j'ai pas tres bien compris ce que tu veux me faire dire, sinon
Anthomicro la solution que tu me donne c'est que c'est moi qui choisi
lequel sera sélectionné, alors que moi ce sera une sélection qui
changera. Je vais vous donner l'exemple visuel pour que ce soit plus
simple :
Sur ce site, dans la
partie Résultats du concours; j'ai en haut un select avec toutes les
dates du concours, et j'aimerai que ce soit la derniere qui soit
sélectionné, la dans l'exemple je recupere d'abord la denriere, et
ensuite je les listes toutes donc forcemment y en a une en double. Moi
j'aimerai juste toutes les lister, et que ce soit la derniere qui soit
selectionnée, mais c'est pas forcé que ce soit la premiere de la liste.
Sinon je tiens a préciser que le site est en cours de réalisation!!!
J'espere avoir été un peu plus clair.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 12 août 2005 à 01:04
non franchement c'est pas super clair mais bon, je vais pas donner de leçons lool
mais si tu travailles à partir d'une bdd, pourquoi tu ne trierais pas
tes résultats par ordre chronologique et tu mettrais le selected sur le
premier ou ler dernier élément?
si mon idée ne va pas avec ton projet, réexplique ça : "sur ce site, dans la
partie Résultats du concours; j'ai en haut un select avec toutes les
dates du concours, et j'aimerai que ce soit la derniere qui soit
sélectionné, la dans l'exemple je recupere d'abord la denriere, et
ensuite je les listes toutes donc forcemment y en a une en double. Moi
j'aimerai juste toutes les lister, et que ce soit la derniere qui soit
selectionnée, mais c'est pas forcé que ce soit la premiere de la liste." parce que je sais pas mais j'ai rien compris. et mets ton code aussi, ce sera bien :)
Monico9385
Messages postés279Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 6 août 2007 12 août 2005 à 01:23
Voila comment je récupere mes dates :
<center>Concours du <select name="concours">
<?php
echo
"<option>$date_dernier_concours</option>";
$req =
mysql_db_query("$sql_bdd","SELECT DISTINCT date FROM
t_resultat_concours ORDER BY id_resultat_concours DESC");
while
($rec=mysql_fetch_array($req))
{
$date=$rec[0];
echo "<option>".$date."</option>";
} ?>
</select>
Je récupere donc toutes mes dates, cependant je ne peux pas me
débrouiller pour que ce soit la premiere ou la derniere qui soit
selectionne, car je m'explique (en essayant d'etre clair cette fois
ci): l'administrateur peut entrer la date du prochain concours, celle
ci va s'ajouter au date de concours existantes. Et comme je liste
toutes les dates de tous les concours, le concours qu'il a ajouté n'a
pas encore eu lieu, donc il n'y a pas de résultat possible, il
apparaitra donc en premier ou denrier dans mon select (selon mon chois
de requete), sauf que moi je veux le dernier concours qui a eu lieu, il
sera donc le 2eme ou l'avant dernier, et c'est celui la que j'aimerai
qu'il soit sélectionné. J'espere que j'ai été assez clair.
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 12 août 2005 à 10:18
Salut,
Je sais pas non plus si j'ai compris. J'essaie de reformuler et tu me dis si c'est bien ça :
« Afficher chronologiquement dans ta liste toutes les dates de ta table t_resultat_concours , et sélectionner par défaut la plus récente dont les t_resultat_concours.resultat ne sont pas vides. » (ce ne sont pas les bons noms de table
C'est ça ?
Si c'est bien ça, il faut que ta requête te permette de savoir si tel concours a déjà eu lieu.
Ainsi, ça donnerait qqch du genre (mais je ne connais pas la structure de ta table...)
<select>
<?php
$req = mysql_db_query("$sql_bdd","SELECT DISTINCT date, vainqueur FROM t_resultat_concours ORDER BY date");
while ($rec=mysql_fetch_array($req)) {
$select='';
if (!empty($rec[1]))
$select=' selected="selected"';
echo '<option'.$select.'>'.$rec[0].'</option>';
} ?>
</select>
Mais je pense pas que tu enregistres les résultats dans cette table, si ? dans ce cas, il faudra que tu fasse une requête sur 2 tables, avec une jointure. Si tu n'y arrive pas, donne la description de cette table et de celle où sont enregistrés les résultats.
Dans tous les cas, je pense qu'il faut que tu enlèves la ligne echo "<option>$date_dernier_concours</option>";
Au fait, dans ta requête tu fais un ORDER BY sur une colonne que tu ne sélectionne pas... ce n'est pas correct.
arnal69130
Messages postés445Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention22 mars 20072 12 août 2005 à 12:36
$select est une variable (qu'on aurait pu appeler autrement), qu'on initaialise dans tous les cas à vide, dans ce cas
echo '<option'.$select.'>'; donnera <option>
et si il y a un vainqueur (donc que le concours a déjà eu lieu), cette variable prend la valeur suivant : ' selected="selected"', donc
echo '<option'.$select.'>' donnera <option selected="selected"> c'est-à-dire que cette ligne sera sélectionnée dans la liste.
Je pense que ma solution va soulever un pb car le DISTINCT dans la reqête te permettait de ne sélectionner qu'un enregistrement par date, mais comme maintenant on renvoie aussi le vainqueur, chaque enregistrement sera unique, donc la requête te renverra tous les enregistrement de la table (et non plus un seul par date).
...
Monico9385
Messages postés279Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 6 août 2007 12 août 2005 à 13:09
Ok je comprend mieux.
C'est bon ca marche maintenant. Tu m'as résolu 2 problemes en un, vu
que je voyais pas comment faire pour récupérer la dernieres date avec
un classement. Donc maintenant ca marche nikel, c'est génial.
Sauf que j'ai un 2eme souci. Si tu reprends mon site dans la meme
partie, quand je veux changer la date pour voir d'autre concours,
j'envoie en POST la date sélectionné, sauf que comment je peux faire
pour qu'elle soit sélectionnée dans mon select, en listant toujours
toutes les dates des concours.
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 12 août 2005 à 16:34
Raahhh j'ai pas pu me connecter ni cette nuit parce que le forum était en panne après 1h (chez moi en tt cas rien n'apparaissait), ni aujourd'hui avec ce serveur qui marche une fois sur 30... j'ai donc raté la discussion mais je vois que arn a parfaitement pris les choses en main ;^)
juste une ou deux remarques: pourquoi tu ne ferais pas une table par date de concours? ça t'éviterait une taille monstrueuse au bout de quelque temps (enfin, ça dépend de son utilisation) et je trouve ça plus pratique à gérer. A quoi il faudrait rajouter une table qui contienne toutes les dates des concours, qui servirait d'index. Mais ce n'est qu'une idée, parce que tu as bcp de champs et tu veux peut-être pouvoir faire des opérations entre sans avoir à passer d'une table à l'autre... Encore une fois ça dépend de ce que tu veux en faire.
Et puis sinon je vois que pour tes dates, tu utilises un champs varchar(30), je ne sais pas comment tu fais exactement mais en tt cas tu devrais opter pour le format anglais 2005/08/16 si ce n'est déjà fait, comme ça le tri alphabétique revient au même que le tri chronologique. C'est le format date de MySQL par défaut d'ailleurs.
voili voilou
Monico9385
Messages postés279Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention 6 août 2007 12 août 2005 à 18:44
Merci de vos réponses. Pour l'idée de faire une table par date j'y
avais pensé mais ce n'était pas pratique car je récupere des
informations par cette table et il faut qu'il y ait tout, c'est plus
facile et direct. Sinon pour l'optimisation je sais pas si ca joue un
role aussi important, et le format anglais n'est pas simple pour
l'utilisateur qui va s'occuper de ce site donc c'est pour ca que j'ai
opté pour cette solution, il n'aura aucun probleme comme ca. Et puis il
y aura normalement que 8 ou 10 conours par an, a raison de 10 champs
par concours, donc je pense pas qu'elle va saturée trop vite. En
tout cas merci de vos propositions.
Sinon pour en revenir a mon deuxieme probleme, ta solution ne marche
pas Anthomicro, cela me double toutes mes dates, et ca ne sélectionne
que la denriere comme précédemment, et non celle que j'avais
sélectionné. Donc si vous avez des idées, elles sont les bienvenues
Evangun
Messages postés1980Date d'inscriptiondimanche 20 février 2005StatutMembreDernière intervention24 septembre 20124 13 août 2005 à 13:56
si ça doit marcher mais ce qui se passe surement c'est que le premier
script met toujours le selected dans la derniere balise, donc c'est
elle qui s'affiche. il faut que ce script ne s'exécute pas si tu as
déjà envoyé le formulaire.
et pour afficher ensuite bah... soit tu mets un
echo à l'intérieur de la boucle, soit tu enregistres les différentes
valeurs de $select (qui changent à chaque passage de boucle) dans un
tableau...
bon si tu as vraiment trop de mal écris-moi un message à evangun2001@yahoo.fr en mettant PB PHPCS dans le sujet