Compter et analyser des '<select>'

kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008 - 27 févr. 2005 à 18:29
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008 - 28 févr. 2005 à 20:40
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

cs_LuckyLuck Messages postés 59 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 5 juillet 2005
27 févr. 2005 à 21:19
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...
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
28 févr. 2005 à 20:40
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
0
Rejoignez-nous