[PHP] Meerdere kolommen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 15:30
Goeiedagnacht ;-)

Ik ben bezig met een website, en stuit tegen een probleempje.. Het probleem is dat ik meerdere kolommen naast me kaar wil en daar nog eens onder misschien ook kolommen.. Ligt eraan hoeveel results uit de database komen...

Op het moment heb ik dit.. maar het is al laat.. 3:23 om precies te zijn en begin nu toch echt moe te worden en ik zie letters en cijfers voor m'n ogen vliegen..
PHP:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    $i=1;
    
    $TR ='
        </tr>
        <tr> ';
    
    While($r = Mysql_Fetch_Array($result)) {

    $BouwmarktFoto[$i] = '
          <td width="31%" valign="top">[img]"_Upload/_Bouwmarkten/'.[/img]</td>'; 

        $BouwmarktNaam[$i] = '
          <td bgcolor="#c4d5f4"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">'. $r["BouwmarktNaam"] .' 
            Bouwmarkt</font></strong></td>'; 
        
            $BouwmarktGemiddeld[$i] = '
          <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Deze 
            bouwmarkt staat beschreven als;<br>
            <strong>Uitstekend</strong></font> </td>'; 
        
                $BouwmarktLink[$i] = '
          <td height="16" valign="top"><a href="Recencie.phtml?Bouwmarkt='. $r["BouwmarktID"] .'" class="LKDB">Lees 
            hier de recensies &gt;&gt;</a></td>'; 
            
        $i++;
        
    }

    $bla='  <!-- Begin: Template.Bouwmarkt -->
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';         
            
while($y <= $AantalBouwmarkten){

        $x++;
        $y++;
        $a=$y+1;
        $b=$y+2;

    if($x == 2) {

        $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt --> <!-- Begin: Template.Bouwmarkt -->
    <hr align="center" width="100%" size="1" noshade>
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';
        

     $x=0;
    } 
    
        $bla .= $BouwmarktFoto[$y].$BouwmarktFoto[$a].$BouwmarktFoto[$b].$TR;
            $bla .= $BouwmarktNaam[$y].$BouwmarktNaam[$a].$BouwmarktNaam[$b].$TR;
                $bla .= $BouwmarktGemiddeld[$y].$BouwmarktGemiddeld[$a].$BouwmarktGemiddeld[$b].$TR;
                    $bla .= $BouwmarktLink[$y].$BouwmarktLink[$a].$BouwmarktLink[$b];

}
    
    $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt -->';

    echo $bla;


komt nu dit uit:
Afbeeldingslocatie: http://img369.imageshack.us/img369/2565/bla5lu.jpg
En daar komt niet echt het goeie resultaat uit ;) De eerste 3 doet ie perfect, maar daarna verneukt ie de boel gewoon... Snap er geen drol meer van.. Heb echt slaap nodig :(

Dit was btw het eerste manier wat in me opkwam om het te laten zien.. Als er meerdere manieren zijn om dit netjes uit de database te laten komen.. Tell me please :)

Acties:
  • 0 Henk 'm!

Verwijderd

console schreef op dinsdag 10 januari 2006 @ 03:36:
En daar komt niet echt het goeie resultaat uit
Misschien kun je er even netjes bij vertellen wat er precíes misgaat?

[ Voor 3% gewijzigd door Verwijderd op 10-01-2006 08:22 ]


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 15:30
Verwijderd schreef op dinsdag 10 januari 2006 @ 08:21:
[...]

Misschien kun je er even netjes bij vertellen wat er precíes misgaat?
Nou, hij laat 2x de Hoza zien en 2x de Praxis, wat dus niet de bedoeling is. Gewoon alles netjes 1x laten zien.

Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 15:08
Wat krijg je als je de query die je draait in PhpMyAdmin laat draaien. m.a.w. Begin bij het begin. Allereerst controleren of je SQL-query klopt.

