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 :

Identifiant autoincrémenté


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 201
    Par défaut Identifiant autoincrémenté
    Bonsoir à tous, et surtout bonne année.

    Bon je viens vous voir pour une question, voila j'ai une table ayant un id auto incrémenter , un champ titre, un champ date, et un champ url_img.

    Quand je fais un enregistrement dans cette table, je crèè en meme temps sur le serveur un dossier ayant comme nom l'id de l'enregistrement, et je stock le chemin de se repertoire dans le champ url_img.

    Tout fonctionne très bien, puisque avant l'insertion et l'upload, je recupère l'id max contenu dans la bdd pour determiner le nom du repertoire et du chemin.

    j'utilise SELECT Max() en sql pour recupere l'id maximal.

    Le probleme est du moment ou je supprime une ligne d'enregistrement dans la bdd, supposons que je supprime la dernière ligne ayant comme id 18.

    Lors du nouveau enregistrement, il va me semectionner comme id le plus fort 17, je vais crée alors mon dossier au nom de 17, stocker dans la bdd le chamin avec l'id 17, alors quen vrai l'id de la ligne enregistrer sera de 19, puisque le 18 a exister dans le passé, et a été supprimer , mysql ne fais pas la différence.

    Je me tourne vrs vous pour savoir si il y a une solution pour palier a ce prb, et si oui comment vous faites.

    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Tu sélectionnes les id en ordre décroissant :')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM table_tbl ORDER BY id DESC LIMIT 0,1
    Ceci va te selectionner l'id le plus grand de ta table.

  3. #3
    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
    Citation Envoyé par SpiritOfDoc
    Tu sélectionnes les id en ordre décroissant :')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id FROM table_tbl ORDER BY id DESC LIMIT 0,1
    Ceci va te selectionner l'id le plus grand de ta table.
    C'est déjà ce qu'il fait mais le problème est ailleurs...

    Par contre est-ce envisageable de faire d'abord ton INSERT en table, puis de récupérer l'id de l'enregistrement ajouté avec mysql_insert_id afin de créer ensuite ton dossier ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Par défaut
    Citation Envoyé par JWhite
    Par contre est-ce envisageable de faire d'abord ton INSERT en table, puis de récupérer l'id de l'enregistrement ajouté avec mysql_insert_id afin de créer ensuite ton dossier ?
    Ce qu'il dit ici :
    Quand je fais un enregistrement dans cette table, je crèè en meme temps sur le serveur un dossier ayant comme nom l'id de l'enregistrement, et je stock le chemin de se repertoire dans le champ url_img.
    Montre qu'il fait la requête et qu'il créait le dossier en conséquence ... enfin c'est ce que j'ai compris :')
    Donc il peut très bien changer de place sa requête, et par conséquent nos trois requête fonctionne

  5. #5
    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
    Citation Envoyé par SpiritOfDoc
    Ce qu'il dit ici :

    Montre qu'il fait la requête et qu'il créait le dossier en conséquence ... enfin en français ça donne ça.
    Y'en a qui devraient songer à aller dormir vu les posts de ce soir enfin moi je dis ça...


    Tout fonctionne très bien, puisque avant l'insertion et l'upload, je recupère l'id max contenu dans la bdd pour determiner le nom du repertoire et du chemin.
    En inversant la démarche comme je le suggère tout devrait se passer plus facilement, encore faut il que cela soit techniquement possible avec les contraintes qu'il a.

Discussions similaires

  1. identifiant d'une classe autoincrément
    Par osman.amine dans le forum W4 Express
    Réponses: 3
    Dernier message: 02/12/2011, 10h11
  2. Comment récupérer l'identifiant autoincrémenté ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/01/2010, 10h37
  3. [MySQL] Insérer des données avec identifiant autoincrémenté
    Par jrosenzw dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/04/2009, 15h36
  4. identifiant non autoincrementé
    Par hermine dans le forum ASP.NET
    Réponses: 21
    Dernier message: 11/07/2007, 14h11
  5. [JPOX]Problèmes avec un identifiant autoincrement
    Par Vikisme dans le forum Persistance des données
    Réponses: 1
    Dernier message: 29/05/2007, 15h44

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