meerdere gevens in mysql tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Menno

menno

05/02/2007 18:29:00
Quote Anchor link
ik ben een systeem aan het scripten en nu moet ik in 1 tabel genaamt vrienden_id een aantal verschillende id's opslaan maar dat moet allemaal in 1 tabel
dit heb je ook bij txt files dat je meerdere dingen in 1 bestand kan opslaan maar kan dat ook met sql?

en hoe moet ik dit dan doen? ik kan nergens een tut vinden of een voorbeeld?

Bedankt ;)
 
PHP hulp

PHP hulp

20/11/2024 01:45:20
 
Bo az

Bo az

05/02/2007 18:34:00
Quote Anchor link
vrienden_id klinkt niet als een tabel maar meer als een veld ?

Ik snap het niet geheel, maar waarschijnlijk heb jij een koppeltabel nodig.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Menno

menno

05/02/2007 18:35:00
Quote Anchor link
sorry ik bedoel een veld
ik dacht dat het tabel heete maar het is een veld sorry
 
Hugo

Hugo

05/02/2007 18:40:00
Quote Anchor link
Waarom wil je precies alles in één veld opslaan?
Je kan PHP de gegevens laten samenvoegen. Je zet dan alles in een variabele en dan zet je die variabele in de database.

Maar ik raad het je niet aan om verschillende (soorten) gegevens in één veld op te slaan.

Geef anders wat meer uitleg en eventueel een voorbeeld. Hoe ziet je tabel eruit?
 
Arjan Kapteijn

Arjan Kapteijn

05/02/2007 18:41:00
Quote Anchor link
Dat zijn gewoon meerdere rijen...
 
Bo az

Bo az

05/02/2007 18:42:00
Quote Anchor link
Ik weet niet precies wat je wil koppelen, maar ik zal even een voorbeeld geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--tabel personen
id | naam
1  | Edgar
2  | Frits

--tabel vrienden
id | naam
1  | klaas
2  | jan
3  | kees

-- tabel koppelvrienden
persoonid | vriendenid
1             | 1
1             | 3
2             | 2


De situatie is nu dat klaas een vriend van edgar is en kees is een vriend van edgar, ook is jan een vriend van Frits.

Ik hoop dat je zo iets bedoelde...
 
Menno

menno

05/02/2007 18:47:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--tabel members
id | naam
1  | Edgar
2  | Frits

--tabel vrienden
id | naam
1  | klaas
2  | jan
3  | kees

-- tabel koppelvrienden
persoonid | vriendenid
1             | 1,2
1             | 3,1,4
2             | 2,5,3



ik heb het schema iets aangepast
dat je dus meer id's in 1 veld opslaat
Gewijzigd op 01/01/1970 01:00:00 door menno
 
Hugo

Hugo

05/02/2007 18:55:00
Quote Anchor link
Gebruik je koppel tabel zo, elke persoonid krijgt een vriendid toegewezen. Een persoonid kan dus meerdere keren voorkomen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
--tabel koppelvrienden
persoonid | vriendid
1          | 1
1          | 2
1          | 3
2          | 2
2          | 3
2          | 5
 
Menno

menno

05/02/2007 18:59:00
Quote Anchor link
maar dan krijg je wel ontzettend veel gegevens, raakt hij dan niet overbelast als er echt super veel mensen dat gaan doen? :P
 
Hugo

Hugo

05/02/2007 19:04:00
Quote Anchor link
Valt wel mee. Op deze manier is het mogelijk om een query uit te voeren waarbij je alle vrienden van een pesoon ophaalt. Of anders om, personen hebben een bepaalde vriend als vriend. Wat je wel moet doen is een PRIMARY sleutel op beide velden aangeven. Het ophalen van gegevens gaat dan sneller.

ShuGos
 
Joren de Wit

Joren de Wit

05/02/2007 19:05:00
Quote Anchor link
Nope, dat is juist de kracht van een database. Hij kan wel miljoenen records opslaan en dan nog is er niets aan de hand.

@Boaz: vrienden zijn toch ook personen? Kortom, de namen die jij nu in de vrienden tabel hebt, kun je gewoon in de personen tabel plaatsen. In de koppeltabel komt dan gewoon twee keer een id uit de personen tabel.
 
Jacco Engel

Jacco Engel

05/02/2007 19:08:00
Quote Anchor link
Het toevoegen is geen probleem neem ik aan?

Je kunt namelijk ,7 (bijv) aan het huidige veld toevoegen en updaten.

Bijv :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
  $query