edit:
Volgens mij klopt het onderstaande niet.
Naar mijn idee herhaalt hij de laatste bouwmarkt van de vorige <TR> op de eerste plek van de volgende <TR>.
PHP:
1
2
3
4
5
6
7
8
9
10
11
    if($x == 2) {

        $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt -->    <!-- Begin: Template.Bouwmarkt -->
    <hr align="center" width="100%" size="1" noshade>
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';
        

     $x=0;
    }


Probeer eens:
PHP:
1
2
3
4
5
6
7
8
9
10
if($x == 3){
 $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt -->    <!-- Begin: Template.Bouwmarkt -->
    <hr align="center" width="100%" size="1" noshade>
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';
        

     $x=0;
    }

[ Voor 97% gewijzigd door MuddyMagical op 10-01-2006 09:34 ]


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 15:30
MuddyMagical schreef op dinsdag 10 januari 2006 @ 09:28:
Wat krijg je als je de query die je draait in PhpMyAdmin laat draaien. m.a.w. Begin bij het begin. Allereerst controleren of je SQL-query klopt.

edit:
Volgens mij klopt het onderstaande niet.
Naar mijn idee herhaalt hij de laatste bouwmarkt van de vorige <TR> op de eerste plek van de volgende <TR>.
PHP:
1
2
3
4
5
6
7
8
9
10
11
    if($x == 2) {

        $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt -->    <!-- Begin: Template.Bouwmarkt -->
    <hr align="center" width="100%" size="1" noshade>
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';
        

     $x=0;
    }


Probeer eens:
PHP:
1
2
3
4
5
6
7
8
9
10
if($x == 3){
 $bla .= '        </tr></table>
<!-- Eindig: Template.Bouwmarkt -->    <!-- Begin: Template.Bouwmarkt -->
    <hr align="center" width="100%" size="1" noshade>
    <table width="31%" border="0" cellspacing="5" cellpadding="2">
            <tr> ';
        

     $x=0;
    }
Gaat nog steeds fout, dan verneukt ie gewoon de layout... SQL Query is goed output is 5 rijen. Maar het gaat bij die While functie ergens mis.. ?

Ben nu eff met een test scriptje bezig die alles output in text, maar dan gaat het nog steeds mis :s

Edit: Gaat dus ook wat mis in die while, komt omdat de hij 5x wil rondgaan maar dat hoeft dus helemaal niet. In dit geval moet hij 2x rondgaan. Nu nog dit eff zien op te lossen :-)

