PHP + HTML Tabel

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Ik zit nu al uren met iets te stoeien maar ik kom er niet uit.

Ik heb 2 tabellen in MYSQL:
Items
Met de velden id en naam

Fotos
Met de velden
fotoid --- item --- fotobestand

Waarbij fotobestand natuurlijk de bestandsnaam van de foto is.

Nu wil ik graag het volgende doen:
helpmijkinkorn1.jpg

Dus na elke Item->Naam de bijbehorende foto's weergeven. Dit doe ik op de volgende manier:
PHP:
$itemsQuery = "SELECT * FROM items ORDER by id DESC";
$itemsResult = mysql_query($itemsQuery) or die (mysql_error());
while($itemsRow = mysql_fetch_array($itemsResult))  {
  extract($itemsRow);
  
  $itemsfotosQuery = "SELECT * FROM fotos WHERE item='$id' ORDER by fotoid DESC";
  $itemsfotosResult = mysql_query($itemsfotosQuery) or die (mysql_error());
  while($itemsfotosRow = mysql_fetch_array($itemsfotosResult)){
	extract($itemsfotosRow);
Dus de regel
Code:
"SELECT * FROM fotos WHERE item='$id'
en dit werkt in principe prima, maar het ziet er helemaal verkeerd uit:
helpmijkinkorn2.jpg

De opmaak die nog niet klopt even achterwege gelaten, er zitten per item op het moment 3 foto's in de database en voor elke foto wordt de item-naam weergegeven, het is dus de bedoeling dat dit maar 1 keer gebeurt, voor de eerste foto.

Ook is er een scrollbar naar rechts toe, terwijl de bedoeling is dat foto's die niet meer passen, een regel er onder worden weergegeven (zoals in het voorbeeld).

Hoe ga ik dit oplossen? :confused:

Volledige script:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>xxx</title>
<style type="text/css">
<!--
#divLogo {
	margin: 0px;
	padding: 0px;
	width: 1240px;
}
#containerLeftRight {
	margin: 0px;
	padding: 0px;
	width: 1239px;
}
#divLeft {
	margin: 5px;
	padding: 0px;
	width: 228px;
	height: 200px;
	float: left;
}
#divRight {
	margin: 0px;
	padding: 0px;
	width: 1001px;
	height: 500px;
	float: left;
}
#trItemName {
	valign: top;
	bgcolor: red;
}
-->
</style>
</head>

<body>
<div id="divLogo"><img src=header.jpg></div>

<?php
	include("config.php");

echo'
<div id="containerLeftRight">
<div style="overflow: auto" id="divLeft">
';
// Nieuws weergeven

$nieuwsQuery = "SELECT * FROM nieuws ORDER by id DESC";
$nieuwsResult = mysql_query($nieuwsQuery) or die (mysql_error());
while($nieuwsRow = mysql_fetch_array($nieuwsResult))  {
  extract($nieuwsRow);
  echo'
  <a href=item.php?id='.$id.'>'.$titel.'</a><br>
  '.$tekst.'<br>
  ';
  if (isset($foto)) {
  echo'
  <img src=img/'.$foto.'>
  ';
  }
  }
echo'</div>

<div style="overflow: auto" id="divRight">';
// Items weergeven
echo'
<TABLE>
<tr BGCOLOR="#666666" VALIGN=center>
';
$itemsQuery = "SELECT * FROM items ORDER by id DESC";
$itemsResult = mysql_query($itemsQuery) or die (mysql_error());
while($itemsRow = mysql_fetch_array($itemsResult))  {
  extract($itemsRow);
  
  $itemsfotosQuery = "SELECT * FROM fotos WHERE item='$id' ORDER by fotoid DESC";
  $itemsfotosResult = mysql_query($itemsfotosQuery) or die (mysql_error());
  while($itemsfotosRow = mysql_fetch_array($itemsfotosResult)){
	extract($itemsfotosRow); 
  
  echo'
<td>'.$naam.'</td>
<td><img height=100 src=img/'. $fotobestand .'></td>

  ';

  }}
echo'</tr></TABLE>';
?>


</div>

</div>
</body>
</html>
(Het SELECT 'nieuws' gedeelte is niet relevant, pas vanaf "// items weergeven" (regel 69))
 
Laatst bewerkt:
op hoe het op meerdere regels te krijgen:

maak een tabelletje/div met vaste breedte, met 1 cel. Zet binnen deze ene verschillende tabellen/div's met binnen elke tabel 1 "item".
item even tussen aanhalingstekens aangezien je een naam vast niet helemaal rechts op de regel wilt zonder daar nog een foto naast.

om de namen niet meerdere keren te laten zien zou ik de sql eerst in een array op slaan en vervolgens een for loopje maken waarbinnen je simpel kan checken of de voorgaande item naam gelijk is aan de huidige en zo ja dan verbergen.
iets in de trant van:
Code:
for($a=0, $b<sizeof($array); $a<$b; $a++){
if($array[($a-1)]['naam']!=$array[$a]['naam']) echo 'item naam';
}
 
op hoe het op meerdere regels te krijgen:

maak een tabelletje/div met vaste breedte, met 1 cel. Zet binnen deze ene verschillende tabellen/div's met binnen elke tabel 1 "item".
item even tussen aanhalingstekens aangezien je een naam vast niet helemaal rechts op de regel wilt zonder daar nog een foto naast.
Even ter verduidelijking, het aantal foto's naast een item kan verschillen. Het kunnen 3 foto's zijn, maar ook7, of 10. Gaat dat dan wel werken zo?

om de namen niet meerdere keren te laten zien zou ik de sql eerst in een array op slaan en vervolgens een for loopje maken waarbinnen je simpel kan checken of de voorgaande item naam gelijk is aan de huidige en zo ja dan verbergen.
iets in de trant van:
Code:
for($a=0, $b<sizeof($array); $a<$b; $a++){
if($array[($a-1)]['naam']!=$array[$a]['naam']) echo 'item naam';
}
Ik heb nog nooit met arrays gewerkt (alleen gekopieerd en geplakt:p) dus ik snap eigenlijk niet wat ik met dit stukje code aanmoet, wat gebeurt er allemaal precies? :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan