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?

Test pagina


Code die ik nu heb:
Dit is het menu.

<?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'>&nbsp;$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'>&nbsp;$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'>&nbsp;$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.
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'>&nbsp;$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>';
?>
Bij mij werkt het goed hoor....
Daar ben ik weer.....

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?

Test pagina

code van menu.php:
<?php

foreach (range('A', 'Z') as $letter)
{
$class ^= 1;
echo '<table class="border' . $class . '" width="175" border="0" cellspacing="0" cellpadding="0">';


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'>&nbsp;$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.");

while ($row = mysql_fetch_object($result))
{
echo "<img src='plaatjes/smile.gif' border='0' align='left'><a href='?menu_id=$row->menu_id'>&nbsp;$row->menu_naam</a><br>\n";
}
echo '<a href="menu.php">Terug naar menu</a>';
echo '</td>';
echo '</tr>';
echo '</table>';
}

?>
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'>&nbsp;$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>';
}
}
?>
Moet deze link dan niet anders?

echo '<a href="menuA.php">Meer...</a>';

Iets in de trant van:

echo '<a href="meer.php?letter=' . $letter . '">Meer...</a>';

Zodat je weet om welke letter het gaat.
Ik zal zo even kijken, moet de tafel afruimen.
Ik had er al meer.php van gemaakt maar nog zonder die $letter erbij.

Het werkt niet bij mij. Maar ik weet ook niet goed wat ik in de tabel class moet zetten.

En hij laat nog steeds alle tabellen zien ook al zit er geen item in de database.

<?php

foreach (range('A', 'Z') as $letter)
{
$class_teller = 0;
$class_aantal = 3; // Het aantal classes dat je wilt gebruiken (0 tot $class_aantal-1)

echo '<table class="border' . $class_teller . '" width="175" border="0" cellspacing="0" cellpadding="0">';


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'>&nbsp;$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;

echo '</table>';
}
?>
<?

$sql_info = 'SELECT * FROM table WHERE veld="voorwaarde"';
$res_info = mysql_query($sql_info);

if ($res_info && mysql_num_rows($res_info) >= 1)
{
//er is resultaat -> Tabel maken!
echo '<table>';
echo '<tr>';
echo '<td>Kop1</td>';
echo '<td>Kop2</td>';
echo '<td>Kop3</td>';
echo '</tr>';

//resultaten ophalen!
while($row_info = mysql_fetch_array($res_info))
{

echo '<tr>';
echo '<td>'.$row_info['veld1'].'</td>';
echo '<td>'.$row_info['veld2'].'</td>';
echo '<td>'.$row_info['veld3'].'</td>';
echo '</tr>';

}

//en de tabel weer sluiten
echo '</table>';

} else {

echo 'Geen resultaten gevonden';

}
?>

op die manier los je je laatste probleem op

Reageren