Compter et analyser des '<select>'

Signaler
Messages postés
365
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
365
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008
-
Voila je recupere depuis ma bdd des noms de menu auquel est assigné une
position (cela me permet de creer le menu totale de ma page , la
position indique juste l'ordre dans lequel ils apparaissent) .

j'ai une interface pour gerer l'ordre et a chaque nom j'ai mis un
<select><option value=1>1</option>...<option
value=n>n</option></select> avec pour 'n' le nombre de
menu dans la bdd; de plus, le nom de ce menu possede la position 'i'
dans la bdd et l'option qui contient le chiffre 'i' est selectionnée
(<option selected>)

pour mieux comprendre :

$rep=opendir('menu');

while ($file = readdir($rep)) {

if($file != '..' && $file !='.' && $file !=''){

if (is_dir("menu/".$file) and (file_exists("menu/$file/title.php")==1)){

$requete=mysql_query("SELECT * FROM `menu` WHERE `menu`.`nom`="$file"");

$nb = mysql_num_rows($requete);

if ($nb!=0) {

$ligne = mysql_fetch_object($requete);

echo "<tr><td></td><td style='color:
#72A2BD'>$file</td><td align=center

style='color: #72A2BD'><select name=$file>";

$i = 1;

while ($i <= $nbrpos) {

echo "<option value="$i"";

if ($ligne->position == $i) { echo " selected>$i</option>";

} else { echo ">$i</option>"; }

$i++;

}

echo "</select></td><td align=center>Enlever</td></tr>";

}

}

}

}

closedir($rep);



en fait chaque nom de menu est associé a une liste de 1 a 'n' ou le nombre 'i' est selectionnée

tout ca ca marche nikel mais j'ai un probleme pour ce que je veux faire

le webmaster modifie les position des menu grace aux listes mais il peut faire une erreur en mettant deux fois la meme

j'aimerai savoir comment (apres submit du formulaire) verifier que les
positions selectionnées dans les listes ne sont pas les memes, puis
faire une boucle de mysql_query pour mettre a jour chaque menu avec la
nouvelle position attribuée



bien sur je demande pas qu'on me le fasse et c'est surtout la methode
pour comparer les chiffres que j'ai trop de mal a trouver , je cherche
juste des idées



merci d'avance

_Marikou

2 réponses

Messages postés
59
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
5 juillet 2005

tu peux faire une boucle récursive qui vérifie que le premier est bien différent de tous les suivants, puis tu prends le second et tu testes a partir du 3eme, puisque t aura déjà testé avec le premier. en gros ca donne ca sur un exemple:
1 \
2 |1 différent de 2
3 |1 différent de 3
4 / 1 différent de 4

1 \
2 |
3 | 2 différent de 3
4 / 2 différent de 4

1 \
2 |
3 |
4 / 3 différent de 4

voilà, sur n chiffres ca demande n-1 itérations mais à chaque fois il y a moins de tests. ca doit pouvoir se faire de cette manière:

function alldiff($tableau, $ind = 0)
{
$n = count($tableau)-1;
$b = $tableau[$ind];
for ($i = $ind+1 ; $i<$n ; $i++);
{
if($tableau[$i] == $b)
return 1;
}
if( $ind < $n)
{
return alldiff($tableau,$ind+1);
}
else
return 0;
}

et tu appelles la fonction alldiff($tontablo) maintenant que j'y pense, si ton tableau est à plusieurs dimensions, à toi d'adapter le code

++
LuckyLuck

PS: chui pas sur de mes index, vérifie bien...
Messages postés
365
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008

merci, je comprens le truc, on se retrouve avec (n-1)! verifications a faire ca parait assez simple a realiser dans la forme. La je fignole le scriptage des sessions et je decouvre md5 et je me penche sur ca
pourtant ya un point qui demeure obscure , les valeur qui sont dans mon tableau sont dans des listes deroulantes et pour envoyer le contenu du formulaire ya que 'submit' alors je sais pas comment passer les donner pour les traiter et verifier qu'il n'y a pas deux menu avec la meme position... (post ??? get ??? et aussi comment choisir la variable contenant l'info ...)

Merci beaucoup deja pour le principe de structure =)

_Marikou