---
title: "Loopa ut 1 värde flera ggr"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/114255-loopa-ut-1-värde-flera-ggr"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "ironhead"
published: "2004-10-24T12:12:33.000Z"
updated: "2004-11-03T08:02:53.000Z"
replies: 14
views: 492
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/114255-loopa-ut-1-värde-flera-ggr"
---

# Loopa ut 1 värde flera ggr

## #1 — ironhead, 2004-10-24T12:12Z

Hej!

Jag har 3 tabeller (MySQL) som är i relation med varandra.

tabell1(person):
namnId, Int
namn, varchar

tabell2 (nyckeltabell):
namnId, Int
filmId, Int

tabell3 (filmer):
filmId, Int
film, varchar

Om flera personer har samma film, så loopas det ju upp som:

Starwars Person1
Starwars Person2

Jag skulle vilja att man loopar ut filmnamnet 1 gång och personernas namn flera gånger

Starwars Person1, Person2

Hur göra på smidigaste sätt?

Permalänk: https://www.webforum.nu/p/114255

## #2 — tydal, 2004-10-24T12:41Z

Du mellanlagrar det i en hash. Basic har jag slutat med sedan länge så jag vet inte hur du skriver där, men så här skulle php-koden för loopen se ut så du ser principen (nån annan kanske kan hjälpa till att skriva om det)

```
  $film[$rs['film']][] = $rs['namn'];
```

Sedan för att loopa ut filmerna:

```
  foreach ($film as $titel => $personer)
  {
  }
```

Resultatet blir alltså att du får en array som ser ut så här:

$film\['Starwars'\] = "Person1", "Person2"

och foreach går igenom filmerna, en i taget.

Permalänk: https://www.webforum.nu/p/1467599

## #3 — ironhead, 2004-10-24T12:56Z

Vi kanske kan flytta detta till PHP-forumet istället då :)

Fråga: tydal;

Hur skriver jag sedan ut värdena i arrayen i PHP?

Permalänk: https://www.webforum.nu/p/1467612

## #4 — tydal, 2004-10-24T13:04Z

echo($titel) i foreach-loopen för filmens namn. $personer är en array så den får du först slå ihop till en sträng med hjälp av implode:

echo(implode(", ", $personer));

Permalänk: https://www.webforum.nu/p/1467617

## #5 — ironhead, 2004-10-24T13:35Z

Jag gör fatalt fel :(
Så här ser min loop ut:

```
while($array = mysql_fetch_array($result))
 {
  $film[$array["title"]][] = $array["username"];
 
 foreach ($film as $titel => $personer)
  {
   echo($titel);
   echo(implode(", ", $personer));
  }
 }
```

 

då får jag ut:
FilmPerson1FilmPerson1, Person2

Permalänk: https://www.webforum.nu/p/1467630

## #6 — tydal, 2004-10-24T13:56Z

Nej, det ser helt rätt ut. Bara att du inte har lagt in några radbrytningar, så allt hamnar ju i enda lång rad.

Om det är html kanske du vill ha det utskrivet så här:

```
foreach ($film as $titel => $personer)
{
  echo("<b>$titel:</b> ");
  echo(implode(", ", $personer) . "<br>");
}
```

Permalänk: https://www.webforum.nu/p/1467636

## #7 — ironhead, 2004-10-24T14:32Z

...men då blir ju utskriften såhär:

Film: Person1
Film: Person1, Person2

Jag vill bara ha såhär:
Film: Person1, Person2

Permalänk: https://www.webforum.nu/p/1467653

## #8 — tydal, 2004-10-24T14:46Z

Då beror det på att det ser ut så i databasen. Om du visar den riktiga utskriften kan jag förmodligen se vad det beror på.

Permalänk: https://www.webforum.nu/p/1467661

## #9 — ironhead, 2004-10-24T16:41Z

eh? Vad vill du se?

När jag bara loopar ut med:

```
while($array = mysql_fetch_array($result))
{
echo $array["title"]." ".$array["username"]."<br>";
}
```

Får jag

Film Person1
Film Person2

och det måste ju vara ok, då jag har 2 användare i databasen och loopar ut användare kopplade till filmen.

Permalänk: https://www.webforum.nu/p/1467707

## #10 — LarsG, 2004-10-24T17:31Z

```php
$q = "... order by title";
...
$t = "";
$cnt = 0;
while($array = mysql_fetch_array($result))
{
  if  ($t != $array["title"] ) {
      if  ($cnt  > 0) echo "<br>";
      $t = $array["title"];
      $cnt = 0;
      echo $t;
  }
   if  ($cnt > 0) echo ",";
   echo $array["username"];
   $cnt++;
}
if  ($cnt > 0) echo "<br>";
```

Vill du ha en ASP-lösning också eller skall jag flytta tråden till PHP?

Permalänk: https://www.webforum.nu/p/1467740

## #11 — ironhead, 2004-10-24T20:49Z

**LarsG**: Supernice...funkar klocka!
Gärna ett exempel i ASP också :)

Permalänk: https://www.webforum.nu/p/1467839

## #12 — LarsG, 2004-10-25T07:46Z

```
sql = "... order by title"

set rs = connect.execute(sql)

t = ""
cnt = 0
while not rs.eof 
  if  t <> rs("title" ) then
      if  cnt  > 0  then response.write "<br>"
      t = rs("title")
      cnt = 0
      response.write t
  end if
  if  cnt > 0 then  response.write ","
  response.write rs("username")
  cnt = 1
  rs.movenext
wend
if  cnt > 0 then response.write "<br>"
```

Permalänk: https://www.webforum.nu/p/1467914

## #13 — ironhead, 2004-10-25T08:00Z

:birp Mycket bra!

Permalänk: https://www.webforum.nu/p/1467918

## #14 — ironhead, 2004-11-01T10:23Z

Vet inte om jag ska fortsätta i denna tråd som jag redan avslutat, men problemet är relaterat till denna upplistning.

Jag vill ta ut filmer TOP 10, men får problem när jag listar ut flera personer/film, för varje användare som har samma film, kommer utskriften på skärmen att bli en film mindre, hur löser jag det?

ex. TOP 10 blir bara 5 filmer istf 10

Film1 Tore, Olle, Bengt
Film2 Tore
Film3 Tore, Olle, Bengt
Film4 Tore, Bengt
Film5 Tore

Jag kör med Count för närvarande

Permalänk: https://www.webforum.nu/p/1474202

## #15 — ironhead, 2004-11-03T08:02Z

Löste det såhär:

```
t = ""
cnt = 0
knt = 0

while not rs.eof or knt>10

  if  t <> rs("title") then
      if  cnt  > 0  then response.write "<br>"
      t = rs("title")
      cnt = 0
      response.write t & " "
      knt = knt + 1
  end if
  if  cnt > 0 then  response.write ","
  response.write rs("username")
  cnt = 1
  rs.movenext
  
wend

if  cnt > 0 then response.write "<br>"
```

Permalänk: https://www.webforum.nu/p/1475001

---

Tråden på webben: https://www.webforum.nu/amne/asp/114255-loopa-ut-1-värde-flera-ggr
