IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Nouveau n° ID différent [Résolu], Créer une location avec ID différent d'un nbre d'une autre t
Options
Mayol
posté 15 Oct 2020, 16:39
Message #1


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Bonjour à tous.
Une autre demande d’aide en php d’un vieux de la vieille (69 ans) qui s’efforce d’entretenir ses méninges.
Bien sûr, respectant les membres de MacBidouille, j’ai d’abord cherché une solution avec l’aide d’internet mais pas de réponse satisfaisante et précise.
Donc voilà la situation :
Une table nommée ‘locations’
Des tables (une vingtaine) contenant des renseignements et historiques (genre historique des quittances de l’année) concernant les locations.
Dans ces tables, les différentes locations sont identifiées par leur id de la table ‘locations’ dans une colonne (rubrique) appelée id_location.
J’ai regroupé dans une table ‘id_ne_pas_prendre’ tous les id_locations des autres tables.
Quand je crée une nouvelle location, je ne veux pas que son id soit le même qu’un id_location contenu dans cette table ‘id_ne_pas_prendre’.
J’espère avoir été clair.
Donc, je n’y arrive pas. Une bonne âme peut-elle m’aider ?
Merci d’avance.

Ce message a été modifié par Mayol - 17 Oct 2020, 08:05.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
schlum
posté 15 Oct 2020, 23:52
Message #2


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 330
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



Non, ce n'est pas très clair… table = tableau (array) ou table de base de données (MySQL?)

Pourquoi une vingtaine d'objets ? il est rare de travailler avec autant de structures de données différentes, il y a peut-être un problème de conception quelque part.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Mayol
posté 16 Oct 2020, 09:13
Message #3


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Bonjour schlum.
1- Pardon, c’est une table de base de données (MySQL).
2- Ce sont des données dans des tables qui sont utilisées dans un autre « programme » pour une petite compta :
anc_nouv_virements_loyers
attestations_assurance (fournie ou pas)
ordures_menageres
historique_factures (eau si sous-compteur)
historique_quittances
Etc …
En fait c’est un projet que j’ai commencé en 2006 (souvent aidé par MacBidouille, d’ailleurs)
Et fait des rajouts constamment.
Ne me dit pas qu’il faut que je reprenne tout à zéro.
Merci pour m’avoir répondu.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
schlum
posté 16 Oct 2020, 10:19
Message #4


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 330
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



Pourquoi l'id de ta table "locations" n'est pas simplement un ID auto-incrémenté ?

https://dev.mysql.com/doc/refman/8.0/en/exa...-increment.html

Avoir des tables du genre "id_ne_pas_prendre" n'est pas quelque chose qui se fait habituellement en bases de données.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Mayol
posté 16 Oct 2020, 10:50
Message #5


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Il l’est.
Mais je supprime cette location, son id disparait dans la table locations, mais est conservé en genre historique dans les autres tables sous id_location
Je crée une nouvelle location, elle risque d’avoir le même id que l’ancienne (ou une autre ancienne) et je me retrouve dans mes tables genre historiques avec un même id_location 2 fois.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
schlum
posté 16 Oct 2020, 11:06
Message #6


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 330
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



Non, une clé auto-incrémentée ne reprend jamais la même valeur que celle d'un champ supprimé, ou alors il y a un gros problème de configuration !

Après pour obtenir un ID différent de tous les nombres contenus dans une table, il est possible de faire une requête "SELECT MAX(id)+1 FROM table", mais ici c'est très coûteux et prise de tête pour un problème classique simple.


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Mayol
posté 16 Oct 2020, 13:23
Message #7


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Tu es en train de me dire que si je supprime une location, que j’en crée une nouvelle bien après, il est impossible que la nouvelle ait le même id que celle supprimée ?
Même après plusieurs années, après des successions de créations et suppressions de locations dans cette table ?
Mais où est donc cette mémoire de ……………. mysql ?


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
Jaypee
posté 16 Oct 2020, 13:43
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 435
Inscrit : 29 Aug 2002
Membre no 3 340



Les Anglo-saxons disent "on ne peut pas manger son cookie, et l'avoir dans sa poche", nous on dit "on peut pas avoir le beurre et l'argent du beurre", sans parler du sourire de la fermière...

