[php] verdelen in 3 rijen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 20-09 20:35
In een databasetabel staat een onbekend aantal rijen, en deze moet worden verdeeld in 3 kolommen. Dus als ik er 30 heb, moet in elke kolom 10 items komen. Het probleem is alleen dat als een getal niet door 3 gedeeld kan worden (10,33 of 10,66 bijv.) het toch goed afgerond moet worden en in de 2e kolom dus 1 meer moet komen dan in de 3e kolom. Of (bij 10,33) de eerste rij 1 meer dan de 2e of 3e kolom.

Ik had zelf bedacht:

code:
1
2
3
4
5
6
7
8
9
10
11
$int = mysql_num_rows($query);
$int /= 3 ;
if (ceil($int) < (floor($int) + .5)){
    $first = ceil($int);
    $second = floor($int);
    $third = floor($int);
} else {
    $first = ceil($int);
    $second = ceil($int);
    $third= floor($int);
}


En dan voor elke kolom in de Query:
code:
1
2
3
LIMIT 0, $first
LIMIT $first, $second
LIMIT $second + $first, $third


Iemand een idee? _/-\o_

Maar dit lijkt niet helemaal netjes te werken, want bij 2 items geeft-ie er toch maar één.

Goedkoopste hardware


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Gewoon alle rijen in 1 array opvragen en array_chunk gebruiken.

PHP:
1
2
3
4
5
6
7
8
$data = array();

while ( $row = mysql_fetch_assoc ( $result ) )
{
    $data[] = $row;
}

$data = array_chunk ( $data, 10, true );


Ik denk toch dat je zoiets bedoelt :)

March of the Eagles


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Nu online

Onbekend

...

Ik kom nog niet helemaal uit je code. Je weet toch wel dat je vanaf 0 begint te tellen toch?

code:
1
2
3
4
5
6
7
$NrOfRows = mysql_num_rows($query);

for $Teller = 0; $Teller < $NrOfRows; $Teller++)
{
    $RowNumber = floor( $Teller / 3);
    $ColNumber = $Teller - $RowNumber * 3;
}

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 20-09 20:35
Probleem is ook dat tussen die 3 kolommen een stuk layout komt, dus hoe los ik dat dan op?

Goedkoopste hardware


Acties:
  • 0 Henk 'm!

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 07-07 15:40
code:
1
2
3
$first = floor($num/3)+ceil(($num%3)/2);
$second = floor($num/3)+floor(($num%3)/2);
$third = floor($num/3);


en dan jou sql limit...

[ Voor 70% gewijzigd door djexplo op 27-01-2007 18:19 . Reden: getest ]

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Acties:
  • 0 Henk 'm!

  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 20-09 20:35
Zonder die -1 in de SQL (2x) werkt 't :D bedankt!! :)

Goedkoopste hardware


Acties:
  • 0 Henk 'm!

  • Koetjeboe
  • Registratie: Maart 2002
  • Laatst online: 20-09 21:46

Koetjeboe

Boe, zegt de koe

Als je het puur voor de layout wilt opsplitsen is het vaak ook met css op te lossen...:)

Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Is het nu de bedoeling dat het in een tabel gaat komen of niet?
Geef anders een voorbeeld stukje HTML zoals je het wilt hebben

PHP:
1
2
3
4
5
6
7
8
9
10
$i = 0;
$rij = 0;
while($data = mysql_fetch_array($query)) {
   if($i == 2) {
      $i = 0;
      $rij++;
   }
   $array[$rij] = $data;
   $i++;
}

Niet getest maar heb je hier iets aan?
Pagina: 1