---
title: "Sortering o utskrift.."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/116576-sortering-o-utskrift"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Yossarian"
published: "2004-11-24T08:07:29.000Z"
updated: "2005-03-02T07:47:18.000Z"
replies: 5
views: 426
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/php/116576-sortering-o-utskrift"
---

# Sortering o utskrift..

## #1 — Yossarian, 2004-11-24T08:07Z

Om jag vill ändra sorteringen i min tabell...

Från:

abc
def
ghi

Till:

adg
beh
cfi

Några förslag?
Antal produkter är olika beroende på kategori, så man får väl räkna ut hur många det finns först i kategorin o sedan dela på 3?

Koden idag:

```php
<?

$unitpp = 150;
$unitpr = 3;
if(!isset($_GET[start])) { $_GET[start] = 0; }
if(!isset($_GET[stop])) { $_GET[stop] = $unitpp; }

     $query = "SELECT * FROM grupper WHERE  grupp= '$grupp' AND alternativ='l' LIMIT $_GET[start],$unitpp";
   $result = mysql_query($query) or die(mysql_error());
   $i = 1;
      $result2 = mysql_query("SELECT * from grupper WHERE grupp = '$grupp'") or die(mysql_error());
      $antalrader = mysql_num_rows($result2);
      $sidor=ceil($antalrader/$unitpp);
      echo '<table bgcolor="#F9F7F7" cellspacing="0" cellpadding="0"><tr><td><B>Rubrik</B><BR><BR></td><tr>';
   while($row = mysql_fetch_array($result)) {
   ?>
   <td width="150">

    <a class="meny" target="main_shop" href="webshop.php?page=vgrupp&id=<?=$row["id"]?>&maskin=<?=$row["titel"]?>"><?=$row["titel"]?></a>

   </td> <?
   if($i%$unitpr == 0) { ?>
   </tr><tr><td height="2" background="img/empty.gif" colspan="<?=($unitpr + ($unitpr-1))?>"></td></tr><tr> <? } else { ?>
   <td width="2" background="img/empty.gif"></td> <? }
   $i++;

   }
   ?>
```

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

## #2 — jonnyz, 2004-11-24T21:32Z

Ursäkta, men vad vill du åstadkomma?

Normalt klarar man sig ganska långt med ORDER BY i SQL.

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

## #3 — The_Hulk, 2004-11-25T11:04Z

förmodligen vill han/hon skriva ut produkterna lodrätt istället för vågrätt. ser iaf ut med bokstäverna.

enklast är kanske att spara det i en matris och sen skriva ut de till html.

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

## #4 — Yossarian, 2004-11-25T14:21Z

Japp, vill sortera lodrätt...i 3 kolumner.
Får väl testa lite själv. Snickra a la Timell typ =)

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

## #5 — lunne82, 2004-11-25T15:37Z

Hämta datan och lägg den, som The_Hulk sa, in en matris. Blir lite knöligt i PHP-kod så jag tar det visuellt.

```
+---+---+---+        +---+---+---+
| a | b | c |        | a | d | g |
+---+---+---+        +---+---+---+
| d | e | f |   =>   | b | e | h |
+---+---+---+        +---+---+---+
| g | h | i |        | c | f | i |
+---+---+---+        +---+---+---+
```

Skriver inte ut all kod, bara den "viktiga".
Nu blir det mycket arrayer...

Lägg datan för "a" i en array(id, titel) och lägg in det som första positionen i första raden:

```
// Initiera variabler
$matris = array(array());
$rad = 0;
$kol = 0;
$per_rad = 3;
// Index i matris är radnummer

// MySQL-fråga mm på dessa rader

// Sen loppar vi igenom resultatet
while($row = mysql_fetch_array($result)) {
  $matris[$rad][$kol++] = array($row['id'], $row['titel']);
  if ($kol % ($per_rad - 1) == 0) {
    $rad++;
    $kol = 0;
  }
}
```

Nu ska vi transversera matrisen. Om döper bokstäverna i min första bild efter dess position får man följande bild:

```
+----+----+----+        +----+----+----+
| 11 | 12 | 13 |        | 11 | 21 | 31 |
+----+----+----+        +----+----+----+
| 21 | 22 | 23 |   =>   | 12 | 22 | 32 |
+----+----+----+        +----+----+----+
| 31 | 32 | 33 |        | 13 | 23 | 33 |
+----+----+----+        +----+----+----+
```

Då loopar vi igenom $matris, utför detta och sparar resultatet i $ny_matris:

```
// Initiera variabler
$ny_matris = array(array());
$rad = 0;
$kol = 0;
while ($dar = $matris[$rad++]) {
  while ($lok = $matris[$rad][$kol++]) {
    $ny_matris[($kol-1)][($rad-1)] = $lok;
  }
  $kol = 0;
}
```

Klart! Kanske inte det mest optimala sättet, men det funkar.

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

## #6 — Yossarian, 2005-03-02T07:47Z

Hmm, för en som aldrig jobbat med matriser...
Hur fanken ska det passas ihop med befintlig kod? =)

Gjorde ett försök, eller ja, knappt man kan kalla d försök..

```php

<?

// Initiera variabler
$matris = array(id,titel);
$rad = 0;
$kol = 0;
$per_rad = 3;
// Index i matris är radnummer

$query = "SELECT * FROM grupper WHERE  grupp= '$grupp' AND alternativ='l'";
$result = mysql_query($query) or die(mysql_error());

// Sen loppar vi igenom resultatet
while($row = mysql_fetch_array($result)) {
  $matris[$rad][$kol++] = array($row['id'], $row['titel']);
  if ($kol % ($per_rad - 1) == 0) {
    $rad++;
    $kol = 0;
  }
}

// Initiera variabler
$ny_matris = array(array());
$rad = 0;
$kol = 0;
while ($dar = $matris[$rad++]) {
  while ($lok = $matris[$rad][$kol++]) {
    $ny_matris[($kol-1)][($rad-1)] = $lok;
  }
  $kol = 0;
}

   echo '<table bgcolor="#F9F7F7" cellspacing="0" cellpadding="0"><tr><td><B>LASERSKRIVARE</B><BR><BR></td><tr>';
   while($row = mysql_fetch_array($result)) {
   ?>
   <td width="150">

    <a class="meny" target="main_shop" href="webshop.php?page=vgrupp&id=<?=$row["id"]?>&maskin=<?=$row["titel"]?>"><?=$row["titel"]?></a>

   </td> <?
   if($i%$unitpr == 0) { ?>
   </tr><tr><td height="2" background="img/empty.gif" colspan="<?=($unitpr + ($unitpr-1))?>"></td></tr><tr> <? } else { ?>
   <td width="2" background="img/empty.gif"></td> <? }
   $i++;

   }
   ?>
```

 

Som ni ser....saknas biten där matrisen förs in i min gamla kod.

Hilfe?

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

---

Tråden på webben: https://www.webforum.nu/amne/php/116576-sortering-o-utskrift
