Se connecter / S'enregistrer
Votre question

auto_increment dans PhpMyAdmin

Tags :
  • Programmation
Dernière réponse : dans Programmation
10 Avril 2006 16:29:55

Bonjour.

Voila g un probleme ss phpmyadmin.
G créé 2 tables, avec chacune comme clé primaire un numéro en auto_increment.
Le pb , c kil ne commencent pas a partir de 1 et kil ne sont pas les meme dans les 2 tables.
Or g besoin de faire des jointures ensuite en disant que numconc = numpres mais elles n'ont aucun numéro en commun.

Comment faire?

Autres pages sur : auto increment phpmyadmin

10 Avril 2006 16:31:35

Citation :
Bonjour.

Voila g un probleme ss phpmyadmin.
G créé 2 tables, avec chacune comme clé primaire un numéro en auto_increment.
Le pb , c kil ne commencent pas a partir de 1 et kil ne sont pas les meme dans les 2 tables.
Or g besoin de faire des jointures ensuite en disant que numconc = numpres mais elles n'ont aucun numéro en commun.

Comment faire?


Salut, rien compris. Tu peux nous réexpliquer en Français? (et pas sms)
10 Avril 2006 16:36:39

J'ai deux tables (ensuite j'en aurai d'autres qui auront le même principe).
Chacune a pour clé primaire un numéro en auto_increment.
Mais pour l'une ce numéro commence a 835 et l'autre 1200 (environ).
Je voudrais que pour chacune des tables, ce numéro commence à 1.

Est-ce plus clair?
Contenus similaires
10 Avril 2006 16:49:14

Et ben c'est pas compliqué. Tu ne met pas de valeur pour ton champs en auto_increment. Ils commenceront d'eux même par la valeur 1.
11 Avril 2006 09:22:40

Justement c'est ce que j'ai fait:
- dans la définition de la table, j'ai mis auto_increment sans valeur par défaut,
-dans mes "insert into", il n'y a aucune valeur pour ces numéros.

Est-ce que cela viendrait du fait que j'ai effacé plusieurs fois mes tables et que je les ai recréées par la suite, et que le numéro se "souvient " de là où il était arreté dans la table précédente et qu'il recommence à partir de là?
Dans ce cas, est-ce que cela veut dire qu'il faut qur je recommence ma base de données en entier???
11 Avril 2006 09:26:52

Eh oui, c'est le plus gros probleme de l'auto_increment.

Pour contourner le probleme, il te suffit de gérer ton champs avec ton propre code PHP et non avec l'auto_increment.
11 Avril 2006 09:34:48

:crying:

Je débute en Php, peux-tu me dire où on met le code et quel genre de code est-ce?

Merci beaucoup.
11 Avril 2006 12:25:09

Tant pis, j'ai refait entièrement ma base de données!
C pas très pratique quand même!! :-?
12 Avril 2006 13:06:37

ouais pareil j'ai du mal à saisir ton problème à part que tu as des soucis avec le auto increment... Mais les auto increment ça peut être vite chiant... Ensuite si il ne part pas a 1 c'est parce que il garde en memoire le dernier numéro inséré (il ne gere pas la dépile). Donc si tu regarde le code sql qui te génére il doit avoir cette information.... J'utilise pas easyphp donc je peux pas etre precis mais si t'es un minimum curieux tu devrais trouver

Par contre je comprend pas comment tu gères ta BD et notamment sur tes jointures :confused:
12 Avril 2006 13:41:25

Salut,

Effectivement ta relation entité n'est pas bien gerer, mm tres mal..

Mais pour rester dans ta logique tu peux dans ta premiere table laisser l'auto_increment, puis dans la seconde tu vas inserer toi mm l'indice.

Facile tu utilises la fonction "mysql_insert_id" qui te donne le dernier identifiant generer part Mysql qui dans ton cas devrait etre l'auto_icrement de ta premiere table.


Cordialement S62.
12 Avril 2006 13:42:40

En fait, ces numéros en auto-increment me servent juste de clé primaire dans 3 de mes tables.
La quatrième est ma table "principale", son identifiant est un numéro que j'ai insérer.
Ce numéro doit servir de clé étrangère dans les autres tables.
Mais je n'arrive pas à créer de clés étrangères!

SVP aidez moi, c urgent!!

Merc. :-)
12 Avril 2006 13:48:32

Alter table nom_table constraint nom_contrainte FOREIGN KEY Champ
REFERENCES Table_Pointée(Champ_Clé_Primaire)

aide
12 Avril 2006 13:52:11

Personnelement, je n'utilise jamais les auto_increment, dans mon code, je récupere l'ID le plus grand de la table, j'ajoute 1 et voila un auto increment perso qui fonctionne très bien, on pourrait pousser encore plus loin en décalant tous les ID a chaque supression pour ne pas avoir d'ID inutilisés mais la ça devient unn peu compilqué.
12 Avril 2006 13:55:50

oui parce que si tu mets a jour tes clés primaires faut bien entendu faire attention aux références pour tant qu'a faire garder l'intégrité de ta base lol... Donc les triggers semblent être une solution, mais la version de mysql de easyphp 1.8 ne gere pas les triggers..
12 Avril 2006 14:24:18

Citation :

imer a écrit :
Alter table nom_table constraint nom_contrainte FOREIGN KEY Champ
REFERENCES Table_Pointée(Champ_Clé_Primaire)


Je suis vraiment désolée mais pouvez me dire étape par étape ce qu'il faut faire?

1- j'ai ajoutée un champ dans ma table qui est censé être ma clé étrangère;

2- je pense que j'ai ratée des étapes...

3- Quand je fais la requête de création de la clé étrangère il me dit:
#1216 - Impossible d'ajouter un enregistrement fils : une constrainte externe l'emp裨e

Enfin, s'il vous plait, dites moi tout ce qu'il faut faire!

:oops:  :confused:
12 Avril 2006 14:58:39

ouais ok faut refaire des révisions:

Admettons que tu aies deux tables A et B (je prends un exemple de ce que tu veux faire si j'ai bien compris sauf que je ne vais pas prendre tes 4 tables):
A peut accepter 0 à N enregistrements de B
B fait référence à 1 et 1 seul enregistrement de A

Traduction en BD:
A à une clé primaire A1;
B à une clé primaire B1 et une clé étrangére B2 qui fait référence à la clé primaire de la table A

nom_table
-------------
|A|

nom_champ
-------------
|A1|

Données
-------------
|1|
|2|

nom_table
-------------
|B|

nom_champ
-------------
|B1|B2|

Données
-------------
|1|1|
|2|1|
|3|2|

Comme tu peux le voir B2 pointe sur A1, et c'est bien entendu ici qu'il faut que tu respectes l'intégrité des données.... Toi tu veux que t'es clés primaires soient des auto increment (A1, et B1), mais B2 ne sera pas en auto increment et pourtant il faut que les jointures soient bonnes....

D'après ce que j'ai pu comprendre tu recuperes des données mais la je peux m'enflammer encore plus que je suis en train de le faire si tu m'en dis pas plus
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS