login  Naam:   Wachtwoord: 
Registreer je!
 Forum

HTML Tabel genereren met behulp van PHP

Offline Lobster - 29/08/2009 14:59
Avatar van LobsterNieuw lid Hallo,

Ik ben nog niet zo heel lang bezig met PHP maar tot nu toe lukt alles aardig.
Ik ben bezig met het maken van een script waarmee een HTML tabel wordt gemaakt, dit gaat goed.
Inhoud toevoegen aan de tabel vanuit een database gaat ook goed en alle resultaten worden naast elkaar in het tabel getoont.

Daarnaast heb ik er een navigatiefunctie bij gemaakt, die overigens ook werkt.
Dit alles heb ik gedaan aan de hand van 2 tutorials die hier bij Sitemasters te vinden zijn.

Nu het probleem, de tabel werkt perfect. Er moet een tabel gemaakt worden van 3 bij 3 (3 kolommen en 3 rijen). In totaal komen daar 9 items (afbeeldingen) in te staan en die moeten netjes naast elkaar worden getoont. Daaronder komt een rij waarin de navigatie staat.

Voorbeeld:
------------
| 1 | 2 | 3 |
------------
| 4 | 5 | 6 |
------------
| 7 | 8 | 9 |
------------
| Nav |
------------

Wanneer er telkens 3 afbeeldingen zijn die in een rij geplaatst kunnen worden, is er niets aan de hand en wordt de tabel netjes getoont met daar direct onder de navigatie.

Wanneer er een X aantal afbeeldingen zijn die niet te vermenigvuldigen zijn met 3, wordt de tabel niet netjes afgemaakt.

Voorbeeld:
Er zijn 11 afbeeldingen

Pag 1

------------
| 1 | 2 | 3 |
------------
| 4 | 5 | 6 |
------------
| 7 | 8 | 9 |
------------
| Nav |
------------

Pag 2

------------
| 1 | 2 |
------------
| Nav |
------------

Het gevolg is dat de 2de pagina een verkeerd tabel toont.

Nu moest er volgens de tutorial een extra stukje code bij wat de tabel netjes zou afsluiten. Maar het enige wat dit veroorzaakt is dat de tabel inderdaad netjes wordt afgesloten maar dat alle 9 items per pagina onder elkaar worden getoont.

Dan verschijnen er dus 3 kolommen en 9 rijen in plaats van 3 rijen.

De tutorials die ik heb gebruikt:

1. Tutorial voor de navigatie
2. Tutorial voor het maken van de tabel

De code die ik op dit moment op de pagina gebruik:

  1. <?php
  2.  
  3. // Dit script is bedoeld om de kleurplaten te laten zien en pagina's te genereren
  4.  
  5. $user = "XXXX";
  6. $pass = "XXXX";
  7. $host = "XXXX";
  8.  
  9. $db_1 = "XXXX";
  10.  
  11. @mysql_connect ($host, $user, $pass) or die ("Error connecting!");
  12. @mysql_select_db ($db_1) or die ("Error connecting database!");
  13.  
  14.  
  15. $res1 = mysql_query("SELECT COUNT(plaat_id) FROM kleur_platen") or die ("res1:". mysql_error());
  16. $totaal_items = mysql_result($res1, 0);
  17.  
  18. $items_per_pagina = 9;
  19. $aantal_paginas = ceil($totaal_items / $items_per_pagina);
  20.  
  21. $huidige_pagina = 0;
  22.  
  23. if( isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] > 0 && $_GET['p'] < $aantal_paginas) {
  24. $huidige_pagina = $_GET['p'];
  25. }
  26.  
  27. $offset = $huidige_pagina * $items_per_pagina;
  28. $res2 = mysql_query("SELECT * FROM kleur_platen WHERE plaat_cato LIKE '". $_GET['subcato'] ."%' ORDER BY plaat_titel ASC LIMIT ". $offset.",".$items_per_pagina) or die("res2:". mysql_error());
  29.  
  30.  
  31. $aantal_cols = 3;
  32. $huidige_col = 0;
  33.  
  34. $num = mysql_num_rows($res2);
  35.  
  36. if ($num > 0){
  37.  
  38. while ($kleur = mysql_fetch_assoc($res2)){
  39.  
  40. if( $huidige_col == 0){
  41.  
  42. echo "<tr>\n";
  43. }
  44.  
  45. echo "<td align=\"left\" width=\"195\" height=\"270\" background=\"../kleurplaat_vak.jpg\" valign=\"top\">\n";
  46. echo "<div class=\"div_kleurplaat\">\n";
  47. echo "<a href=\"http://kleurpret.lobsteranimatie.nl/printpagina.php?plaat=". $kleur["plaat_printcato"] ."\" target=\"_blank\" class=\"a_menu_link\">\n";
  48. echo "<img src=\"http://kleurpret.lobsteranimatie.nl/". $kleur["plaat_link_map"] ."/thumb/". $kleur["plaat_kleur_extensie"] ."\" alt=\"". $kleur["plaat_alt"] ."\" width=\"150\" height=\"200\" border=\"0\" />\n";
  49. /*echo "<span class=\"spanblock\">". $kleur["plaat_titel"] ."</span>";*/
  50. echo "</a></div></td>\n";
  51.  
  52. $huidige_col++;
  53.  
  54. if ($huidige_col == $aantal_cols){
  55. echo "</tr>\n";
  56. $huidige_col = 0;
  57. }
  58. }
  59. }
  60.  
  61.  
  62.  
  63. echo "<tr><td align=\"center\" colspan=\"3\" background=\"../next_balk.jpg\" valign=\"top\" height=\"50\" class=\"td_advert\">";
  64. echo "<div class=\"div_next\">";
  65.  
  66. for($a = 0; $a < $aantal_paginas; $a++) {
  67.  
  68. if($huidige_pagina == $a) {
  69. // huidige pagina is niet klikbaar
  70. echo "<b>".($a+1)."</b>";
  71. } else {
  72. // een andere pagina
  73. echo "<a href=\"http://kleurpret.lobsteranimatie.nl/kleurplaat.php?subcato=". $_GET["subcato"] ."&amp;p=".$a."\" target=\"_parent\" class=\"a_menu_link\">".($a+1)."</a>";
  74. }
  75. // teken tussen alle items
  76. if($a < $aantal_paginas - 1) {
  77. echo " | ";
  78. }
  79. }
  80. echo "</div></td></tr>";
  81.  
  82.  
  83.  
  84. ?>

