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 :

Champs autoincrémenté non numérique


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Points : 18
    Points
    18
    Par défaut Champs autoincrémenté non numérique
    Bonjour,

    Je suis débutant en php, j'ai quelques difficultés à modéliser mes besoins.
    voilà, j'ai une table intervention avec les champs suivants:

    id, dossier, etat_dossier(ouvert,clos,en attente),intervenant, probleme, solution.

    le champs dossier, je veux qu'il soit autoincrémenté mais de cette sorte :
    'D001' ,'D002',...
    Pour que je puisse l'utiliser comme référence lors de recherche du dossier.

    Je ne veux pas utiliser l'id car si je dois changer l'etat du dossier, je veux garder dans ma base une trace de l'ancien enregistrement. comme ca je peux faire des statistiques sur le nombre de dossier suivant leur état.

    Pourriez-vous m'éclairer sur une façon de procéder ?

    Merci

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Salut,

    Tu as ta table dont tu peux connaître le nombre d'enregistrement (soit en php, soit en sql) ....

    Lors de ton INSERT INTO, à la valeur du dossier tu concaténes le 'D' avec le nombre en cours par ex.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Fench Voir le message
    Salut,

    Tu as ta table dont tu peux connaître le nombre d'enregistrement (soit en php, soit en sql) ....

    Lors de ton INSERT INTO, à la valeur du dossier tu concaténes le 'D' avec le nombre en cours par ex.
    Si j'ai bien compris , il me suffit de prendre la valeur de mon id et dy concatener la chaine 'D00' au début à chaque nouvel enregistrement ?

    Cependant, ca va me créer un probleme.
    pour le dossier 001 -> id=1
    dossier 002 -> id=2

    moi je veux séparer l'incrémentation de l'id de celle du dossier.

    un dossier D001 n'est pas unique dans ma table
    il peut apparaitre plusieurs fois dans ma table suivant son état
    donc je peux avoir

    id=1 D001 (etat ouvert)

    id=12 D001 (etat en attente)

    id= 15 D001 (etat clos)

    J'espère avoir été clair sur ce que je souhaite obtenir.

    Merci de ton aide

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Non, non

    J'ai dis en fonction du nombre d'enregistrements dans la table lors de la création:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $result = mysql_query("SELECT * FROM table1", $connection);
    $num_rows = mysql_num_rows($result);
    par ex (sinon ya aussi le SELECT COUNT ...)
    Ensuite tu concaténes D avec $num_rows, cela te donneras un dossier unique puisqu'il n'y a pas de suppression de dossier dans ta table

    Pour les états maintenant, c'est un autre traitement

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Fench Voir le message
    Non, non

    J'ai dis en fonction du nombre d'enregistrements dans la table lors de la création:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $result = mysql_query("SELECT * FROM table1", $connection);
    $num_rows = mysql_num_rows($result);
    par ex (sinon ya aussi le SELECT COUNT ...)
    Ensuite tu concaténes D avec $num_rows, cela te donneras un dossier unique puisqu'il n'y a pas de suppression de dossier dans ta table

    Pour les états maintenant, c'est un autre traitement
    Je ne suis pas sur d'avoir compris.
    Supposons que j'ai 6 enreg. sur ma table

    id dossier etat ....
    1 D001 open
    2 D001 attente
    3 D002 open
    4 D003 open
    5 D001 clos
    6 D004 open

    Comment faire pour enregistrer la valeur du dossier dans la base ?
    Comment faire pour ajouter un nouveau dossier en sachant le dernier numéro

    Désolé de vous embêter

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    En fait:

    L'état du dossier est pour moi un champ contenant les trois états possibles (je ne vois pas pourquoi faire trois enregistrements pour les trois états successifs du dossier).

    Pour toi, il vaudrait mieux faire sur la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COUNT(DISTINCT dossier) FROM table1
    Requête qui compte le nombre de dossier distinct

    Puis tu concaténes

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Fench Voir le message
    En fait:

    L'état du dossier est pour moi un champ contenant les trois états possibles (je ne vois pas pourquoi faire trois enregistrements pour les trois états successifs du dossier).

    Pour toi, il vaudrait mieux faire sur la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT COUNT(DISTINCT dossier) FROM table1
    Requête qui compte le nombre de dossier distinct

    Puis tu concaténes
    Je n'avais pas vu lee problème de cet angle. Merci pour cet eclairage


    En fait le but d'avoir les enregistrements de tous les etats.
    C'est pour pouvoir faire des recherches sur les dossiers qui sont toujours en attente et pouvoir faire des calculs entre le temps d'ouverture du dossier jusquau moment de sa fermeture.

    Donc la notion de N° de dossier est importante, pour moi
    pour facilement trouver un dossier non clos ou voir les réouvrir pour le modifier

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Franchement, vue la structure de ta table (les champs) avec des textarea sûrement.

    Je créerais deux champs en plus, date_ouverture, date_fermeture ET un champ statut prenant les valeurs (ouvert, encours, fermé)

    QUE de recopier 3 fois la même chose


  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 43
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Fench Voir le message
    Franchement, vue la structure de ta table (les champs) avec des textarea sûrement.

    Je créerais deux champs en plus, date_ouverture, date_fermeture ET un champ statut prenant les valeurs (ouvert, encours, fermé)

    QUE de recopier 3 fois la même chose

    Je crois qu'il ya un malentendu. Y a beaucoup de champs dans ma table comme la date, le statut du dossier(clos, ouvert, en attente).

    Mon seul souci concerne justement le champ dossier et son remplissage automatique.

    vu que l'utilisateur n'a pas à le saisir, il doit etre genere automatiquement sauf que je ne veux pas qu'il le soit de facon non numérique comme D001 par ex

  10. #10
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Very désolé j'ai pas tout compris

    Dans ce cas tu fais la requête du COUNT non !

Discussions similaires

  1. Passer un champ autoincrémenté en non incrémenté
    Par soazig dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/07/2009, 19h34
  2. [Oracle] Champ soit disant non numérique
    Par akrogames dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/05/2008, 09h12
  3. [FORMS] Champ image non basé
    Par macharius dans le forum Forms
    Réponses: 5
    Dernier message: 08/03/2005, 17h04
  4. Réponses: 2
    Dernier message: 30/11/2004, 09h42

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