Avatar billede andersthingholm Nybegynder
04. august 2005 - 00:15 Der er 4 kommentarer og
2 løsninger

Populer data i 2 kolonner

Hej,

Jeg har et udtræk af nogle navne, som sorteres alfabetisk. Jeg vil gerne populere disse i 2 kolonner. Til at starte med skal første kolonne populeres. Hvis vi antager at der er 100 records, skal de første 50 være i kolonne 1 og de sidste 50 i kolonne 2.

Er der nogen, der kan hjælpe med det?

VH

Anders
Avatar billede myplacedk Nybegynder
04. august 2005 - 15:52 #1
1) Find antallet af navne
2) Divider med to og rund op
3) Start kolonne 1
4) Udskriv det antal du fandt i trin 2
5) Start kolonne 2
6) Udskriv resten

Jeg går ud fra, at der er noget der skal uddybes. Sig bare til.
Avatar billede andersthingholm Nybegynder
04. august 2005 - 15:54 #2
Ja, det giver god mening. Men hvis jeg har en while løkke fra mit udtræk, hvor vælger den så de rigtige records?
Avatar billede myplacedk Nybegynder
04. august 2005 - 18:18 #3
Den tager dem vel fra en ende af. Mener du hvordan man får den til at stoppe igen, når der skal skiftes kolonne? For eksempel noget i denne stil:

$antal = ?;
$antalIFørsteKolonne = ceil($antal/2);
$count=0;
echo '<table><tr><td>';
foreach($names as $name) {
  echo $name.'<br />';
  if (++$count == $antalIFørsteKolonne) {
    echo '</td><td>';
  }
}
echo '</td></tr></table>';

Tip:
if (++$count == $antalIFørsteKolonne) {
kan også skrives sådan her:
$count = $count + 1;
if ($count == $antalIFørsteKolonne) {

Dvs. ++$count er det samme som $count, men der lægges lige én oveni før værdien læses.
Avatar billede andersthingholm Nybegynder
05. august 2005 - 08:45 #4
Hej igen, det ser ud til at virke med denne kode, men vil det ikke være lidt pænere med en row pr. record fremfor at bruge br?

    $query = mysql_query("SELECT customerName FROM customers ORDER BY customerName ASC") or die (mysql_error());   
   
    $antal = mysql_num_rows($query);
    $antalIFørsteKolonne = ceil($antal/2);
    $count=0;
    echo '<tr><td>';
   
    while ($row = mysql_fetch_array($query)){

        echo $row['customerName'].'<br />';
        if (++$count == $antalIFørsteKolonne) {
            echo '</td><td>';
        }

    }
   
    echo '</td></tr>';
Avatar billede myplacedk Nybegynder
05. august 2005 - 09:46 #5
Hvad der er pænest kommer an på situationen. Måske er bare det at bruge en tabel "grimt". Men det er jo bare HTML, PHP-koden er ligeglad. :)

Hvis jeg bare hurtigt skulle have noget visuelt pænt, med HTML der ikke er al for grimt, kunne jeg fx. finde på at lave en tabel (uden rammer) med to celler. I hver celle kunne der så være en punktopstilling:

<table borders="="><tr><td><ul>
<li>A</li>
<li>B</li>
</ul></td><td><ul>
<li>C</li>
<li>D</li>
</ul></td></tr></table>
Avatar billede andersthingholm Nybegynder
05. august 2005 - 10:22 #6
OK, jeg napper den som den er nu. Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester