/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Oversætte Id'er til navne.
Fra : Jacob d'Andrade


Dato : 22-06-09 20:28

Hej ng

Har et "simpelt" problem, som jeg ikke ved hvordan jeg skal løse.

Jeg har to tabeller:

contacts og contactgroups. (MySQL)

contacts har følgende felter:
id, name, fullname, contactgroupid

contactgroups har følgende:
id, name, desc.

I contactgroupid feltet i contacts tabellen har jeg gemt, id'erne på de
grupper som personen er medlem af, adskildt med komma, dvs kontakt gruppe id
1,2,3 osv ved en enkelt bruger. Når jeg så hiver info ud om den givende
bruger, vil jeg gerne have oversat kontakt gruppe id'erne til kontakt gruppe
navnene, og præsenteret ligesom id'erne, altså adskildt med komma.

Har googlet lidt, men ved ikke hvad denne "funktion" hedder.

Håber nogen kan hjælpe.

Mvh Jacob



 
 
Gert Krabsen (22-06-2009)
Kommentar
Fra : Gert Krabsen


Dato : 22-06-09 20:42

Jacob d'Andrade skrev:
> Hej ng
>
> Har et "simpelt" problem, som jeg ikke ved hvordan jeg skal løse.
>
> Jeg har to tabeller:
>
> contacts og contactgroups. (MySQL)
>
> contacts har følgende felter:
> id, name, fullname, contactgroupid
>
> contactgroups har følgende:
> id, name, desc.
>
> I contactgroupid feltet i contacts tabellen har jeg gemt, id'erne på de
> grupper som personen er medlem af, adskildt med komma, dvs kontakt gruppe id
> 1,2,3 osv ved en enkelt bruger. Når jeg så hiver info ud om den givende
> bruger, vil jeg gerne have oversat kontakt gruppe id'erne til kontakt gruppe
> navnene, og præsenteret ligesom id'erne, altså adskildt med komma.
>
> Har googlet lidt, men ved ikke hvad denne "funktion" hedder.
>
> Håber nogen kan hjælpe.

Ja, men ikke den vej du ønsker

Det er simpelthen noget klamp at have et felt med flere værdier i. Måske
ser du ikke problemet nu, men den dag du har mere end 11 grupper og skal
finde alle de contacts, der er tilknyttet gruppe 2, hvordan gør du så det?


Du bør derfor skynde dig at lave et bedre database-design; du mangler en
tabel:


contact
contactid, name, fullname

contactgroup
contactgroupid, name, desc.

Og den nye:
-----------

contactingroup
contactingroupid, contactid, contactgroupid


...og så kigge på udtrækket bagefter..







Jacob d'Andrade (23-06-2009)
Kommentar
Fra : Jacob d'Andrade


Dato : 23-06-09 09:50


"Gert Krabsen" <fjernkrabsen@fjernkrabsenfjern.dk> skrev i meddelelsen
news:4a3fdd83$0$48245$14726298@news.sunsite.dk...
>
> Ja, men ikke den vej du ønsker
>
> Det er simpelthen noget klamp at have et felt med flere værdier i. Måske
> ser du ikke problemet nu, men den dag du har mere end 11 grupper og skal
> finde alle de contacts, der er tilknyttet gruppe 2, hvordan gør du så det?
>
>
> Du bør derfor skynde dig at lave et bedre database-design; du mangler en
> tabel:
>
>
> contact
> contactid, name, fullname
>
> contactgroup
> contactgroupid, name, desc.
>
> Og den nye:
> -----------
>
> contactingroup
> contactingroupid, contactid, contactgroupid
>
>
> ..og så kigge på udtrækket bagefter..
>
´
Ahh, ja selvfølgelig ... Jeg tror jeg kan se lyset. Jeg takker og prøver
mig frem.

Mvh Jacob


Johan Holst Nielsen (22-06-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 22-06-09 21:25

Jacob d'Andrade wrote:
> Hej ng
>
> Har et "simpelt" problem, som jeg ikke ved hvordan jeg skal løse.
>
> Jeg har to tabeller:
>
> contacts og contactgroups. (MySQL)
>
> contacts har følgende felter:
> id, name, fullname, contactgroupid
>
> contactgroups har følgende:
> id, name, desc.
>
> I contactgroupid feltet i contacts tabellen har jeg gemt, id'erne på de
> grupper som personen er medlem af, adskildt med komma, dvs kontakt gruppe id
> 1,2,3 osv ved en enkelt bruger. Når jeg så hiver info ud om den givende
> bruger, vil jeg gerne have oversat kontakt gruppe id'erne til kontakt gruppe
> navnene, og præsenteret ligesom id'erne, altså adskildt med komma.
>
> Har googlet lidt, men ved ikke hvad denne "funktion" hedder.

Som Gert nævner - er en ændring af designet det bedste... men ellers kan
følgende bruges

<?php
$sql = "SELECT id, name FROM contactgroups";
$res = mysql_query($sql);
$groups = array();
while($r = mysql_fetch_assoc($res)) { $groups[$r['id']] = $r['name']; }

$sql = "SELECT name, fullname, contactgroupid FROM contacts ORDER BY name";
$res = mysql_query($sql);

echo '<table border="1">';
echo '<tr><th>Navn</th><th>Fuld navn</th><th>Grupper</th></tr>';

while($r = mysql_fetch_assoc($res)) {
echo '<tr>';
echo '<td>'.$r['name'].'</td>';
echo '<td>'.$r['fullname'].'</td>';
echo '<td>';
$usergroupid = explode(',',$r['contactgroupid']);
$usergroups = array();
foreach($usergroupid as $uid) { $usergroups[] = $groups[$uid]; }
echo implode(', ',$usergroups);
echo '</td>';
echo '</tr>';
}

echo '</table>';
?>

Men som sagt - ovenstående bør kun være en "nødløsning" - er ikke best
practice - langt fra.

--
Johan Holst Nielsen
www.phpgeek.dk
?>

Birger Sørensen (23-06-2009)
Kommentar
Fra : Birger Sørensen


Dato : 23-06-09 05:38

Jacob d'Andrade kom med følgende:
> Hej ng
>
> Har et "simpelt" problem, som jeg ikke ved hvordan jeg skal løse.
>
> Jeg har to tabeller:
>
> contacts og contactgroups. (MySQL)
>
> contacts har følgende felter:
> id, name, fullname, contactgroupid
>
> contactgroups har følgende:
> id, name, desc.
>
> I contactgroupid feltet i contacts tabellen har jeg gemt, id'erne på de
> grupper som personen er medlem af, adskildt med komma, dvs kontakt gruppe id
> 1,2,3 osv ved en enkelt bruger. Når jeg så hiver info ud om den givende
> bruger, vil jeg gerne have oversat kontakt gruppe id'erne til kontakt gruppe
> navnene, og præsenteret ligesom id'erne, altså adskildt med komma.
>
> Har googlet lidt, men ved ikke hvad denne "funktion" hedder.
>
> Håber nogen kan hjælpe.
>
> Mvh Jacob

En til mange relationer, bør altid representeres som separat tabel.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409074
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste