Hallo,

Ik heb een probleem. Ik wil namelijk een lijst uit mysql halen en daarvoor de volgende regels geschreven:

<link href="List.css" rel="stylesheet" type="text/css" />

<?php

require_once"database_connect.php";

$sql = mysql_query("SELECT * FROM producten ORDER BY id ASC");
$run = mysql_query($sql);

echo '<ul>';
while ($rows = mysql_fetch_assoc($sql)){
$name = "Product title";
$comments = "Product info";

echo '<li />' .'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] ;

echo '</ul>';

}

?>

Echter krijg ik dan wel een lijst met alle gegevens uit mysql maar alleen het eerste item uit de lijst heeft de opmaak van de css regel. (met een background e.d.) en de overige hebben dat niet. Maar het vreemde is dat de andere items weer wel de hover effect uit de css regels hebben. Ter verduideling hier de css regels:

#wrapper ul {
list-style:none;
cursor: pointer;
}

#wrapper ul li{
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#F00;

}

Iemand enig idee hoe ik dit kan verhelpen?

Ik kan ook nog een plaatje ter verduideling van de situatie bijvoegen maar dan moet iemand mij even vertellen hoe dat hier in zijn werking gaat.

Bvd Tom
Deze: <li /> bestaat niet.
Wel: <li>met tekst ertussen</li>
Ik heb nu de code gewijzigd naar:

<?php
echo '<ul>';
while ($rows = mysql_fetch_assoc($result)){
$name = "Product_title";
$comments = "Product_info";


echo '<li>' . 'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] . '</li>';
echo '</ul>';

}

?>

met de css regels:

#wrapper ul {
list-style:none;
cursor: pointer;
}

#wrapper li {
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#F00;

}

#wrapper li:hover{
font-size:16px;
font-family:"Times New Roman", Times, serif;
background:#03F;

}

Ik heb nu de css een beetje aangepast en nu hebben alle items een background:#F00 en een hover effect background:#03F

Maar nu is de eerste item ongeveer 25px naar rechts uitgelijnd en de rest niet en heeft het eerste item een pointer (zoals opgegeven in de css) en de rest ook niet.

Ik vindt het vooral vreemd dat alleen de eerste item aan alle voorwaarde voldoet en de daarop volgende niet meer.

Wat zie ik over het hoofd?

Volgorde klopt niet.

<?php
echo '<ul>';
while (.......){
echo '<li>' .
'</li>';
echo '</ul>';
}
?>

Je opent <ul> slechts 1 keer.
Je sluit </ul> net zo vaak als dat de while() loopt.
aha...ik heb nu:

<?php
while ($rows = mysql_fetch_assoc($result)){
$name = "Product_title";
$comments = "Product_info";

echo '<ul>';
echo '<li>' . 'Name: ' . $rows[$name] . '<br />'
. 'Comment: ' . $rows[$comments] . '</li>';
//'<li>' '</li>'
echo '</ul>';

}

?>

en nu werkt hij zoals ik hem wil hebben!

-SanThe- je bent de beste!

Tnx, Tom
- SanThe - op 15/09/2011 15:13:20

Het benoemen van $vars die verder niet zullen veranderen doe je NOOIT in een (while)loop. Dat kost alleen maar extra tijd. Dus regels 33 en 34 horen vóór de while(). Beter nog: Gewoon helemaal niet aanmaken, maar gewoon de namen in $rows['hier_de_naam'] zetten.


Nou dit nog even doen.
Als ik de $vars niet aanmaak maar alleen in $rows['hier_de_naam'] plaats is dat ook sneller dan dat ik ze boven de loop neer zet of maakt dat niet uit?

Want ik vindt het zelf overzichteljker om ze in $vars neer te zetten.
Het zal een heeeeeeeeel klein beetje sneller zijn, maar dat is te verwaarlozen. Maar haal het definiëren zeker buiten de loop, want dat kost ietsje meer tijd.

Reageren