[PhP/MySQL] Tabelcel alleen tonen als het gevuld is met data

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Dit is het geval:

Ik heb een PhP file waarin een HTML tabel staat. Elke cel in de tabel bevat een variabele. Deze variabelen bevatten per stuk informatie welke afkomstig is uit de MySQL database. Nu wil ik dat de onderste cell ALLEEN zichtbaar is als het database veld wat het bevat daadwerkelijk gevuld is.

De code zoals hier beneden laat de onderste cell (in vet) sowieso zien, ook al is het database veld niet gevuld. Deze code zal dus aangepast moeten worden zodat de onderste (vette) cell alleen zichtbaar is als het iets bevat.

<tr><td align='center' width='100%' class='posterinfo'>{$author['member_number']}</td></tr>
<tr><td height='5'></td></tr>
<tr><td align='center' width='100%' class='posterinfo'>{$author['member_joined']}</td></tr>
<tr><td height='5'></td></tr>
<tr><td align='center' width='100%' class='posterinfo'>{$author['member_status']}</td></tr>
<tr><td height='5'></td></tr>
<tr><td align='center' width='100%' class='posterinfo'>{$author[field_1]}</td></tr>
</table>

De code die ik zoek zal er ongeveer zo uitzien:
code:
1
2
3
4
if(!empty($author['field_1'])) 
{ 
  echo '<tr><td align="center" width="100%" class="posterinfo">' . $author["field_1"] . '</td></tr>'; 
}


Echter als ik deze code gebruik krijg ik de volgende parse error:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in G:\www\poundingtechno\forums\Skin\s2\skin_topic.php on line 512

Fatal error: Cannot instantiate non-existent class: skin_topic in G:\www\poundingtechno\forums\sources\functions.php on line 571

Ik zit nu dus vast waarbij ik niet weet of de code welke ik gebruik nou fout is, of de manier waarop ik de code implementeer niet correct is.

Als iemand hier wat licht op zou kunnen werpen zou dit prettig zijn.....

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Wat is precies regel 512 van je code (en omliggende?)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-09 18:27

pjvandesande

GC.Collect(head);

Even je illigalchars escape, of hoef je dat niet te doen in PHP als het tussen ' en ' te escappen?

edit:
welke line is dit trouwens?

[ Voor 74% gewijzigd door pjvandesande op 22-09-2004 11:26 ]


Verwijderd

Topicstarter
Ik kom hier op terug aangezien ik op dit moment niet bij de broncode kan. Ben weer eens illegaal aan het internetten op werk. ;)

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 18-09 18:27

pjvandesande

GC.Collect(head);

Even een ander puntje, ik vind btw ook dat je de tr en td tag niet moet openen en sluiten als er geen data in komt.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:52

crisp

Devver

Pixelated

questa schreef op 22 september 2004 @ 11:42:
Even een ander puntje, ik vind btw ook dat je de tr en td tag niet moet openen en sluiten als er geen data in komt.
Een cell mag best leeg zijn, maar bedenk daarbij dat useragents dan normaliter ook geen borders om die cell heen zetten (tenzij expliciet aangegeven in CSS).
Echter het aanmaken van een row met een lege cell om een afscheiding te creeeren is inderdaad bad practice; gebruik daarvoor padding of border-spacing. Sowieso zijn tabellen natuurlijk niet bedoelt om layout te bepalen; ik vraag me ook af waarom TS hier ueberhaupt een tabel gebruikt en niet bijvoorbeeld een list (het is immers een opsomming)...

Intentionally left blank


Verwijderd

Topicstarter
Ik ben het eens met het feit dat er beter gebruik gemaakt had kunnen worden van cellspacing ipv het plaatsen van een lege cell. Er kan echter geen gebruik worden gemaakt van een list aangezien de achterliggende CSS gebruik maakt van tabel eigenschappen om look and feel mee te geven.

Over een uurtje ben ik thuis en zal ik hier de orginele code (txt download) en een screenshot plaatsen zodat een en ander wat duidelijker wordt. Het gaat hier nog steeds om het probleem en niet de adequaatheid van de code.. ;)

In ieder geval bedankt voor het meedenken en ik zal eens kijken of ik de lege cellen kan vervangen door cellspacing te gebruiken.

Verwijderd

Topicstarter
Hier is de achtergrond informatie:

