Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 08/03/2010, 16h57   #1
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 250
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 250
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
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

Citation:
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 :

Citation:
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:

Citation:
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

Dernière modification par xunil2003 ; 08/03/2010 à 17h07.
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 17h17   #2
Rédacteur
 
Julien Itard
Étudiant
Inscription : août 2009
Messages : 130
Détails du profil
Informations personnelles :
Nom : Julien Itard
Âge : 20
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2009
Messages : 130
Points : 377
Points : 377
Envoyer un message via MSN à ritter jack
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 ^^
ritter jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 17h25   #3
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 250
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 250
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
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
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 17h42   #4
Rédacteur
 
Julien Itard
Étudiant
Inscription : août 2009
Messages : 130
Détails du profil
Informations personnelles :
Nom : Julien Itard
Âge : 20
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2009
Messages : 130
Points : 377
Points : 377
Envoyer un message via MSN à ritter jack
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.
ritter jack est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 18h40   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 242
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 242
Points : 2 595
Points : 2 595
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.

__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Dernière modification par RunCodePhp ; 08/03/2010 à 19h02.
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 20h37   #6
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 250
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2008
Messages : 250
Points : 29
Points : 29
Envoyer un message via MSN à xunil2003
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.

Dernière modification par xunil2003 ; 08/03/2010 à 20h48.
xunil2003 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2010, 21h51   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
La limite est 4294967295 pour INT et 18446744073709551615 pour BIGINT.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 05h39   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 242
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 242
Points : 2 595
Points : 2 595
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
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Dernière modification par RunCodePhp ; 09/03/2010 à 05h49.
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 08h20   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut mettre ton champ en "unsigned"
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2010, 08h57   #10
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 242
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 242
Points : 2 595
Points : 2 595
Citation:
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
__________________
Win XP | WampServer 2.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h09.


 
 
 
 
Partenaires

Hébergement Web