Soit une location est supprimée et elle l'est dans toutes les tables liées, plus d'historique.
Soit on ne supprime rien, mais on ajoute une colonne "Statut" de type booléen, ou énuméré {Actif | Inactif}, et une date de l'événement. On ne supprime pas une location, on la désactive. la base de données ne fait que grossir, il faut des traitements intelligents en batch qui vont estimer si une location qui a été désactivée doit être finalement supprimée au bout de x jours/mois/années, avec tous ses liens bien sûr. On oublie pas immédiatement, mais avec le temps... tout s'en va.

JP
PS : Pour rappel, MySQL est un produit commercial, propriété d'Oracle, soumis à licence, ce n'est pas un SGBD libre. MariaDB est le clone resté libre.

Ce message a été modifié par Jaypee - 16 Oct 2020, 13:47.
Go to the top of the page
 
+Quote Post
Mayol
posté 16 Oct 2020, 13:59
Message #9


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Bon, j’ai compris.
Donc je continue comme avant (je pensais qu’il existait plus, comment dire, simple ou pro…
Je capte tous les id_location existant dans toutes mes tables
Je les mets dans cette table « id_locations_a_ne_pas_prendre »
Quand je crée une nouvelle location, je capte le + grand « id_location_a_ne_pas_prendre », je rajoute 1 et j’en fait le nouvel id de ma nulle location.
Merci pour tout et le rappel concernant la propriété de MySQL.


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
schlum
posté 16 Oct 2020, 14:04
Message #10


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 330
Inscrit : 25 Oct 2002
Lieu : Sceaux (92)
Membre no 4 319



Citation (Mayol @ 16 Oct 2020, 14:23) *
Tu es en train de me dire que si je supprime une location, que j’en crée une nouvelle bien après, il est impossible que la nouvelle ait le même id que celle supprimée ?
Même après plusieurs années, après des successions de créations et suppressions de locations dans cette table ?
Mais où est donc cette mémoire de ……………. mysql ?


Sur une clé auto-incrémentée, oui ; pas besoin d'une mémoire extraordinaire, la table retient juste un entier qui est incrémenté à chaque nouvelle insertion.


La table des posts, celle des sujets, celle des membres de ce forum fonctionnent toutes sur ce principe ; heureusement, sinon c'est ingérable ^^


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
Mayol
posté 16 Oct 2020, 14:44
Message #11


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 1 017
Inscrit : 7 Sep 2003
Lieu : Monsempron-Libos (47)
Membre no 9 439



Ok ! Tout pigé.
Merci les gars. A moi de jouer...


--------------------
iMac 27" (Mojave 10.14.1) - PowerMac G4-1.250 Ghz Bi (Tiger-Pour Classic- & Leopard) - IMac G5 20"-2 Ghz (Tiger-Pour Classic- & Leopard)- IMac G5 Intel Core i5 27"-2.66GHz (Snow Leopard [10.6.7] & Os 9.03 [Par SheepShaver]).
Imprimantes : Epson EPL6100 (Pour les travaux administratifs) - Xanté AW1200 (pour les stabis A3) - Xerox DC12 et Xerox DC242 (Pour la production)
Avez-vous pensé à ce que nous deviendrions sans macbidouille.com ?

Non au langage SMS sur internet !
Go to the top of the page
 
+Quote Post
baron
posté 17 Oct 2020, 01:38
Message #12


Macbidouilleur d'Or !
*****

Groupe : Modérateurs
Messages : 14 809
Inscrit : 22 Jul 2004
Lieu : Louvain-la-Neuve (Gaule Gelbique)
Membre no 21 291



Pour moi qui ne parle pas « programmation » mais juste bien français, auto incrémentée était assez parlant, merci. sleep.gif


--------------------
MacBook Pro 15’’ mi-2010 Core i5 2,53 GHz, 4 Go/SSD Samsung 850EVO 500 Go – Mac OSX 10.6.8  Power Macintosh G3 beige de bureau, rev.1 @ 233MHz, 288 Mo/4Go – MacOS 9.1 — + carte PCI IDE/ATA Tempo 66 Acard 6260 avec HD interne Maxtor 80 Go + graveur interne CDRW/DVD LG GCC-4520B + tablette A4 Wacom UD-0608-A + LaCie ElectronBlueIV 19" + HP ScanJet 6100C   Routeur/modem ADSL Trendnet TW100-BRM504 > B-Box 3 + HP LaserJet 4000 N  
La recherche dans MacBidouille vous paraît obscure ? J'ai rédigé une proposition de FAQ. Le moteur logiciel a un peu changé depuis mais ça peut aider quand même.
Les corsaires mettent en berne…
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th October 2020 - 07:47