Ik heb een menu waar ik maximaal 5 items in wil hebben staan met de letter A.
Als er meer dan 5 items in de database zitten moet er een link onder komen te staan met "meer..."
Ik dacht dat ik het goed had gedaan maar het werkt niet. Kan iemand even kijken wat er niet goed gaat?
<?php
echo '<table width="200" border="0" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td>';
//Als er meer winkels met de letter A zijn dan 5 laat dan een link zien met alle winkels met de letter A
switch (true)
{
case (($row->menu_naam) > 5):
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "A" ORDER BY menu_naam LIMIT 0,5');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
while ($row = mysql_fetch_object($result))
{
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
echo '<a href="menuA.php" target="_self">Meer...</a>';
break;
//einde meer winkels met de letter A
//Laat de 5 winkels zien met de letter A
case (($row->menu_naam) <= 5):
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "A" ORDER BY menu_naam ');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
while ($row = mysql_fetch_object($result))
{
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
break;
//einde 5 winkels met de letter A
}//einde switch
echo '</td>';
echo '</tr>';
echo '</table>';
Hoi Elsy, dat is al weer een tijdje geleden. Groetjes.
Ik zou het zo doen.
<?php
echo '<table width="200" border="0" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td>';
//Als er meer winkels met de letter A zijn dan 5 laat dan een link zien met alle winkels met de letter A
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "A" ORDER BY menu_naam LIMIT 0,6');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
$i = 0;
while($i < 5 AND $row = mysql_fetch_object($result))
{
$i++;
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
if($row = mysql_fetch_object($result))
{
echo '<a href="menuA.php" target="_self">Meer...</a>';
}
echo '</td>';
echo '</tr>';
echo '</table>';
?>
Edit: Je kan dit zelfs ook nog een een loop gooien van A tot en met Z.
Edit2: Effectiever gemaakt.
?
Onbekende gebruiker
16-06-2006 11:49
Nou, bedankt, dit werkt in ieder geval.
Inderdaad wil ik het helemaal voor het alfabet hebben, misschien kun je hier nog mee helpen?
Het probleem is nu weer, wat ik dus altijd heb, dat als je op "meer..." klikt, dat menu niet in de html tabel opent maar in een nieuw venster, terwijl ik er target=_self in heb gezet.
Moet nu de kids uit school halen dus duurt even voor je een reactie krijgt.
Zoiets? En ik heb de target weggehaald, kijk even of het nou wél goed gaat.
<?php
echo '<table width="200" border="0" cellspacing="0" cellpadding="0">';
foreach (range('A', 'Z') as $letter)
{
echo '<tr>';
echo '<td>';
//Als er meer winkels met de letter A zijn dan 5 laat dan een link zien met alle winkels met de letter A
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = ' . $letter . ' ORDER BY menu_naam LIMIT 0,6');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
$i = 0;
while($i < 5 AND $row = mysql_fetch_object($result))
{
$i++;
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
if($row = mysql_fetch_object($result))
{
echo '<a href="menuA.php">Meer...</a>';
}
echo '</td>';
echo '</tr>';
}
echo '</table>';
?>
Hier ( ' . $letter . ' ) moest ik nog even dubbele " omheen zetten en toen werkte het.
Ik heb nog iets gewijzigd zodat de tabellen om en om een andere border kleur krijgen. Weet je trouwens of je nog meer kleuren kunt gebruiken, of blijft het beperkt tot 2. Hij laat nu ook de tabellen zien van het hele alfabet. Kun je instellen dat hij alleen die letters van het alfabet laat zien waar items inzitten?
Het andere werkt nog niet.
Als je op "meer winkels..." klikt krijg je de melding dat er geen verbinding gemaakt kan worden. Dit komt volgens mij omdat hij een nieuwe pagina opent.
Die pagina heet "meer.php" en daar heb ik alleen maar het menu in gezet. Of moet ik hier de hele pagina weer omheen zetten?
echo '<tr>';
echo '<td >';
//Als er meer winkels zijn dan 5 met de letters A t/m Z laat dan een link zien met alle winkels met de letter A t/m Z
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "' . $letter . '" ORDER BY menu_naam LIMIT 0,6');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
$i = 0;
while($i < 5 AND $row = mysql_fetch_object($result))
{
$i++;
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
if($row = mysql_fetch_object($result))
{
echo '<a href="meer.php">Meer winkels...</a>';
}
echo '</td>';
echo '</tr>'.ENTER;
echo '</table>';
}
?>
code van meer.php:
<?php
echo '<table width="175" border="0" cellspacing="0" cellpadding="0">';
foreach (range('A', 'Z') as $letter)
{
echo '<tr>';
echo '<td>';
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "' . $letter . '" ORDER BY menu_naam ');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
Met dit geeft ie alléén iets als er iets is gevonden en je kan opgeven hoeveel classes je wilt gebruiken.
<?php
$class_teller = 0;
$class_aantal = 2; // Het aantal classes dat je wilt gebruiken (0 tot $class_aantal-1)
foreach (range('A', 'Z') as $letter)
{
//Als er meer winkels met de letter A zijn dan 5 laat dan een link zien met alle winkels met de letter A
$query = "SELECT * FROM menu WHERE LEFT(menu_naam,1) = '" . $letter . "' ORDER BY menu_naam LIMIT 0,6";
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
if(mysql_num_rows($result) > 0) // Er is iets gevonden
{
echo '<table width="200" class="border' . $class_teller . '" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td>';
$i = 0;
while($i < 5 AND $row = mysql_fetch_object($result))
{
$i++;
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
if($row = mysql_fetch_object($result))
{
echo '<a href="menuA.php">Meer...</a>';
}
echo '</td>';
echo '</tr>';
$class_teller = ($class_teller++) % $class_aantal;
echo '</table>';
}
}
?>
echo '<tr>';
echo '<td >';
//Als er meer winkels zijn dan 5 met de letters A t/m Z laat dan een link zien met alle winkels met de letter A t/m Z
$query = ('SELECT * FROM menu WHERE LEFT(menu_naam,1) = "' . $letter . '" ORDER BY menu_naam LIMIT 0,6');
$result = mysql_query($query) or die ("Sorry maar ik kan het menu niet weergeven, probeer het later opnieuw.");
$i = 0;
while($i < 5 AND $row = mysql_fetch_object($result))
{
$i++;
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'> $row->menu_naam</a><br>\n";
}
if($row = mysql_fetch_object($result))
{
echo '<a href="meer.php?letter=' . $letter . '">Meer winkels...</a>';
}
echo '</td>';
echo '</tr>'.ENTER;
$class_teller = ($class_teller++) % $class_aantal;