Newbee - Een tabel verdelen in meerder kolommen
Laat ik me eerst even voorstellen ik ben Roy en heb een probleempje met een PHP script waar ik op de een of andere manier niet uit kom.
Het is een script dat een lijst genereert in Magento, echter is het 1 lange lijst die wordt gegenereerd in een tabel met rijen. Ik zou dit graag opsplitsen in een tabel met 2 kolommen.
Weet iemand of dit mogelijk is?
Dit is het huidige script:
Code (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
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
<?php
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct()
?>
<?php if($_additional = $this->getAdditionalData()): ?>
<div class="box-collateral box-additional innercontent">
<!-- <h2><?php echo $_product->getName().' '.$this->__('Additional Information') ?></h2> -->
<table class="data-table2" id="product-attribute-specs-table">
<col width="50%" />
<col />
<tbody>
<?php foreach ($_additional as $_data): ?>
<tr>
<th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
<?php
?>
<td class="data <?php echo strtolower($_data['label']); ?>"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
</div>
<?php endif;?>
_____________________
| Naam: | Attribuut|
_____________________
Ik zou graag willen hebben:
________________________________________________
| Naam: | Attribuut | Naam2: | Attribuut2|
| Naam3: | Attribuut | Naam4: | Attribuut2|
| Naam5: | Attribuut | Naam6: | Attribuut2|
| Naam7: | Attribuut | Naam8: | Attribuut2|
Nu heb ik het volgende geprobeerd, echter komt er niet uit wat ik graag zou willen:
Code (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
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
"<?php
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct()
?>
<?php if($_additional = $this->getAdditionalData()): ?>
<?php $rows = count($_additional)/2; ?>
<div class="box-collateral box-additional innercontent">
<!-- <h2><?php echo $_product->getName().' '.$this->__('Additional Information') ?></h2> -->
<table class="data-table2-1" id="product-attribute-specs-table">
<?php foreach ($_additional as $_data): ?>
<tr>
<th class="label"><?php echo $this->htmlEscape($this->__($_data['label'])) ?></th>
<?php
?>
<td class="data <?php echo strtolower($_data['label']); ?>"><?php echo $_helper->productAttribute($_product, $_data['value'], $_data['code']) ?></td>
</tr>
<?php endforeach; ?>
</table>
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
</div>
<?php endif;?>
Zou iemand mij hier mee op weg kunnen helpen?
Alvast veel dank!
Gr Roy
Gewijzigd op 01/06/2011 09:21:31 door Roy Janssen
zet je code even tussen [code] en [/code] tags
Wat ik deed was zeg maar zo iets:
Code (php)
Enkel kan het dan voorkomen dat je op het eind een lege <tr> krijgt. Maar daar is vast wel wat op te verzinnen. Als je het aantal resultaten in je database weet, kun je ook daar een tellertje voor maken. Als het aantal records waar hij doorheen heeft gelopen dan gelijk is aan het aantal records wat uit de DB gehaald is, dan moet hij geen nieuwe <tr> maken.
Wellicht wat omslachtig, maar wel functioneel.
Gewijzigd op 31/05/2011 19:37:01 door Erik van de Locht
alternative-syntax voor if/else constructies en for(each)/while loops.
@erik, je kan in zo'n geval beter gebruik maken van de @Erik, denk je dat dit zou werken? Ik denk niet dat dit de juiste weg is, vooral omdat het eigenlijk al 2 kolommen zijn nu. Wat denk jij?
Bedankt voor jullie reacties zover :)
Gewijzigd op 01/06/2011 09:24:51 door Roy Janssen
Nu doet mijn voorbeeld zeg maar als volgt:
Voor elke kolom wordt $i met 1 verhoogd. Als $i na het verhogen gelijk is aan 2, wordt de regel afgesloten en maakt hij een nieuwe. Vervolgens wordt $i weer op 0 gezet zodat hij overnieuw kan tellen.
Erik van de Locht op 01/06/2011 09:50:14:
Ik denk dat het wel werkt, maar ben er niet zeker van dat het de meest praktische oplossing is.
Nu doet mijn voorbeeld zeg maar als volgt:
Voor elke kolom wordt $i met 1 verhoogd. Als $i na het verhogen gelijk is aan 2, wordt de regel afgesloten en maakt hij een nieuwe. Vervolgens wordt $i weer op 0 gezet zodat hij overnieuw kan tellen.
Nu doet mijn voorbeeld zeg maar als volgt:
Voor elke kolom wordt $i met 1 verhoogd. Als $i na het verhogen gelijk is aan 2, wordt de regel afgesloten en maakt hij een nieuwe. Vervolgens wordt $i weer op 0 gezet zodat hij overnieuw kan tellen.
Ja dat is duidelijk ja, dus dan krijg ik dit?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct()
?>
<?php if($_additional = $this->getAdditionalData()): ?>
<div class="box-collateral box-additional innercontent">
<!-- <h2><?php echo $_product->getName().' '.$this->__('Additional Information') ?></h2> -->
<table>
<tr>
<?php $i = 0; foreach($items as $item) { ?>
<td>
<!-- Inhoud kolom hier -->
</td>
<?php $i++; if ($i == 2) { echo '</tr><tr>'; $i = 0; }
} ?>
</tr>
</table>
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
</div>
<?php endif;?>
$_helper = $this->helper('catalog/output');
$_product = $this->getProduct()
?>
<?php if($_additional = $this->getAdditionalData()): ?>
<div class="box-collateral box-additional innercontent">
<!-- <h2><?php echo $_product->getName().' '.$this->__('Additional Information') ?></h2> -->
<table>
<tr>
<?php $i = 0; foreach($items as $item) { ?>
<td>
<!-- Inhoud kolom hier -->
</td>
<?php $i++; if ($i == 2) { echo '</tr><tr>'; $i = 0; }
} ?>
</tr>
</table>
<script type="text/javascript">decorateTable('product-attribute-specs-table')</script>
</div>
<?php endif;?>
Nee nu sla ik toch helemaal de spijker mis geloof ik want nnu komt er niets meer uit het script. haha