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:
<?
$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++;
}
?>
jonnyzMedlem sedan okt. 2004502 inlägg Ursäkta, men vad vill du åstadkomma?
Normalt klarar man sig ganska långt med ORDER BY i SQL.
The_HulkMedlem sedan juni 20031 837 inlägg 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.
Japp, vill sortera lodrätt...i 3 kolumner.
Får väl testa lite själv. Snickra a la Timell typ =)
lunne82Medlem sedan dec. 2003153 inlägg 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.
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..
<?
// 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?