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 :

Renseignement sur MySql


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut Renseignement sur MySql
    Bonjour,

    Il y a un truc que je ne comprend pas avec ma table MySQL

    Quand j'écrit sur ma table
    Exemple

    id - Article
    ----------
    1 - slip
    2 - chausette
    3 - banane
    et si je supprime 3 - banane et rajoute une entrée a article "pattes" il vas me faire :

    id - Article
    ----------
    1 - slip
    2 - chausette
    4 - Pattes
    Pourquoi m'écrit il pas a la suite, y a un trou ???, pourtant ma table MySql et composé comme suite:

    STRUCTURE
    ------------
    Champ : id
    Type : int(2)
    Interclassement : latin1_swedish_ci
    Attributs :
    Null : Non
    default :
    Extra : auto_increment

    INDEX
    ------
    Nom de l'index : id
    Type : index
    Cardinalité : 3
    Champ : id
    Du coup je demande si c'est moi qui a merdé au niveau de la table.
    Donc ma question est comment faire pour qu'il ecrit a la suite des N° id même avec uns suppression comme je vient de vous faire voir au dessus.

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 130
    Par défaut
    Salut,

    C'est tout à fait normal, tu as l'auto_increment sur l'id. C'est à dire qu'à chaque nouvelle entré ton id augmente de 1.

    Donc quand tu as crée Banane l'id est 3. Tu le supprime mais l'id ne diminue pas de 1. Ton prochain élément aura donc un id de 4 !


    Je sais pas si je suis clair ^^

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    bonsoir,

    Ok c'est claire, mais comment diminuer de 1 alors ? quel sont les possibilités
    Si je comprend bien Mysql ne c'est par le faire de lui même.

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 130
    Par défaut
    Si mysql peut le faire via phpmyadmin mais pas en php à ma connaissance.

    Vous choisissez la table que vous voulez, cliquez sur opération en haut puis vous pouvez modifier l'auto incrément.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    C'est normal, c'est tout l'intérêt du autoincrement, est il n'est (théoriquement) pas souhaitable de redéfinir cet identifiant, sauf si on sait totalement les conséquences qu'il pourrait avoir. Ceci demande de bien connaitre l'ensemble de sa Bdd, et des données qui s'y trouvent.

    Pour cet autoincrement, MySQL garantie à 100% que le nouvel ID sera unique, du coup, elle ne réutilise pas l'ID qui vient d'être supprimé.
    Trop risqué, cet ID (le 3) pourrait très bien ce trouver comme clé étrangère dans une autre table. Dans ce cas, la Bdd ne serait plus intègre, et le code Php basé sur ces données pourraient partir en vrillent. Bug en somme.

    A coté de ça, faut ce dire qu'on s'en fiche un peu, voir totalement (normalement), car ces IDs ne sont là que pour le fonctionnement de la Bdd, pour faire des jointure entre les tables.
    Ce n'est que purement fonctionnel. Il ne faut pas se focaliser la dessus.



    A coté de ça, s'il restait une peau d'banane, c'est p't'être pour ça, non ?
    Fait gaffe, si les slips ne sont pas propre, MySQL n'en voudra pas non plus.


  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Par défaut
    Bonsoir

    Ok RunCodePhp, J'ai lu qu'une bdd vas jusqu'a 50.000 personnes, pour moi l'objectif de la bd et de fait une liste de commission dont les personnes peuvent supprimer les articles avec des cass a cocher et ajouter de nouveau article dans un champ texte qu'il peuvent imprimer par la suite.
    Si les gens n'arret pas de modifier et supprimer des articles dans la table,
    sa vas bloqué à 50.000 em du N° ID.
    Vue que ma table ne contient que id et Article j'utilise l'id par requête pour y supprimer des articles avec des case a cocher sur un tableau html , alors a l'id 50.000 que ce passera t'il ?

    Voila une question qui me préocupe du coup.
    Comment font les autre en general.

    Merci.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La limite est 4294967295 pour INT et 18446744073709551615 pour BIGINT.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par sabotage
    La limite est 4294967295 pour INT et 18446744073709551615 pour BIGINT.
    Et bien vois tu, 50 milles c'est rien, tu est très loin d'atteindre les limites qu'offre MySQL.

    Qu'as tu défini comme nombre pour cet ID ?
    S'il est trop petit, augmente le.


    J'ai fais un petit essai rapidos sur PhpMyAdmin, sur un INT auto_increment.
    Impossible d'aller au-delà de : 2147483647
    Ca représente la moitié de 4294967295 ? Etrange coïncidence
    Ca doit être une question de version, ou de moteur MySQL, un truc dans ces eaux là.
    L'erreur retournée : Warning: #1264 Out of range value for column 'id' at row 1

    Bon, c'est pas bien grave, car avant d'arriver à 2 milliards, faut y aller vachement fort tout de même.

    Et puis, faut en vendre un sacré gros paquet ... de slip

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut mettre ton champ en "unsigned"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Il faut mettre ton champ en "unsigned"
    Effectivement. Je ne le savait pas cependant.

    Ca fait le double de slips à vendre du coup ... la planète entière quoi.
    Le Bill Gates du slip
    J'déconne

Discussions similaires

  1. renseignement sur mysql
    Par manue85 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 09/11/2005, 17h29
  2. Renseignements sur TChart
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/06/2004, 12h48
  3. Renseignement sur TPU Motorola 68332
    Par N*E*R*D dans le forum Autres architectures
    Réponses: 7
    Dernier message: 06/04/2004, 09h57
  4. driver sur mySql
    Par sampq dans le forum Installation
    Réponses: 8
    Dernier message: 19/08/2003, 09h15
  5. possible sur MySQL 4.0 ?
    Par djforest dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/06/2003, 09h49

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