= "SELECT * FROM koppelvrienden WHERE id=1" ;
  $result = mysql_query($query)
  if (mysql_num_rows>0)
  {

     $rij = mysql_fetch_array($result);
     $rij["vriendid"] .= ",".$extra_id ;
  }

  else
  {
     $rij = mysql_fetch_array($result);
     $rij["vriendid"] .= ",".$extra_id
  }
//hier je update deel.
?>

Voor het uitlezen zou je eens naar de mysql functie IN kunnen kijken
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
 
Joren de Wit

Joren de Wit

05/02/2007 19:11:00
Quote Anchor link
@Jacco: het is dus niet de bedoeling dat er meerdere gegevens in 1 veld opgeslagen worden. Voor elk nieuw gegeven maak je gewoon telkens een nieuw record aan.

Op die manier voorkom je later dat je nog met php bewerkingen op je resulaten uit je database moet gaan uitvoeren. Bovendien zorg je ervoor dat je beschikking houdt over alle krachtige functies die de database jou biedt, iets dat je ondermijnt zodra je met een verkeerd datamodel aan de slag gaat.
 
Jacco Engel

Jacco Engel

05/02/2007 20:00:00
Quote Anchor link
@Blanche

Ik ben niet zo van advies geven. De TS heeft een vraag ik geef een oplossing. Of het dan iets is wat ik zou doen of niet laat ik meestal buiten beschouwing.
 
Joren de Wit

Joren de Wit

05/02/2007 20:51:00
Quote Anchor link
@Jacco: dat vind ik erg onverstandig. Op die manier help je iemand van de wal in de sloot. Dit kleine probleempje mag dan wel opgelost zijn, maar een veel groter probleem dient zich direct aan: een verkeerd datamodel. En misschien dat de TS dat niet direct door heeft, maar op den duur gaat zoiets zeker voor problemen zorgen. Het is een hele klus om alles dan nog te gaan veranderen.

Dus waarom iemand een oplossing geven waarvan je zelf al weet dat het straks nog grotere problemen gaat geven? Nee, kies er dan gewoon voor om meteen te vermelden dat iemand hier de fout in gaat en hem een advies te geven hoe hij/zij het wel aan zou kunnen pakken.
 
Frank -

Frank -

05/02/2007 21:24:00
Quote Anchor link
@Jacco: En ga nu eens een query schrijven waarmee je iedereen opzoekt die een vriend is van gebruiker 7, daar heb je een LIKE voor nodig. Dat wordt leuk wanneer je een flink aantal gebruikers hebt, tegen de tijd dat de query klaar is, ben jij oud en grijs en heb 9 van de 10 vrienden al lang uit het oog verloren!

Dit zijn toch geen oplossingen, of wel dan?

Een database is een database en gebruik die dan ook als database en vooral niet als een filesystem. Zelfs MySQL kan meer dan wat jij hier hebt verzonnen. Niet meer doen dus! ;)
 
Arjan Kapteijn

Arjan Kapteijn

05/02/2007 21:30:00
Quote Anchor link
menno schreef op 05.02.2007 18:59:
maar dan krijg je wel ontzettend veel gegevens, raakt hij dan niet overbelast als er echt super veel mensen dat gaan doen? :P


Juist niet, het is zelfs velen malen sneller dan jou voorbeeld. Stel dat jij 1000 leden heb die iedere 25 vrienden toegevoegd hebben. Dat zijn 2500 rijen. Toch haalt hij maar maximaal 25 vrienden op, en geen 2500...

Daarbij, Data Warehouses, 1+ Terabyte, enkele miljarden rijen, allemaal geen probleem zolang je geen SELECT * FROM uit gaat voeren...
 
Menno

menno

05/02/2007 21:33:00
Quote Anchor link
ow moet ik dan alleen SELECT ID,persoon_id,vrienden_id FROM
uitvoeren?

of moet het weer anders?
sorry maar ik begin net met php en ik moet het nog beetje leren :P
 
Jurgen assaasas

Jurgen assaasas

05/02/2007 22:25:00
Quote Anchor link
Sla nooit meerder gegevens op in één veld daar is een database niet voor bedoeld. Lees eventueel eens over normaalvormen(1 tot 5, maar vaak wordt alleen 1 tot 3 gebruikt) om tot een goed datamodel te komen.
 
Klaasjan Boven

Klaasjan Boven

05/02/2007 22:42:00
Quote Anchor link
Jurgen schreef op 05.02.2007 22:25:
Sla nooit meerder gegevens op in één veld daar is een database niet voor bedoeld. Lees eventueel eens over normaalvormen(1 tot 5, maar vaak wordt alleen 1 tot 3 gebruikt) om tot een goed datamodel te komen.


Ik zou beginnen met een cursus php, daarna een cursus sql en dan maar een normaliseren ed
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.