het php bestand in text format zonder dat het veld wordt verborgen
[save target as... en opslaan als txt bestand]

Dit wordt als volgt weergegeven, zie ook het commentaar over hoe ik het wil hebben:
Afbeeldingslocatie: http://www.poundingtechno.com/temp/hide.jpg

het php bestand in text format met de code die de cell moet verbergen maar op regel 512 een parse error geeft
[save target as... en opslaan als txt bestand]

Misschien kunnen jullie hier iets meer mee...

Verwijderd

Probeer eens:

<?php
function RenderRow($post, $author) {
global $ibforums;
if(!empty($author['field_1']))
{
$tmpvar='<tr><td align="center" width="100%" class="posterinfo">' . $author["field_1"] . '</td></tr>';
}
return <<<EOF
<!--Begin Msg Number {$post['pid']}-->
...
<tr><td align='center' width='100%' class='posterinfo'>{$author['member_joined']}</td></tr>
<tr><td height='5'></td></tr>
<tr><td align='center' width='100%' class='posterinfo'>{$author['member_status']}</td></tr>
{$tmpvar}
</table>
</td>
...
?>

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
Aan je variable namen ( {$blah}) te zien gebruik je een template engine?
Dat betekent dus ook dat je in die code de normale PHP control structures niet meer kunt gebruiken.

Het lijkt op Smarty?

Als dat zo is probeer dan eens:

code:
1
2
3
{if $author[field_1]}
    <tr><td align='center' width='100%' class='posterinfo'>{$author[field_1]}</td></tr>
{/if}

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 11:30

Guldan

Thee-Nerd

je zou ook kunnen proberen om gewoon per blok in je tabel te kijken of deze leeg is. Door te checken of deze null is en deze als dat niet het geval is dan laat hij hem niet zien.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Verwijderd

Topicstarter
King007 > bedankt voor je input maar helaas wederom een parse error...

usr-local-dick > het is inderdaad een bestand uit een template engine. Het is namelijk een skinning file van een forum (Invisionboard 1.3 final). Waarschijnlijk heb je dan ook gelijk als je zegt dat de normale control structures niet meer werken. Dat zal dan ook de reden van de parse errors zijn.

De code die jij echter aandroeg leverde geen error op maar ook niet het gewenste resultaat. De if statement werd namelijk als tekst weergegeven en de cell werd overal weergegeven ook als deze niet gevuld was.

Andere ideeen zijn van harte welkom, ik kom er zelf niet meer uit.... 8)7

  • usr-local-dick
  • Registratie: September 2001
  • Niet online
usr-local-dick > het is inderdaad een bestand uit een template engine. Het is namelijk een skinning file van een forum (Invisionboard 1.3 final). Waarschijnlijk heb je dan ook gelijk als je zegt dat de normale control structures niet meer werken. Dat zal dan ook de reden van de parse errors zijn.

De code die jij echter aandroeg leverde geen error op maar ook niet het gewenste resultaat. De if statement werd namelijk als tekst weergegeven en de cell werd overal weergegeven ook als deze niet gevuld was.

Andere ideeen zijn van harte welkom, ik kom er zelf niet meer uit.... 8)7
Als je eerst eens kijkt op de site van die forumboer dan zou je kunnen zien dat hun templates <if> en </if> gebruiken...

Check die link dan http://docs.invisionpower.com/index.php?id=163

:O

:)

Verwijderd

Topicstarter
usr-local-dick > Uiteraard heb ik eerst de officiele documentatie aangeboord. Deze documentatie is echter geschreven voor de nieuwste versie van het forum (IPB2.0) welke een geheel andere werkwijze wat betreft templates hanteert. Vandaar dat ik dus niks heb aan deze methode.
HTML logic is a feature new to IPB 2.0 skinning that allows you to show or hide certain parts of a template bit....
Feit blijft wel dat normale PHP control structures nog steeds niet functioneren en er dus geen geschikte documentatie is om dit op te lossen in IPB1.3f

[EDIT]TOPIC KAN GESLOTEN WORDEN, IK HEB MIDDELS EEN NIEUW GESCHREVEN FUNCTIE HET PROBLEEM OP KUNNEN LOSSEN[/EDIT]

[ Voor 11% gewijzigd door Verwijderd op 23-09-2004 17:46 ]

Pagina: 1