Incrémentation calculée

Résolu
albinOz Messages postés 19 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 15 mars 2005 - 25 févr. 2005 à 12:53
albinOz Messages postés 19 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 15 mars 2005 - 1 mars 2005 à 16:30
Bonjour

Pour mon projet, j'ai besoin de calculer mes identifiants avec un
formule mathématique. Jusque là c'est très simple, tant qu'il n'y a
qu'un valeur à calculer :

voici le code : $id_grp = $_POST['div'] *32 +1;

- si div 1 --> id_grp 33

- si div 2 --> id_grp 65 ... etc.



Là où cela se complique, c'est que si je veux entrer une $id_grp appartenant à "div", il me retourne $id_grp, exemple :

- si div 1 ---> id_grp 33 (premier enregistrement)

- si div 1 ---> id_grp 34 (deuxième enregistrment)

- ..................... id_grp = 35 (troisième ...) etc



Je n'arive pas à écrire l'algorithme qui me permettrait de calculer
id_grp, de contrôler son existence dans ma table "grp", si "oui" alors
$id_grp =$id_grp +1, si "non" $id_grp = $id_grp



Merci pour votre aide.

3 réponses

albinOz Messages postés 19 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 15 mars 2005
1 mars 2005 à 16:30
bon je réponds à moi-même, histoire d'en faire profiter d'autres débutants ;

finalement c'était tout simple, voici mon code :



$querydiv = "select id_div, clt_div from div";

$resultdiv = mysql_query($querydiv) or die("Query failed : $querydiv");



// calcul de l'identifiant de div et son classement

$id = 1;

$clt = 1;

while ($div = mysql_fetch_array($resultdiv))

{

$i = 0;

$j = 0;

$id = $id+$i;

$clt = $clt+$j;

if ($id == $div[0])

{

$i=$i+1;

}

else

{

$i=$i;

}



if ($clt == $div[1])

{

$j=$j+1;

}

else

{

$j=$j;

}

$id = $id+$i;

$clt = $clt+$j;

}

$id_div = $id;

$clt_grp = $clt;



je suppose que ce code est plus qu'optimisable, mais bon comme je l'ai
trouvé tout seul, j'en suis bien content. Comme quoi c'est possible.



merci à ozitoun pour sa réponse.
3
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008
25 févr. 2005 à 13:05
je suispas sûr d'avoir compris mais pourquoi ton champs id_grp tu ne le mets pas en incrémentation automatique tout simplement !!!

Sinon tu récupére le dernier id_grp de ta base avant de faire ton calcul !!!

Zitoun
0
albinOz Messages postés 19 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 15 mars 2005
25 févr. 2005 à 13:52
je ne le mets pas en incrémantation auto, car je récupère les données
d'une base existant mdb, et le $id_grp est calculé de cette manière.



le truc, c'est qu'il faut calculer $id_grp avec la formule, puis
regarder si ce $id_grp calculé existe déjà. si c'est le cas, le $id_grp
passe à $id_grp +1.

si $id_grp +1 existe aussi, alors on rajoute encore 1, etc, jusqu'à ce
que in fine le $id_grp+1 soit n'existe pas : à ce moment là $id_grp
prend la valeur $id_grp+1.



j'espère que c'est plus clair.



en faisant des recherche, j'ai vu que array_keys_existe pouvait
peut-être répondre à mon besoin, mais je n'arrive pas à l'implementer
dans une boucle.
0
Rejoignez-nous