Data horizontaal weergeven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeff NextGDev

Jeff NextGDev

30/03/2009 14:44:00
Quote Anchor link
Beste Mensen,

Ik ben nu al een aardige tijd bezig met PHP en begrijp het aardig, maar er is 1 ding waar ik nog niet uit ben gekomen tot nu toe.

Stel dat ik een aantal waarden in een database heb, zeg een lijst met namen. Dan zou ik bijvoorbeeld 3 tabellen hebben:

-----------------------------------------------
| 1 t/m 15 | 15 t/m 30 | 30 t/m 45 |
-----------------------------------------------

Daarin zou ik graag bijvoorbeeld in de eerste kolom alle id's van 1 t/m 15 willen weergeven, tweede kolom 15 t/m 30 etc.

Ik zou ik graag willen weten hoe dit te automatiseren is.

Groet,
Brad
 
PHP hulp

PHP hulp

22/12/2024 19:55:37
 
- SanThe -

- SanThe -

30/03/2009 15:14:00
Quote Anchor link
Dit werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// onderstaand array is dus jouw database
$array = array('een', 'twee', 'drie', 'vier', 'vijf', 'zes', 'zeven', 'acht', 'negen', 'tien');

// aantal kolommen die je wilt hebben
$kolommen = 3;

// dit is eigenlijk mysql_num_rows()
$max = count($array);

// afblijven
$stap = ceil($max / $kolommen);

echo '<table>';
for($i=0; $i<$stap; $i++)
{

    echo '<tr>';
    for($j=0; $j<$kolommen; $j++)
    {

        if(($i + ($j * $stap)) < $max)
        {

            // hier moet je fetchen en de data neerzetten
            echo '<td>' . $array[$i + ($j * $stap)] . '</td>';
        }

        else
        {
            echo '<td> </td>';
        }
    }

    echo '</tr>';
}

echo '</table>';
?>
 
Jesper Diovo

Jesper Diovo

30/03/2009 17:55:00
Quote Anchor link
Ik zit met een soortgelijk probleem, en heb het via jouw code deels kunnen oplossen, SanThe. Nu is het zo dat ik een rooster probeer te maken. Alleen niet altijd is er het 8ste uur les (wat dus volgens de $stap) variabele wel zou moeten. Dan zou er een leeg vak moeten komen en moet de array doorgaan bovenaan. Echter krijg ik het niet voor elkaar. Voorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once 'core/configuration.php';

$sQuery = "SELECT *, (SELECT naam FROM vakken WHERE vakken.id = rooster.vak_id) AS vak, (SELECT MAX(uur) FROM rooster AS b WHERE b.dag = rooster.dag) AS maxUur FROM rooster WHERE gebruiker_id = 1 ORDER BY dag,uur ASC";
$sResult = $db->query($sQuery);
$sArray = $db->fetchAll($sQuery);
$sCount = count($sArray);

// aantal kolommen die je wilt hebben
$kolommen = 5;

// afblijven
$stap = ceil($sCount / $kolommen);

echo '<table class="tabel">';
echo '<tr><th>Uur</th><th>Ma</th><th>Di</th><th>Wo</th><th>Do</th><th>Vr</th></tr>';
for($i=0; $i<$stap; $i++)
{

    echo '<tr><td>'.($i+1).'</td>';
    for($j=0; $j<$kolommen; $j++)
    {

        if(isset($sArray[$i + ($j * $stap)+1]['dag'])) {
        //echo $sArray[$i + ($j * $stap)]['dag']."::".($j+1)."::".$sArray[$i + ($j * $stap)]['maxuur']."::".$stap."<br />";
            if(($i + ($j * $stap)) < $sCount)
            {

                // hier moet je fetchen en de data neerzetten
                echo '<td>' . $sArray[$i + ($j * $stap)]['vak'] . '</td>';
            }

            else
            {
                echo '<td> </td>';
            }
        }
else {
        echo '<td> </td>';
    }
    }

    echo '</tr>';
}

echo '</table>';

?>


Ik heb al verschillende dingen geprobeerd, zoals kijken of de dag van het arrayelement na de huidige gelijk is aan de huidige, en of dat uur zou bestaan. Alleen tot nu toe werkte nog niets. Ik heb het gevoel dat ik iets met $stap moet doen, maar ik heb geen idee wat.

Edit: aan de hand van het voorbeeld: Mentoruur is eigenlijk dinsdag het eerste, maar staat nu op maandag het 8ste. Daar zou dus een leeg vak moeten komen, en mentoruur moet naar dinsdag het eerste.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
- SanThe -

- SanThe -

31/03/2009 15:02:00
Quote Anchor link
@Jezpur: Wat staat er dan allemaal in $sArray?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.