Records per row

Status
Niet open voor verdere reacties.

Kevichill010

Gebruiker
Lid geworden
20 mrt 2013
Berichten
20
Hallo daar,

Ik ben bezig met een scriptje die ervoor zorgt dat de opgehaalde gegevens per 2 keer in 1 rij worden weergegeven,
bijv :
Titel 1 | Titel 2
Titel 3 | Titel 4
Etc.. etc..

Dit heb ik al eerder gedaan met Images en heb t tot zovere overgenomen zoals ik het voorheen gebruikte alleen werkt het blijkbaar niet op deze manier die ik toepas, de records blijven onder elkaar staan , vandaar de vraag wat er fout is ,

PHP:
 <?php


        // connect to the database
        include('connect-db.php');
$amount_per_row = 2;
$count = 0;
        // get results from database
        $result = mysql_query("SELECT * FROM news ORDER BY id DESC") 
                or die(mysql_error());  
                


        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
			
			
                
                // echo out the contents of each row into a table				         
echo 'Records from db comes here';

    if($count % $amount_per_row == 2){ echo '</br>';}
    $count++;
} 

?>
 
Heb het een beetje aangepast zodat het lelijke gedeelte even eruit was maar bij deze even de volledige pagina ,
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
        <title>View Records</title>
<style type="text/css">
.top1 {
	background-color: #FFF;
	background-image: url(images/content_04.gif);
	background-position: top;
}
.topleft1 {
	background-color: #FFF;
	background-image: url(images/content_03.gif);
	background-repeat: no-repeat;
}
.topright1 {
	background-color: #FFF;
	background-image: url(images/content_05.gif);
	background-repeat: no-repeat;
}
.titel {
	background-color: #FF8A00;
	background-image: url(images/content_07.gif);
	background-repeat: no-repeat;
}
.left {
	background-color: #FFF;
	background-image: url(images/content_09.gif);
	background-repeat: repeat-y;
}
.right {
	background-color: #FFF;
	background-image: url(images/content_10.gif);
	background-repeat: repeat-y;
}
.content {
	background-color: #FFF;
	background-image: url(images/content_08.gif);
	background-repeat: no-repeat;
}
.foot {
	background-color: #FFF;
	background-image: url(images/content_11.gif);
	background-repeat: no-repeat;
}
</style>
</head>
<body>

<p>
  <?php


        // connect to the database
        include('connect-db.php');
$amount_per_row = 2;
$count = 0;
        // get results from database
        $result = mysql_query("SELECT * FROM news ORDER BY id DESC") 
                or die(mysql_error());  
                


        // loop through results of database query, displaying them in the table
        while($row = mysql_fetch_array( $result )) {
			
			
                
                // echo out the contents of each row into a table				         
echo '<table id="Table_01" width="800" height="376" border="0" cellpadding="0" cellspacing="0" align="center">';
echo '<tr>';
echo '<td width="22" rowspan="3" class="topleft1"></td>';
echo '<td width="258" height="19" class="top1"></td>';
echo '<td width="31" rowspan="4" class="topright1"></td>';		
echo '</tr>';
echo '<tr>'; 
echo '<td height="41" class="titel">'. $row['titel'] . ' -  <a href="https://twitter.com/search?q=%23' . $row['tag'] . '" target="_blank">
<img height="20" width="20" src="images/twitt.gif" />
</a> </td>';
echo '</tr>';
echo '<tr>';
echo '<td rowspan="3" class="content">' . $row['bericht'] . '</td>';
echo '</tr>';
echo '<tr>'; 
echo '<td rowspan="2" class="left"></td>';
echo '</tr>'; 
echo '<tr>';
echo '<td height="242" class="right"></td>'; 
echo '<td>'; 
echo '<img src="images/spacer.gif" width="1" height="242" alt=""></td>';
echo '</tr>';
echo '<tr>'; 
echo '<td height="72" colspan="3" class="foot"></td>';
echo '<td></td>'; 
echo '</tr>'; 
echo '</table>';
    if($count % $amount_per_row == 2){ echo '</br>';}
    $count++;
} 

?>

</body>
</html>
 
Je maakt dus voor iedre rij een complete tabel aan, en die tabellen moeten dan twee aan twee staan? Dat ze dat niet vanzelf doen klopt, tabellen zijn blokelementen en die sitaan, tenzij je ze iets anders vertelt, onder elkaar. Je zou ze naast elkaar kunnen krijgen door ze met css te floaten. Maar is het niet logischer om één tabel te hebben met voor ieder resultaat een rij? (of mogelijk helemaal geen tabel).
 
Ik heb inderdaad een tabel per record uit de database zeg maar , vanwege een contentbox-design die ik eraan toegepast heb , vandaar dat het in een tabel staat.
maar zoals u aangeeft dat het misschien logischer is om alles in 1 tabel te hebben , hoe zou dat dan gaan aangezien ik mijn css toepas op die tabel waar de records ingeladen worden ? dan zou de design van het content box niet kloppen meer of ?
 
Voor zover ik kan zien wordt de CSS alleen op de inhoud van de tabel toegepast, daar veranderd niets aan, dus de CSS zou je gewoon moeten kunnen blijven gebruiken. Maar, bedenk wel dat tabellen eigenlijk niet bedoeld zijn voor het maken van de layout, daar kun je veel beter CSS voor gebruiken. (NB: Ik kan natuurlijk niet zien wat voor data je daar hebt, het kan nauurlijk zijn dat die data wel degelijk in een tabel thuis hoort) Wat je bijvoorbeeld zou kunnen doen is dit.
PHP:
<div class='container'>
<?
///Database code weggelaten om het verhaal wat korter te maken

while($row = mysql_fetch_array( $result )) {           
  echo '<div class="rowcontainer ">';
  echo '<div class="titel"><h2>'. $row['titel'] . '</h2> -  <a href="https://twitter.com/search?q=%23' . $row['tag'] . '" target="_blank"><img height="20" width="20" src="images/twitt.gif" />
  </a> </div>';
  echo '<div class="bericht">' . $row['bericht'] . '</div>';
  echo '</div>';
} 

?>
 </div>
In je CSS kun je dan zoiets doen
Code:
.container{
width:800px;
}

.rowcontainer{
padding:20px;
width:360px;
float:left;
}
ZOnder data is het natuurlijk wat lastig testen, maar dit zou je de layout moeten geven die je wilt.
 
Laatst bewerkt:
okee dus beter met Div werken dan i.p.v tables ,. indien mogenlijk uiteraard,.
Ik gaat het eens proberen , tot zover bedankt voor de suggesties en hulp
 
Ik heb het totzovere een beetje aangepast en vroeg me nog wat af ,
ik heb het nu met <div> , en met CSS zou ik het zover kunnen krijgen dat er maar 2 berichten die in Div'jes staan naast elkaar komen en de rest eronder 2 aan 2 ?
zoja hoe zou je dat kunnen doen , zoals ik lees kon ik het ongeveer met :

.container{
width:800px;
}

.rowcontainer{
padding:20px;
width:360px;
float:left;
}

maar dit zorgt er dan niet voor dat elke keer na 2 berichten een nieuwe regel begint en er weer 2 berichten komen en weer een nieuwe regel ? of ?
 
Zojuist dit even voor je in elkaar gezet, dan wel niet getest maar het zou moeten werken:

PHP:
<?php
// Require in plaats van include, 
// mocht het niet lukken wordt nu het script afgebroken 
// omdat het toch niet werkt zonder dit bestand, 
// met include zou het toch verder gaan
require_once('connect-db.php');
?>
<!doctype html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Items weergeven</title>
	<!-- De style straks wel in een eigen bestandje zetten! -->
	<style>
		body {
			background: #333;
		}
		#container {
			width: 840px;
			margin: auto; /*centreren*/
			border: 1px solid #FFF; /*wit randje*/
			border-radius: 10px; /*ronde hoeken*/
			padding: 20px; /*ruimte naar binnen*/
		}
		.item {
			border-radius: 10px; /*ronde hoeken*/
			width: 400px;
			/*De twee hieronder zorgen ervoor dat ze naast elkaar komen.
			2 items van 400px breedt dan passen er dus 2 in 800px
			(breedte van de container minus de padding links en rechts).
			De volgende komt eronder*/
			position: relative; 
			display: inline-block;
		}
		.item h2 {
			background: #FF8A00;
		}
		.item a {
			float: right; /*rechts plaatsen*/
		}
	</style>
</head>
<body>
	<div id="container">
		<h1>Items weergeven</h1>
		<?php
		// Resultaat ophalen (beter mysqlI gebruiken of PDO)
		// Beter je OR DIE weglaten en netjes foutafhandeling verwerken, bijvoorbeeld:
		// http://royduineveld.nl/blog/php/67/foutafhandeling-toevoegen-in-bestaand-script/
		$result = mysql_query("SELECT * FROM news ORDER BY id DESC");

		// Door de resultaten lopen
		while($row = mysql_fetch_array($result)):
			
			// $row is een array, met extract alle items naar variablen omzetten
			// scheelt weer elke keer $row[] te typen
			extract($row);
			?>
			<!-- Geen idee wat het precies is, maar misschien is een "unordered list" ofwel UL
			wel een betere optie dan div's -->
			<div class="item">
				<h2><?=$titel;?></h2>
				<a href="https://twitter.com/search?q=%23<?=$tag;?>" target="_blank">
					<img height="20" width="20" src="images/twitt.gif" />
				</a>
				<p><?=$bericht;?></p>
			</div>
			<?php
		endwhile;
		?>
	</div>
</body>
</html>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan