login  Naam:   Wachtwoord: 
Registreer je!
 Forum

id meesturen

Offline lau - 01/07/2006 17:09
Avatar van lauHTML interesse Mijn probleem:
Ik heb nu 3 tabellen: product, specifiek en onderdeel.
Een aantal gegevens worden toegevoegd in tabel product. Elk product heeft een aantal specifieken met gegevens. Normaal gesproken zal je dus die specifieken gewoon bij product tabel toevoegen, maar omdat elk parent meerdere childs bevat (dus een product kan meerdere specifieken hebben) moet ik dus een nieuwe tabel maken die alle specifieken opvangt, waarbij specifiek.product gelinkt wordt met product.id.
En dan nu onderdeel. Elk specifiek kan meerdere onderdelen bevatten, zelfde parent-childs verhaal. Elk onderdeel.specifiek wordt gelinkt met specifiek.id.

Maar nu het volgende. De product/specifieken/onderdelen-gegevens worden allemaal uit 1 invoerpagina ingevoerd met meerdere queries.
Maar hoe geef ik product van tabel specifiek een ID mee van tabel product?
Idem voor specifiek van tabel onderdeel een ID meegeven van tabel specifiek....

8 antwoorden

Gesponsorde links
Offline Ibrahim - 01/07/2006 17:21 (laatste wijziging 01/07/2006 17:22)
Avatar van Ibrahim PHP expert waarom zou producten tabel een specifiek id moeten hebben ?

even een klein voorbeeld gemaakt.

  1. tabel producten:
  2. ============
  3. - id
  4. - productnaam
  5. ---------------
  6.  
  7. tabel specifiek:
  8. ===========
  9. - id
  10. - specifieken
  11. - product_id



  1. <?php
  2. if( $_SERVER['REQUEST_METHOD'] == 'POST' )
  3. {
  4. $insertIntoProduct = mysql_query("inserten") or die(mysql_error());
  5.  
  6. $selectProductID = mysql_query("SELECT id FROM producten WHERE productnaam = '". $_POST['naam'] ."'") or die(mysql_error());
  7.  
  8. $fetchProductID = mysql_fetch_assoc( $selectProductID );
  9.  
  10. $insertIntoSpecifiek = mysql_query("INSERT INTO specifiek (ding1, ding2, product_id) VALUES('ding1', 'ding2', '". $fetchProductID['id']."')") or die(mysql_error());
  11. }
  12. else
  13. {
  14. // weergeef formulier
  15. }
  16. ?>
Offline lau - 01/07/2006 22:08
Avatar van lau HTML interesse Zoiets heb ik ook aangedacht, maar dat kan niet.
Er kunnen namelijk meerdere insert tegenlijk plaatsvinden met dezelfde naam, omdat ik een soort van kopieer methode heb toegepast op de site voor producten (zodat de eigenaar niet telkens BIJNA dezelfde gegevens in te vullen als er maar 1 veld gewijzigd moet worden).

Bij het productenveld kan men dus meerdere categoriën kiezen die voor DAT product passen. Het is eigenlijk heel complex, onder een sterk verkort stukje van mijn constructie:
  1. tabel categorie:
  2. ============
  3. - id
  4. - menunaam
  5. ---------------
  6.  
  7. tabel producten:
  8. ============
  9. - id
  10. - productnaam
  11. - categorie_id ---> link met meerdere categoriën met dezelfde productnaam
  12. ---------------
  13.  
  14. tabel specifiek:
  15. ===========
  16. - id
  17. - specifieken
  18. - product_id
  19.  
  20. tabel onderdeel:
  21. ============
  22. - id
  23. - ond_naam
  24. - specifiek_id
  25. ---------------

Eigenlijk zijn er zeg maar 5 lagen tot het einde: groep, categorie, product, specifiek, onderdeel. Een bezoeker ziet echter maar 3 lagen: categorie, product, specifiek+onderdeel. Maar die 5 lagen is nodig voor het site beheren van/voor de eigenaar.

Helaas werkt jouw methode niet voor mij...
Offline Ibrahim - 01/07/2006 22:56 (laatste wijziging 01/07/2006 22:57)
Avatar van Ibrahim PHP expert leg eens uit ik snap niet echt wat je bedoelt met kopier methode...?

als meerdere namen mogelijk zijn, gebruik je toch een andere veld ?
Offline lau - 01/07/2006 23:54
Avatar van lau HTML interesse Ok... je vult in een invoerformulier de gegevens van een product in met daarbij 1 of meerdere specifieken waaronder 1 of meerdere onderdelen vallen (dus zeg maar 1 parent kan meerdere childs bevatten, zowel voor specifieken en onderdelen).

Afijn, een product moet aan een categorie hangen dat je moet kiezen OOK op dat invoerformulier. Maar je mag ook 2 categoriën kiezen of zelfs 3 of meer (hangt van dat product af). Dus je voert je insert-query 1x, 2x, 3x of meer keren uit (hangt af hoeveel categoriën je kiest). Wat je invoert is identiek, BEHALVE id (dat telkens automatisch oploopt met auto_increment).
Daarom zal jouw methode niet werken, omdat elk id dan zelfde productnaam krijgt.
Dus echt ALLEEN id is verschillend. Daarom probeer ik ook een id mee te sturen bij dat eerste insert.
Offline Gerard - 02/07/2006 02:09
Avatar van Gerard Ouwe rakker Benader het eens vanuit een andere positie:
http://prx.nl.e...schema.jpg
Offline lau - 02/07/2006 12:00
Avatar van lau HTML interesse Dat doet ´em proximus... thanks.
Dit levert geen problemen op bij meerdere producten invoer door bijvoorbeeld 5 mensen tegenlijk?
Offline Gerard - 02/07/2006 13:48
Avatar van Gerard Ouwe rakker de kans dat tijden het opvragen van de mysql_insert_id() jij het id krijgt van de invoer van een ander is zooo klein dat je deze gewoon kan negeren.
Offline lau - 02/07/2006 15:07
Avatar van lau HTML interesse Ok.. dat stelt mij gerust 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.214s