Hallo allemaal.

Ik ben net een beetje begonnen met php en loop tegen een uitdaging aan.

Ik heb gegevens in een database staan, en deze wil ik op de website tonen in 4 kollommen naast elkaar.

Tevens wil ik de oneven kollommen een bepaalde kleur geven en de even kollommen ook, hier loop ik tegen aan omdat ik niet een verschillende id kan meegeven aan de td.

mijn code zover:

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

$select = "SELECT * FROM `db_naam`;";       
$query = mysql_query($select);    

echo "<table border=\"0\">";    
echo "<tr>";

while ($qry = mysql_fetch_array($query)) {  

echo "<td width=\"128\"><a href=\"";echo $qry['link'];echo "\" target=\"_blanc\">;<img src=\"images/";echo $qry['logo'];echo"\" width=\"128\" border=\"0\"></a></td>";  
}

echo "</tr>";
echo "</table>";
?>
Kijk eens naar de PHP.
Veel korter, schoner, duidelijker.
Kijk ook goed wat ik doe met de punten enkele haakjes.

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

$query = mysql_query("SELECT link, logo FROM db_naam");

echo '<section class="logos">';
while ($res = mysql_fetch_array($query))
{
echo '<a href="'.$res['link'].'" target="_blank"><img src="images/'.$res['logo'].'"></a>';
}
echo '</section>';
?>

HTML

.logos
	{
	column-count: 4;
	column-gap: 5%;
	width: 100%;
	}

.logos a
	{
	display: block;
	border: 0;
	text-decoration: none;
	}
.logos a img
	{
	max-width: 128px;
	}
 
.logos a:nth-child(even)
	{
	background-color: #eee;
	}


En dan nog dit:


1. vermeld kolommen in je query
2. Ga niet nodeloos kopieren
3. target="blank.
4. Echo html in PHP met '. Escapen niet nodig.
5. Alles in 1 echo is makkelijker, duidelijker.
6. Houd je CSS uit de HTML (width border)
Eddy Erkelens op 16/08/2012 13:45:52

Kijk eens naar de PHP.
Veel korter, schoner, duidelijker.
Kijk ook goed wat ik doe met de punten enkele haakjes.

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

$query = mysql_query("SELECT link, logo FROM db_naam");

echo '<section class="logos">';
while ($res = mysql_fetch_array($query))
{
echo '<a href="'.$res['link'].'" target="_blank"><img src="images/'.$res['logo'].'"></a>';
}
echo '</section>';
?>
[/code]

CSS

.logos
	{
	column-count: 4;
	column-gap: 5%;
	width: 100%;
	}

.logos a
	{
	display: block;
	border: 0;
	text-decoration: none;
	}
.logos a img
	{
	max-width: 128px;
	}
 
.logos a:nth-child(even)
	{
	background-color: #eee;
	}


En dan nog dit:


1. vermeld kolommen in je query
2. Ga niet nodeloos kopieren
3. target="blank.
4. Echo html in PHP met '. Escapen niet nodig.
5. Alles in 1 echo is makkelijker, duidelijker.
6. Houd je CSS uit de HTML (width border)


Het dik gedrukte even aangepast ;)
Ach ja... Werkt het nou al?

[size=xsmall]Toevoeging op 16/08/2012 14:39:06:[/size]

Rutgerjan Meerwijk op 16/08/2012 13:39:29
Het zijn nogal veel velden, vandaar dat ik de * heb genomen.

Wel 2.... link en logo.

Dit is het begin van de tabel vandaar dat het er nu nog 2 zijn, er komen er nog een hoop bij, maar dacht begin eerst even met deze 2 totdat ik het werkend heb.

Ik heb de veranderingen doorgevoerd, maar nu krijg ik een warning.


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

edit:
die warning verwijst naar deze lijn:
while ($res = mysql_fetch_array($query))
Dan lukt je query dus niet.
Die geeft nu een boolean.... en dat kennen we als true/false.
Aangezien mysqli_query OF een resource geeft OF een false.... weet ik het wel.


Trouwens, je kan beter mysqli_query() gebruiken ipv mysql_query().
Ik pas mijn code wel even voor je aan....

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

$query = mysqli_query("SELECT link, logo FROM db_naam", $con);
if($query === false)
{
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ '.<br>';
}
else
{
echo '<section class="logos">';
while ($res = mysql_fetch_array($query))
{
echo '<a href="'.$res['link'].'" target="_blank"><img src="images/'.$res['logo'].'"></a>';
}
echo '</section>';
}
?>

Ik ga er van uit dat $con het resultaat van je connectie is.
Die moet je dus ook even veranderen naar mysqli (en alle andere aanroepen van mysql_query() dus ook.
Ik heb dit aangepast, de volledige code:

config.php
<?php
$db_config['server'] = 'localhost';
$db_config['username'] = 'user_username';
$db_config['password'] = 'Password';
$db_config['database'] = 'user_dbname';

mysql_connect($db_config['server'], $db_config['username'], $db_config['password']) or die(mysql_error()); mysql_select_db($db_config['database']) or die(mysql_error());

?>

index.php
<?php
include ('config.php');

$query = mysqli_query("SELECT link, logo FROM db_naam", $con);
if($query === false)
{
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ '.<br>';
}
else
{
echo '<section class="logos">';
while ($res = mysql_fetch_array($query))
{
echo '<a href="'.$res['link'].'" target="_blank"><img src="images/'.$res['logo'].'"></a>';
}
echo '</section>';
}
?>

Dit geeft een Parse error:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';'

Verwijst naar regel:
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ '.<br>';
Rutgerjan Meerwijk op 16/08/2012 15:04:29

Dit geeft een Parse error:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';'

Verwijst naar regel:
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ '.<br>';


Vreemd. Ik zie het even niet.
<?php
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ .'<br>';
?>
Maar de fout komt waarschijnlijk doordat $con (in de query) niet bestaat.
Ik dacht te zien dat de laatste punt voor de ' moest staan, dit heb ik gedaan, dan zie ik al meer.


Warning: mysqli_query() expects parameter 1 to be mysqli, string given in
verwijst naar:
$query = mysqli_query("SELECT link, logo FROM ver-aansprakelijk", $db_config);

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in
verwijst naar:
while ($res = mysql_fetch_array($query))
Je gebruikt nu alles door elkaar.

mysql_connect()
mysql_select_db()
mysql[color="#ff0000"]i[/color]_query()
mysql_fetch_array()
Oke, ik heb alles bekeken en veranderd, nu geen errors meer maar de melding
De query is mislukt op lijn 64 in index.php

die verwijst dan weer naar deze regel:
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ .'<br>';

config.php
<?php
$db_config['server'] = 'localhost';
$db_config['username'] = 'user_username';
$db_config['password'] = 'Password';
$db_config['database'] = 'user_dbname';

$con = mysql_connect($db_config['server'], $db_config['username'], $db_config['password']) or die(mysql_error()); mysql_select_db($db_config['database']) or die(mysql_error());
?>

index.php

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

$query = mysql_query("SELECT link, logo FROM ver-aansprakelijk", $con);
if($query === false)
{
//echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ .'<br>';
echo 'De query is mislukt op lijn '. __LINE__ .' in '. __FILE__ .'<br>';
}
else
{
echo '<section class="logos">';
while ($res = mysql_fetch_array($query))
{
echo '<a href="'.$res['link'].'" target="_blank"><img src="images/'.$res['logo'].'"></a>';
}
echo '</section>';
}
?>

Reageren