je travail a comprendre ton code et je te donne les modif a faire
Version imprimable
je travail a comprendre ton code et je te donne les modif a faire
pour le dernier id tu fais SELECT MAX id etc .... pour combler les trous , tu parcours et quand tu arrive sur un trou tu prends l id !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 $requete = "select ID from parrain order by id"; $stmt=ociparse($connexion, $requete); //$connexion est la variable qui contien le nom de ta base ... pour te connecter a cette derniere ociexecute($stmt); $nb_id=0; while(ocifetch($stmt)) { $tabloid[$nb_id]=ociresult($stmt,"ID"); $nb_id++; } $i=0; $trouver=false; while ($i<$nb_id && $trouvai!=true) //tan que i plus peti que le nombre de id et trouver egale faux { if ($i+1 < $tablo_id[$i]) //je regarde si i+1 est inferieur au contenu de tablo qui lui est atacher. tab[0]=1 tab[1]=2 tab[2]=3 tab[3]=5 t ab[4]=6 tab[5]=7 { //i=0 donc i+1=1 $id=$i+1; $trouver=true; } $i++; //c'est la meme chose que $i=$i+1 c'est l'incrementation } if ($trouver==false) { $id=nb_id; }
essai ce code juste avant ton insercion dans ta base est tien moi au courent
parcontre desolai mais je ne me rapel pas comment on stocke dans un tableau une requette multiligne de sql donc je t'ai donner la version oracle mais vu le code que tu m'as fillé tes connaissence depassent largement les mienes donc tu devrais pouvoir adapter le code facilement
tient moi au courent du resultat
je reste connecter de 8h30 a 15h et de 17h a 20h (ce sont mait auraire de travail lol vive les stage c'est mieu que les cours)
Ca ne pose pas de problème derrière le fait de réattribuer les id à d'autres membres :koi: En règle générale il n'y a pas à faire ce genre de choses, un membre a un id propre "à vie", il faut avoir vraiment une bonne raison de faire cela sinon il y a un souci d'analyse.
moi je n'est fait que repondre a sa demande
mais je trouve cooerent de suprimer un menbre s'il ne vien jamais ou pose probleme et par souci de garder une liste des id la plus simplifier et moin etendu possible il est preferable de faire ce sisteme plustot que de laisser la liste s'etendre vers 100000 et ne pas avoir plus de 2000 personne
de plus plein de personne s'inscrive pour voir se que c'est et par la suite se suprime eux meme car sa ne les interesse finalement pas donc il faut bien pouvoir reutiliser leur ID
Je suis un peu embêtée ... :oops: dans le sens où j'ai un peu de mal à cerner clairement mon problème ... Pour résumer :
Il se peut que je soit amenée à supprimer un membre à cause d'un url invalide et/ou au contenu irrespectueux ... Dans ce cas, dans ma partie admin je supprime ce membre ... Et c'est à ce moment que j'aimerais que l'inscription suivante remplace l'id supprimé...group by id afin d'avoir une suite sans trou ...
Actuellement (certainement à cause de l'auto increment) la base garde en memoire la position du dernier id utilisé ! dixit RideKick;)
La solution de teen6517 me semble un peu compliquée...En fait j'en sais pas grand chose et je m'en remet (facilement je vous l'accorde) à votre avis sur la question ...
En tout cas merci du temps que vous consacrez à ce post ($post+1 blague à part:? )
lol on a posté en même temps teen6517 mais c'est ça l'idée oui :cry:
EDIT : pour répondre à ton message précédent, je pense que tu sur-estime mes connaissances. Mon code était relativement basique..je me suis mis au php depuis peu :aie:
derien de toute facon ojourduit j'avais pas envis de trop bosser mon aplication commence a devenir trop grosse pour moi (3662 ligne de code reparti sur 44 page)
lol
c'est pour sa une petite pose de temp en temp sa fait pas de mal
ma solution n'est pas tres compliques si tu comprent l'idee
quand tu fait une supression dans ta chene d'id tu va avoir un trou si tu l'est renge par ordre croissant
tu parcour tous le tableau ou tu a stocker tes id par ordre croissant
tu doi garder a l'esprit que ton tableau commence a l'indice 0 mais je supose que tes id commence a 1 donc quant tu parcour ton tableau l'indice du tableau et inferieure de 1 a la valeur de ton id que tu regarde
exemple
tablo[0]=1
tablo[1]=2
donc si tu fait indice du tableau + 1 tu pe verifier si cette valeur est egale a l'id
maitenent on arrive a un trou car tu a suprimer le 3
tablo[0]=1 ici indice+1=id
tablo[1]=2 ici aussi
tablo[2]=4 ici non car 3<4 donc sa veut dire que l'id 3 n'est pas utiliser
comme il est pas utiliser tu peut ten servir pour ton nouveau membre
pendent que tu parcour ton tableau si tu ne trouve aucun trous alor tu prent ton dernier id et tu fait +1 pour avoir un nouveau id
noubli pas de sortir l'incrematation automatique que tu utiliser avec ta base de donner puisque maintenent c'est ton programe qui le gere
tu doit aussi penser a certain cas particulier (la desuite j'en vois qu'un )c'est si ta base est vide mais remaidier a ce probleme tu a diferente solution comme la plus simple il me semble qui est d'atribuet a l'id la valeur 1
tu fait ta recherche dans le tableau et tous se qui suit et si tu trouve un nouvel id tu ecrase le 1 par defaut sinon sa veut dire que c'est le premier et tu lui donne le numero 1
sinon tu pe tricher en te donnent toi meme le num 1 comme sa tu est sur de ne pas avoir une base vide lol
sa va mieux pasque la je voit pas trop se que je peut faire de plus pour toi
peut etre mais tu a du javascript au milieu et de l'HTML
moi je fait tous en PHP rien d'autre
mais page reste blanche et il n'y a aucun style toi tu arrive a faire un maillange de tous sa
moi jutilise un tableau basique avec <table><tr><td></td></tr></table>
c'est tristounete:cry:
mais bon je me pencherait sur sa une foi que tous sera operationnelle
petite question Angelik
c'est tu si il existe une fonction en php qui permete de savoir si ta requette ne te renvoi rien
par exemple tu a dans ta table_id
1,2,3,4,5,6,8
si tu fait select * from table_id where id=7
comment tu fait pour savoir si ta requette te renvoi rien pasque moi j'ai se petit probleme avec mon aplication sa me donne un message d'erreur
sa na rien avoir avec ton apli mais j'ai pocette question ce matin est personne ne ma repondu (enfin si avec du code je peut le faire mais moi je cherche une fonction)
donc su tu la connait ou si quelqun la connée merci d'avence
tu peux créer des topics pour ça lol
mysql_num_rows va t'aider
http://fr.php.net/manual/fr/function.mysql-num-rows.php
Bonus sur le forum http://club.developpez.com/regles/#L4.3 4-3
Pour le problème d'Angelik si il y a aucune conséquence réelle de laisser des id "inutilisés" je vois pas vraiment l'intérêt de se prendre la tête pour ça, la vocation d'un id est de repérer un enregistrement, après qu'elle vale 10 ou 1571241 on s'en bat les rouflaquettes logiquement. Sauf si l'id n'est pas transparent pour l'utilisateur dans ce cas ça peut servir mais sinon...
mais moi je suis pas sous MySQL je suis avec oracle
ta pas la meme version oracle Amara stp
Tu utilises quoi comme fonctions pour te connecter et pour lancer des requêtes ?Citation:
Envoyé par teen6517
je me suis fait ceci
connec_bdd.php
tramero.phpCode:
1
2
3 <?php $connexion=OCILogOn("salud", "salud", "//127.0.0.1/XE"); ?>
voici une pedi boud de mon code ou tu a un apel de connecxion et l'execution d'un requette multiligne qui stock dans des tableau chaque champ de ma tableCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 include("connec_bdd.php"); $requete = "select * from san_tramero where tr_ine='$vias_ine' and tr_codvia='$vias_codigo'"; $stmt=ociparse($connexion, $requete); ociexecute($stmt); $nb_tram=0; while(ocifetch($stmt)) { $tablo_tramero_codprov[$nb_tram]=ociresult($stmt,"TR_CODPROV"); $tablo_tramero_ine[$nb_tram]=ociresult($stmt,"TR_INE"); $tablo_tramero_ine11[$nb_tram]=ociresult($stmt,"TR_INE11"); $tablo_tramero_codvia[$nb_tram]=ociresult($stmt,"TR_CODVIA"); $tablo_tramero_cpostal[$nb_tram]=ociresult($stmt,"TR_CPOSTAL"); $tablo_tramero_tiponum[$nb_tram]=ociresult($stmt,"TR_TIPONUM"); $tablo_tramero_extrinfnum[$nb_tram]=ociresult($stmt,"TR_EXTRINFNUM"); $tablo_tramero_calextrinfnum[$nb_tram]=ociresult($stmt,"TR_CALEXTRINFNUM"); $tablo_tramero_extrsupnum[$nb_tram]=ociresult($stmt,"TR_EXTRSUPNUM"); $tablo_tramero_calextrsupnum[$nb_tram]=ociresult($stmt,"TR_CALEXTRSUPNUM"); $tablo_tramero_zonasalud[$nb_tram]=ociresult($stmt,"TR_ZONASALUD"); $tablo_tramero_dist[$nb_tram]=ociresult($stmt,"TR_DIST"); $tablo_tramero_secc[$nb_tram]=ociresult($stmt,"TR_SECC"); $nb_tram++; }
pourquoi cette question????8O
quand j'ai dit:
sa veut dire que la fonction que tu ma fillait est pour MySQL mais c'est la meme que je veut mais en version oracle et non MySQL donc en rajoutant un petit mots sa donneCitation:
ta pas la meme version oracle Amara stp
Citation:
ta pas la meme version pour oracle Amara stp
En regardant la doc il y a la même chose que ce que je proposais plus haut avec le num_rows :roll:
http://fr3.php.net/manual/fr/function.oci-num-rows.php
Edit : oui j'avais traduit (même si c'est pas facile de tout comprendre vu comment les messages sont écrits...)