Bovenstaande code werkt goed, maar de tabel wordt niet netjes afgemaakt.

Onderstaande code zou de tabel af moeten ronden en de rij moeten vullen met cellen.

  1. if ($huidige_col != $aantal_cols){
  2.  
  3. for($i = $huidige_col; $i < $aantal_cols; $i++) {
  4. echo "<td align=\"left\" width=\"195\" height=\"270\" background=\"../kleurplaat_vak.jpg\" valign=\"top\">&nbsp;</td>\n";
  5. }
  6. echo "</tr>\n";
  7. }


Kan iemand mij vertellen wat er fout gaat?

4 antwoorden

Gesponsorde links
Offline Ultimatum - 29/08/2009 15:34
Avatar van Ultimatum PHP expert Hmm.. ik heb die 2de tutorial van Fangorn al een paar keer gebruikt en het werkte altijd perfect. Het enige wat ik zie is dat je de tabel niet opent en sluit (<table>), ben je dit vergeten of niet gekopierd?
Offline Lobster - 29/08/2009 15:46 (laatste wijziging 29/08/2009 15:56)
Avatar van Lobster Nieuw lid Ow sorry, die staat in de gewone pagina.
Daar include ik dit script.

Daar staat dus:

<table>
<?php
include_once("php/scriptnaam.php");
?>
</table>

Ik kan proberen de tabel in het script zelf te openen en te sluiten.


=====
edit!
=====

Het openen en sluiten van de tabel in het script lost niets op.

Het enige wat het script nu doet is het volgende:

|1|*|*|
|2|*|
|3|
|*|*|*|
|4|*|*|
|5|*|
|6|
|*|*|*|

* staat voor een lege tabel met een achtergrond plaatje. De rest wordt niet netjes afgerond.

enz, tot er 9 items op de pagina staan.
Offline Borre - 29/08/2009 16:01 (laatste wijziging 29/08/2009 16:11)
Avatar van Borre Nieuw lid EDIT: Sorry, niet goed gelezen 

Al zo geprobeert:
  1. <?php
  2. $i = 0;
  3. while($array2 = mysql_fetch_assoc ($res2)) {
  4. $i++;
  5. if($i == 1 || $i == 4 || $i == 7) {
  6. echo '<tr>';
  7. }
  8. ?><td width="WIDTH" >lalala</td><?
  9. if($i == 3 || $i == 6 || $i == 9) {
  10. echo '</tr>';
  11. }
  12. }
  13. ?>
Offline Lobster - 29/08/2009 16:49
Avatar van Lobster Nieuw lid @ Borre

Dat werkt helaas ook niet. Hij blijft een open einde houden met als gevolg dat de laatste 2 items verdeeld worden over de hele kolom.

Het liefst heb ik dus dat er ten alle tijden 3 kolommen blijven staan.
De rijen hoeven niet altijd getoont te worden. Als het maar max 3 rijen zijn.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.254s