Hallo allemaal,

ik heb een klein probleem met het maken van een dynamische html tabel dmv php en mysql.

Het lukt me wel die tabel te maken, alleen het aantal rows en columns klopt niet.

wat ik wil is dit:

* * * *
* * * *
* * * *

wat ik krijg is:

* * * *
* * * * *
* *

of iets dergelijks afhangkelijk van de count natuurlijk.

Zie hieronder het gedeelte van mijn code die hiervoor moet zorgen.
Misschien dat iemand van jullie gelijk de fout kan zien ? Ik zie het niet meer in iedergeval.


$sql	= "SELECT * FROM profile ORDER BY positie DESC";
$result = mysql_query ($sql);


// begin met een tabel te maken
echo '<table align="left" border="0" cellspacing="5" cellpadding="5"><tr>';

//voor elke record een cell maken, als meer dan $count cellen: einde row
$count = 0;
while($record = mysql_fetch_assoc($result))
{
	$count++;
    if($count % 4 == 0)
        echo '</tr>';
		?>
		
       	<td class="btnav" onmouseover="style.backgroundColor='#EBD6B6';"onmouseout="style.backgroundColor='#FCFAEA'">
		
		<?php
		$werknaam 		= $record['werknaam'];
		$foto1 			= $record['foto1'];
		
		//als  op foto geklikt wordt, open dan profielpagina van de gebruiker
		echo "<a href=profile.php?werknaam=".$werknaam." border='0'>";
		

		//toon de foto met als alt de gebruikersnaam    
		echo "<img src=".$foto1." alt=".$werknaam." width='150' height='200' border='0'>";
		echo '</a>';
		echo '</td>';
		
		//einde cell
	}

//geen gegevens meer in tabel ? dan einde row en einde tabel
echo '</tr></table>';


Ik gebruik altijd iets als onderstaande:


<?php

$query = "SELECT
                  kolom1, kolom2, kolom3
		FROM
		  tabel1
		WHERE
                  voorwaarde1 = '1'
                 ";
$result=mysql_query($query);

if(mysql_num_rows($result) > 0)
  {
  echo "<table class='data'>";
  echo "<tr><td colspan='3'><strong>TITEL</strong></td></tr>";
  echo "<tr><td width='50%'><b>kolomtitel1</b></td><td width='25%'></td><td width='25%'><b>kolomtitel2</b></td><td class='datagetal' width='10%'><b>kolomtitel3</b></td></tr>";
			
  while($record=mysql_fetch_object($result))
    {
    echo "<tr><td>".$record->kolom1."</td><td >".$record->kolom2."</td><td>".$record->kolom3."</td></tr>";
    } 	
  echo "</table><br /><br />"; 
  }

?>


edit:

Oei, dit is niet echt een antwoord op je vraag... Nuja, ik laat het staan, misschien is iemand anders er iets mee!
Zet hem even tussen code tags. ;)

Edit: "if($count % 4 == 0)", uh, die doet momenteel niks toch? :\
Zag het net ook, en gelijk tussen code gezet :)

die count zou moeten zorgen voor de juiste kolommen, en als ik het getal 4 wijzig in bijvoorbeeld 3 dan zie je ook daadwerkelijk iets veranderen. Maar volgens mij werkt die count niet helemaal zoals het hoort.
Mario schreef op 27.05.2008 12:18
Zag het net ook, en gelijk tussen code gezet :)

die count zou moeten zorgen voor de juiste kolommen, en als ik het getal 4 wijzig in bijvoorbeeld 3 dan zie je ook daadwerkelijk iets veranderen. Maar volgens mij werkt die count niet helemaal zoals het hoort.


Omdat je de if niks laat doen. Je gebruikt niet if() { wat te doen als .. } else { wat anders te doen.. }. ;)
In het eerste script dat je geeft zit een klein foutje. Bij dat if-statement sluit je de huidige rowset wel af, maar je opent niet een nieuwe. Dus na de </tr> moet nog een <tr>.

@Mitchell: De haakjes bij een if (en ook andere statements) zijn niet verplicht. Geef je ze niet, dan zal alleen de volgende opdracht worden beschouwd als het stukje wat normaal binnen de haakjes staat.
Jelmer schreef op 27.05.2008 12:29
In het eerste script dat je geeft zit een klein foutje. Bij dat if-statement sluit je de huidige rowset wel af, maar je opent niet een nieuwe. Dus na de </tr> moet nog een <tr>.

@Mitchell: De haakjes bij een if (en ook andere statements) zijn niet verplicht. Geef je ze niet, dan zal alleen de volgende opdracht worden beschouwd als het stukje wat normaal binnen de haakjes staat.

Weer wat geleerd. Maar zit hier dan ook een voordeel aan, of..?
@Jelmer

Bedankt voor de tip. Ik heb een <tr> openingstag toegevoegd, maar dat wil helaas ook niet helpen.

wat ik nu krijg is

***
****
**

Ik heb zelf ook het idee dat het iets met de table / row tags te maken heeft. Zou het misschien kunnen dat ik moet opvullen met dummy records ?

@mitchell

toch bedankt voor het opmerken :)
Mocht iemand een stukje code hebben die het zelfde doet en wel goed werkt hoor ik dat natuurlijk ook graag.
<?php
$counter = 0;

echo '<table><tr>';
while(...){
echo '<td>hallo</td>';

$counter++;

if($counter == 4){
echo '</tr><tr>';
$counter = 0;
}
}
echo '</tr>';
echo '</table>';
?>
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

$teller = 0;
$breed = 4;

echo '<table>';
while(...)
{
echo ($teller % $breed) == 0 ? '<tr>' : '';
echo '<td> tekst </td>';
$teller++;
echo ($teller % $breed) == 0 ? '</tr>' : '';
}
echo ($teller % $breed) != 0 ? '</tr>' : '';
echo '</table>';

?>

Reageren