/ 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
svær tabel med php
Fra : Martin


Dato : 21-02-06 04:20

Jeg har en tabel i en mysqlbase. Tabellen består af fx xx rækker med tal fra
1-xx.
Jeg vil gerne lave et php udtræk som automatisk danner en html tabel med 3
kolonner og så mange rækker der er nødvendige for at have alle data.
Fx hvis xx=10 dvs der er 10 poster i mysql tabellen skulle
Html tabellen så se sådan ud: (uden -------)

1------5-----9
2------6-----10
3------7-----
4------8-----

Hvis så antallet af rækker blev større (xx=15) skulle html tabellen
automatisk "flytte rundt på" tallene - bevare de 3 kolonner men sætte flere
rækker ind:

1------6------11
2------7------12
3------8------13
4------9------14
5-----10 -----15

Hvis ikke dette er muligt, kan et tabellayout også se sådan ud:

1------2------3
4------5------6
7------8------9
10----11----12
13----14----15

Det vigtigste er at antallet af rækker automatisk bliver ændres afhængig af
aftal poster i mysqltabellen og at der sker et automatisk "flyt" af tallene.

Martin




 
 
Bertel Lund Hansen (21-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-02-06 10:20

Martin skrev:

> Jeg vil gerne lave et php udtræk som automatisk danner en html tabel med 3
> kolonner og så mange rækker der er nødvendige for at have alle data.

Note:
Du bytter om på kolonner og rækker. En kolonne er lodret "kolonne" betyder også "søjle".

> Fx hvis xx=10 dvs der er 10 poster i mysql tabellen skulle
> Html tabellen så se sådan ud: (uden -------)

> 1------5-----9
> 2------6-----10
> 3------7-----
> 4------8-----

Du skal bare beregne i forvejen hvor mange rækker der skal være.

// Arrayet formodes at hedde $resultarray.

define ('COLUMNS', 3); // Så kan opskriften tilpasses et andet antal kolonner.

$rows=($entries+2)/COLUMNS; // Antal påbegyndte rækker.

echo "<table>\r\n";
$entry=0;
for ($nr=0; $nr<$rows-1; ++$nr) {
   echo "<tr>";
   for ($n=$entry; $n<$entry+COLUMNS; ++$n) echo "<td>$resultarray[$n]</td>";
   echo "</tr>\r\n";
   $entry+=$rows;
}
echo "<tr>";
for (; $entry<count($resultarray); ++$entry) echo "<td>$resultarray[$n]</td>";
echo "</tr>\r\n</table>\r\n";

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (21-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-02-06 10:39

Martin skrev:

> Jeg vil gerne lave et php udtræk som automatisk danner en html tabel med 3
> kolonner og så mange rækker der er nødvendige for at have alle data.

> Fx hvis xx=10 dvs der er 10 poster i mysql tabellen skulle
> Html tabellen så se sådan ud: (uden -------)

> 1------5-----9
> 2------6-----10
> 3------7-----
> 4------8-----

Du skal bare beregne i forvejen hvor mange rækker der skal være.

// Arrayet formodes at hedde $resultarray.

define ('COLUMNS', 3); // Så kan opskriften tilpasses et andet antal kolonner.

$rows=($entries+2)/COLUMNS; // Antal påbegyndte rækker.

echo "<table>\r\n";
$entry=0;
for ($nr=0; $nr<$rows-1; ++$nr) {
   echo "<tr>";
   for ($n=$entry; $n<$entry+COLUMNS; ++$n) echo "<td>$resultarray[$n]</td>";
   echo "</tr>\r\n";
   $entry+=$rows;
}
echo "<tr>";
for (; $entry<count($resultarray); ++$entry) echo "<td>$resultarray[$n]</td>";
echo "</tr>\r\n</table>\r\n";

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (21-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-02-06 10:54

Bertel Lund Hansen skrev:

> $rows=($entries+2)/COLUMNS; // Antal påbegyndte rækker.

Svipser. Her er den rigtige.

$rows=(count($resultarray)+2)/COLUMNS; // Antal påbegyndte rækker.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Martin (21-02-2006)
Kommentar
Fra : Martin


Dato : 21-02-06 13:55

> Svipser. Her er den rigtige.
> $rows=(count($resultarray)+2)/COLUMNS; // Antal påbegyndte rækker.
>
Hej Bertel

Jeg kan godnok ikke få det til at funke:
<?
$resultarray[]=1;
$resultarray[]=2;
$resultarray[]=3;
$resultarray[]=4;
$resultarray[]=5;
$resultarray[]=6;
$resultarray[]=7;
$resultarray[]=8;
$resultarray[]=9;
$resultarray[]=10;
$resultarray[]=11;
$resultarray[]=12;
$resultarray[]=13;
$resultarray[]=14;
$resultarray[]=15;

define ('COLUMNS', 3); // Så kan opskriften tilpasses et andet antal
kolonner.

$rows=(count($resultarray)+2)/COLUMNS; // Antal påbegyndte rækker.

echo "<table>\r\n";
$entry=0;
for ($nr=0; $nr<$rows-1; ++$nr) {
echo "<tr>";
for ($n=$entry; $n<$entry+COLUMNS; ++$n) echo "<td>$resultarray[$n]</td>";
echo "</tr>\r\n";
$entry+=$rows;
}
echo "<tr>";
for (; $entry<count($resultarray); ++$entry) echo
"<td>$resultarray[$n]</td>";
echo "</tr>\r\n</table>\r\n";
?>

giver flg.

1 - 2 - 3
6 - 7 - 8
12-13-14

Jeg kan ikke gennemskue det - kan du?

Martin



Bertel Lund Hansen (21-02-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 21-02-06 16:53

Martin skrev:

> Jeg kan godnok ikke få det til at funke:

Her er den testede version:

<?
$resultarray = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);

define ('COLUMNS', 3); // Så kan opskriften tilpasses et andet antal kolonner.
$rows=floor((count($resultarray)+2)/COLUMNS); // Antal påbegyndte rækker.

echo "<table>\r\n";
$entry=0;
for ($nr=0; $nr<$rows-1; ++$nr) {
   echo "<tr>";
   for ($n=$entry; $n<$entry+$rows*3; $n+=$rows) echo "<td>$resultarray[$n]</td>";
   echo "</tr>\r\n";
   ++$entry;
}
echo "<tr>";
for ($n=$rows-1; $n<$rows*3; $n+=$rows) echo "<td>$resultarray[$n]</td>";
echo "</tr>\r\n</table>\r\n";
?>

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Arne Feldborg (21-02-2006)
Kommentar
Fra : Arne Feldborg


Dato : 21-02-06 17:11

"Martin" <martinkristensen@post.tele.dk> skrev Tue, 21 Feb 2006 04:20:23
+0100


>Jeg vil gerne lave et php udtræk som automatisk danner en html tabel med 3
>kolonner og så mange rækker der er nødvendige for at have alle data.
>
Der er flere måder du kan gøre det på. Feks kan du køre en løkke og så
hele tiden holde øje med om tælleren er dellig med 3. Eller du kan køre
en løkke i step a' 3. Men når du gerne vil have resulatet listet på den
måde du nævner, så er noget i den her stil nok det nemmeste:


<?php
$my_array = array(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q);
$rows = ceil(count($my_array)/3);

echo '<table width="150" align="center">';
for ($i=0;$i<$rows;$i++){
   echo '<tr>';
   for ($j=0;$j<3;$j++){
      echo '<td>'.$my_array[($rows*$j+$i)].'</td>';
   }
   echo '<tr>';
}
?>

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Leif Neland (21-02-2006)
Kommentar
Fra : Leif Neland


Dato : 21-02-06 13:56

Martin wrote:
> Jeg har en tabel i en mysqlbase. Tabellen består af fx xx rækker med
> tal fra 1-xx.
> Jeg vil gerne lave et php udtræk som automatisk danner en html tabel
> med 3 kolonner og så mange rækker der er nødvendige for at have alle
> data. Fx hvis xx=10 dvs der er 10 poster i mysql tabellen skulle
> Html tabellen så se sådan ud: (uden -------)
>
> 1------5-----9
> 2------6-----10
> 3------7-----
> 4------8-----

Du finder antallet af poster med mysql_num_rows()
Antallet af rækker er så ceil(poster/kolonner)

$kolonner=3;
$poster=mysql_num_rows($res);
$rækker=ceil($poster/$kolonner);
echo "<table>";
for ($n=1;$n<=$rækker;$n++) {
echo "<tr>";
for ($m=0;$m<$kolonner;$m++) {
echo "<td>";
mysql_data_seek($res,$n+$m*$rækker-1);
$row=mysql_fetch_row($res);
echo $row[0];
echo "</td>";
}
echo "</tr>";
}
echo "</table>";


>
> Hvis ikke dette er muligt, kan et tabellayout også se sådan ud:
>
> 1------2------3
> 4------5------6
> 7------8------9
> 10----11----12
> 13----14----15
>

Det er jo meget lettere.
Så sætter du bare en "<tr>" ind før data, hvis recordnummer modulus 3 er 0
og et "</tr>" ind efter data, hvis recordnummer modulus 3 er 2.

Leif



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

Månedens bedste
Årets bedste
Sidste års bedste