[ Voor 19% gewijzigd door console op 10-01-2006 12:05 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Zen eens tussen regel 56 en 57 (zoals in het bovenste codevoorbeeld):
PHP:
1
$y++;

Acties:
  • 0 Henk 'm!

  • MuddyMagical
  • Registratie: Januari 2001
  • Laatst online: 15:08
Wat je nu doet is een variable met de geweldige naam $bla vullen met uiteindelijk 3 bouwmarkten en dan geef je hem weer.
Wat je misschien beter kan doen is elke bouwmarkt gelijk laten zien zodra je hem ophaalt. Laat hierbij een teller meelopen die zodra die op 3 staat er een </tr> gezet wordt.
Ik vindt dit namelijk nogal verwarrend. Waarom zou je willen wachten totdat je een hele tablerow kan vullen als je de bouwmarkten gelijk kan weergeven?

[overige]
Enne, gebruik alsjeblieft duidelijkere variabelen.
PHP:
1
2
3
4
while($r = mysql_fetch_array($result)) 
{
     Doe iets...
}

is niet zo duidelijk.
Dit wel:
PHP:
1
2
3
4
while($select_bouwmarkt = mysql_fetch_array($select_bouwmarkt_result)) 
{
     Doe iets...
}

Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 15:30
Komt omdat je met de <td>'s zit, je krijgt eerst 3 x de foto onder mekaar zoals;
code:
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
<table width="94%" border="0" cellspacing="5" cellpadding="2">
        <tr> 
          <td width="31%" valign="top">[img]"_Upload/_Bouwmarkten/bm_karwei.JPG"[/img]</td>
          <td width="11%" valign="top">[img]"_Upload/_Bouwmarkten/bm_praxis.JPG"[/img]</td>
          <td width="58%" valign="top">[img]"_Upload/_Bouwmarkten/bm_gamma.JPG"[/img]</td>
        </tr>
        <tr> 
          <td bgcolor="#c4d5f4"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Karwei 
            Bouwmarkt</font></strong></td>
          <td bgcolor="#c4d5f4"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Praxis 
            bouwmarkt</strong></font></td>
          <td bgcolor="#c4d5f4"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Gamma 
            bouwmarkt</strong></font></td>
        </tr>
        <tr> 
          <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Deze 
            bouwmarkt staat beschreven als;<br>
            <strong>Uitstekend</strong></font> </td>
          <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Deze 
            bouwmarkt staat beschreven als;<br>
            <strong>Matig</strong></font></td>
          <td valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Deze 
            bouwmarkt staat beschreven als;<br>
            <strong>Slecht</strong></font></td>
        </tr>
        <tr> 
          <td height="16" valign="top"><a href="Recencie.phtml?Bouwmarkt=Karwei" class="LKDB">Lees 
            hier de recensies &gt;&gt;</a></td>
          <td valign="top"><a href="Recencie.phtml?Bouwmarkt=Praxis" class="LKDB">Lees 
            hier de recensies &gt;&gt;</a></td>
          <td valign="top"><a href="Recencie.phtml?Bouwmarkt=Gamma" class="LKDB">Lees 
            hier de recensies &gt;&gt;</a></td>
        </tr>
      </table>


Zo moet het eruit komen en daaronder eventueel nog eens 2 of 3 kolommen.. Maar hoe kan je dit nu het beste aan pakken? Ik heb al verschillende dingen geprobeert, maar telkens komt het niet uit.

Acties:
  • 0 Henk 'm!

Verwijderd

console schreef op dinsdag 10 januari 2006 @ 15:08:
Komt omdat je met de <td>'s zit, je krijgt eerst 3 x de foto onder mekaar zoals;
code:
1
...


Zo moet het eruit komen en daaronder eventueel nog eens 2 of 3 kolommen.. Maar hoe kan je dit nu het beste aan pakken? Ik heb al verschillende dingen geprobeert, maar telkens komt het niet uit.
Ik wil beginnen met melden dat tabellen hier niet voor bedoeld zijn, i.m.o.
Kijk eens naar het werken met opmaak middels `floating elementen` - dat kan je veel voordelen opleveren en zeker in de toekomst met het oog op je nieuwe sites en projecten.
Kortom, ga met CSS werken om je content te positioneren.

Dan terug naar je vraag;
Wat je wilt is pér bouwmarkt een vlak met content (in jouw geval een foto, de naam, een waardering en een linkje) laten zien. Dat kun je het beste (lees: bijvoorbeeld) als volgt doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
while($bm = mysql_fetch_row($resultset)) {

    // bouwmarkt tonen
    echo '<div class="bouwmarkt">';
        
        echo '[img]"/pad/naar/'.$bm['fotonaam'].'.jpg"[/img]'; // foto
        echo '<h4 class="naam">'.$bm['naam'].'</h4>'; // naam
        echo 'Deze bouwmarkt bla-bla-etc.'.$bm['waardering']; // waardering
        echo '<a href="pad/naar/details.pagina?id='.$bm['id'].'">Lees meer etc-etc.</a>'; // linkje
    
    echo '</div>';

}


Dus, bij elke iteratie (lus van je loop) plaats je direct de content (en ga je die niet heel-gek eerst in een mega-array stoppen of iets dergelijks, tenzij dit nodig is - dat kan namelijk wél voorkomen maar is in jouw geval zeker niet noodzakelijk en zelfs overbodig. Succes!

[ Voor 10% gewijzigd door Verwijderd op 10-01-2006 16:56 ]

Pagina: 1