IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

id automatique ?


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut id automatique ?
    Bonjour tout le monde !

    Mon application enregistre des inscriptions avec un numéro d'id

    Exemple : 1,2,3,4,...,10 ect

    Cependant, je suis amenée à supprimer par moment des inscriptions et c'est là que ça coince. En effet si je supprime l'inscription id = 4, je me retrouve avec un trou dans ma suite. Ex: 1,2,3,5,6,...,10 or j'aimerais qu'automatiquement ma liste d'inscription redevienne 1,2,3,4,5,...,10.

    Pareil, si en toute fin de liste j'enregistre un membre (id=23 par exemple) et que je le supprime, la prochaine inscription sera id=24 au lieu d'être id=23



    Pourquoi ? Est-il possible de modifier cela ? Si oui comment ?

    Merci d'avance

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    j'ai une solution pour toi mais je c'est pas si elle va te convenir


    je t'explique

    tu crait une nouvelle table (pour te donner une image tu va lapeler poubelle lol)

    chaque foi que tu veut suprimer une ID ,avant tu l'enregistre dans cette table et ansuite tu fait ta supression.
    lord d'un nouvel enregistrement tu regarde si dans la table poubelle il y a une ID disponible (s'il y en a plusieur tu selectione la plus petit valeur)
    s'il n'y en a pas tu vas dans ta table normal et tu cherche ta valeur la plus grande et tu fait +1

    ne conspte n'est pas tres difficille a comprendre mais il oblige a créé une table suplementere

    un petit conseil a chaque foi que tu utilise une ID de la table poubelle n'oubli pas de le suprimer
    je te le presise car moi la premiere foi c'est ce qui m'est arriver

    si ta besoin d'aide pour les requetes je devrais pouvoir t'aider
    t'utilise quoi comme BDD?

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Coucou

    J'ai saisi l'idée générale mais en pratique je suis un peu larguée j'avoue En fait, même en créant une table supplémentaire, ça m'oblige malgré tout à modifier l'id manuellement ?

    Sinon j'utilise phpMyAdmin et ma requête actuelle pour l'insertion dans la table est de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("INSERT INTO $membre (id,pseudo,nom,prenom,spec,photoarticle,url,email,cat) VALUES ('$id','$pseudo','$nom','$prenom','$spec','$largefile','$url','$email','$cat')");
    Voilà

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    ça m'oblige malgré tout à modifier l'id manuellement ?
    tu m'avait pas parler de modifier l'id mais de faire en sorte que lorsque tu a par exemple
    1,2,3,4,5, 7,8

    faire en sorte que ton prochain ajout soi l'id 6 et non 9

    c'est bien se que tu veut?

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    montre moi ton code et je te montrerer les requettes

    enfin si j'y arrive toujour

    lol

  6. #6
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    oui c'est juste mais j'aimerais que l'image (id=6) s'intercale entre l'id 7 et l'id 8 dans ton exemple. En fait, chaque inscription est représentée par une image. Tu vois ?

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    dans la base de donner je ne c'est pas s'il est possible de faire un enregistrement la où tu veux

    avec ma m'ethode tu risque d'avoir dans ta base
    1,2,4,5,3,6,8,7

    mais lorsque tu fais ton affichage tu fait order by id est tu obtien
    1,2,3,4,5,6,7,8

    cela te convient??

  8. #8
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    En fait pour le code rien de bien compliqué le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
    include "configuration.php";
    ?>
     
    <form action="ajouter_membre_2.php" method="post" enctype="multipart/form-data">
     
    	<table border="0">
    	<tr>
    		<td colspan="2" align="center">Ajouter un membre !  </td>
    	</tr>
    	<tr>
    		<td>pseudo</td>
    		<td><input type="text" name="pseudo" size="25" value="<? echo "$pseudo"; ?>"></td>
    	</tr>
    	<tr>
    		<td>nom</td>
    		<td><input type="text" name="nom" size="25" value="<? echo "$nom"; ?>"></td>
    	</tr>
             <tr>
    		<td>...</td>
    		<td>...</td>
    	</tr>
             <tr>
    		<td colspan="2"><input type="submit" value="Envoyer!"></td>
    	</tr>
    	</table>
     
    	</form>
     
    <?php
     
    $query = mysql_query("INSERT INTO parrain (id,parrain) VALUES ('$id','$parrain')");
     
    $query = mysql_query("INSERT INTO $membre (id,pseudo,nom,prenom,spec,photoarticle,url,email,cat) VALUES ('$id','$pseudo','$nom','$prenom','$spec','$largefile','$url','$email','$cat')");
     
    ?>

  9. #9
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    oui ça me convient !

  10. #10
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Si j'ai bien compris ton algo teen il y aura toujours des trous dans les id à chaque suppression (vu que c'est à l'insertion que tu regardes les id), Angelik tu disais vouloir éviter cela justement et TOUJOURS avoir une suite valide en base, c'est pas ça

  11. #11
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    dans se cas aten un peut je vois comment te modifier sa et je te tien au courent tres vite

    a+

  12. #12
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Coucou Amara !

    En fait la suite en base m'importe moins au final si l'on peut afficher les images par id sur ma page avec group by id afin d'éviter les trous effectivement et qu'une fois l'id 20 supprimé par exemple celui-ci (l'id 20) puisse être réutilisé... Dans mon cas, l'id 20, une fois supprimé de ma base, est ré-inutilisable (je doute que cela se dise comme ça mais je pense que tu as compris le sens...lol)

    EDIT : ORDER BY en GROUP BY

  13. #13
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    oui il va y avoir un trou mais ce dernier ce renplira automatiquement a chaque nouvelle insersion
    contenu table1:1,2,3,4,5,6,7,8,9,10

    tu suprime par exemple :3,5,7

    nouveau contenu de table1:1,2,4,6,8,9,10
    contenu de la table poubelle:3,5,7

    lors de l'ajout tu vien voir si la table poubelle est vide et la se n'est pas le cas donc tu pren la valeur la plus petite(3)

    nouveau contenu de la table1:1,2,3,4,6,8,9,10
    nouveau contenu de la table poubelle :5,7

    il y aura un trous dans la chaine tansque le nombre de supression sera superieur au nombre d'ajout

    peut-tu me filler tous ton code que je voi comment tu recupaire tes different chant et j'orai besoin que tu me donne le script de ta table qui existe deja stp

  14. #14
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    si ton champ est en auto increment c normal , car la base garde en memoire la position du dernier id utilisé !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  15. #15
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    En virant l'auto_increment >> l'id de l'inscription suivante est égal à ... 0

  16. #16
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    en virant l auto increment il faut mettre l id a la main .... donc recupere le plus gros id et incrementer de 1 ou chercher un trou et le combler !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  17. #17
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    En fait lors de l'inscription, un mail est automatiquement envoyé sur lequel est indiqué le numéro d'inscription (id)

    Donc si je modifie manuellement l'id par la suite afin de combler les éventuels et inévitables "trous" je fausse ma donne puisque l'email sera déjà envoyé ... tu vois ?

  18. #18
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 360
    Par défaut
    sinon tu doit pouvoir avoir se que tu veut de maniere tres simple sana faire une nouvelle table

    en theorie sa doit marcher

    je t'explique

    on pren pour exemple le contenu de ta table
    1,2,3,5,6,7

    tu fait un tableau qui stock tous tes id par ordre groissant
    $requette=select id from ta_table order by id

    ton tableau est egal donc a ceci
    tab[0]=1
    tab[1]=2
    tab[2]=3
    tab[3]=5
    tab[4]=6
    tab[5]=7

    tu fait un while pour parcourir le tableau et un if qui verifi chaque valeur
    i=0
    trouver=false
    while (i<nb_id et trouvai!=true)
    {
    if (i+1 <tab[i])
    {
    id=i+1
    trouver=true
    }
    }

    a tu comprit??

  19. #19
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Citation Envoyé par Angelik
    En fait lors de l'inscription, un mail est automatiquement envoyé sur lequel est indiqué le numéro d'inscription (id)

    Donc si je modifie manuellement l'id par la suite afin de combler les éventuels et inévitables "trous" je fausse ma donne puisque l'email sera déjà envoyé ... tu vois ?
    je vois , rien ne t empeche de verifier et de reserver un id avant de mailer la personne !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  20. #20
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Oui là aussi je comprends l'ID (idée ) teen6517

    et concrètement ? (loin de moi la pensée de vouloir abuser ... )

Discussions similaires

  1. [VB6] [Interface] Redimensionnement automatique
    Par ychalan dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2002, 18h32
  2. BDE : Configurer automatiquement le NETDIR
    Par Harry dans le forum Paradox
    Réponses: 10
    Dernier message: 29/07/2002, 11h33
  3. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19
  4. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo