Ik heb aan paging (navigatie) script gekoppeld aan een database. Daaraan toegevoegd heb een search request voor op trefwoord zoeken en een letter request voor op alfabet sorteren. In het script heb ik een if else constructie gemaakt zodat de input bij het juiste query terecht komt, maar dit gaat fout bij de letter input. De eerste gaat de request wel door de goed lus, maar de te 2de keer gaat hij door de lus voor de search query. Hoe los ik dit op?

<?php
include "connect.php"; //verbinding maken

// how many rows to show per page
$rowsPerPage = 30;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;

if(isset($_REQUEST['search'])) // Zoeken op trefwoord
{
$search=$_REQUEST['search'];

$query = "SELECT COUNT(1) AS numrows FROM cat17 WHERE Familienaam LIKE '%$search%' || Auteur LIKE '%$search%' || Titel LIKE '%$search%'";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

$query = "SELECT * FROM cat17 WHERE Familienaam LIKE '%$search%' || Auteur LIKE '%$search%' || Titel LIKE '%$search%' LIMIT $offset, $rowsPerPage";
}
else if(isset($_REQUEST['letter'])) // Zoeken op letter
{
$letter = $_REQUEST['letter'];

$query = "SELECT COUNT(1) AS numrows FROM cat17 WHERE Familienaam LIKE '$letter%'";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

$query = "SELECT * FROM cat17 WHERE Familienaam LIKE '$letter%' LIMIT $offset, $rowsPerPage";
}
else{ // de complete database

$query = "SELECT COUNT(*) AS numrows FROM cat17";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

$query = "SELECT * FROM cat17"." LIMIT $offset, $rowsPerPage";
}

$sql = mysql_query($query) or die ( mysql_error( ) );

echo"<table width=\"100%\" border=0>";

while($row = mysql_fetch_array($sql)){

echo"<tr><td width=\"130\" valign=\"top\"><b>Familienaam:</b></td><td valign=\"top\">".$row['Familienaam']."</td></tr>";
echo"<tr><td valign=\"top\"><b>Auteur:</b></td><td valign=\"top\">".$row['Auteur']."</td></tr>";
echo"<tr><td valign=\"top\"><b>Titel:</b></td><td valign=\"top\">".$row['Titel']."</td></tr>";
echo"<tr><td valign=\"top\"><b>Nummer:</b></td><td valign=\"top\">".$row['Nummer']."</td></tr>";
echo"<tr><td valign=\"top\"><b>Prijs:</b></td><td valign=\"top\">".$row['Prijs']."</td></tr>";
echo"<tr><td colspan=\"2\"><hr></td></tr>";
}
echo"</table><br>";

// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

$self = $_SERVER['PHP_SELF'];

// creating 'previous' and 'next' link
// plus 'first page' and 'last page' link

// print 'previous' link only if we're not
// on page one
if ($pageNum > 1)
{
$page = $pageNum - 1;
$search = isset($_REQUEST['search']) ? $_REQUEST['search'] : null;
$letter = isset($_REQUEST['letter']) ? $_REQUEST['letter'] : null;

$prev = " <a href=\"$self?page=$page&search=$search&letter=$letter\">[Prev]</a> ";

$first = " <a href=\"$self?page=1&search=$search&letter=$letter\">[First Page]</a> ";
}
else
{
$prev = ' [Prev] '; // we're on page one, don't enable 'previous' link
$first = ' [First Page] '; // nor 'first page' link
}

// print 'next' link only if we're not
// on the last page
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;

$search = isset($_REQUEST['search']) ? $_REQUEST['search'] : null;
$letter = isset($_REQUEST['letter']) ? $_REQUEST['letter'] : null;

$next = " <a href=\"$self?page=$page&search=$search&letter=$letter\">[Next]</a> ";
$last = " <a href=\"$self?page=$maxPage&search=$search&letter=$letter\">[Last Page]</a> ";
}
else
{
$next = ' [Next] '; // we're on the last page, don't enable 'next' link
$last = ' [Last Page] '; // nor 'last page' link
}

// print the page navigation link
echo "<table width=\"100%\"><tr><td>" . $first . $prev . "</td><td align=\"center\"> Showing page <strong>$pageNum</strong> of <strong>$maxPage</strong> pages </td><td align=\"right\">" . $next . $last . "</td></tr></table>";

?>
else if(isset($_REQUEST['letter']))


waarom gebruik je dan niet gewoon

elseif(isset($_REQUEST['letter']))

let wel op dat je dan je { en } nog gelijk en goed hebt staan
elseif of else if geeft het zelfde relultaat. Ik kom van Javascript vandaar dat ik if else gebruik.

Maar goed, het probleem is nog niet opgelost...
Sorry lads.. ik heb het probleem al opgelostgroet,
Elmer
Elmer Kouwenberg schreef op 18.01.2006 13:38
Sorry lads.. ik heb het probleem al opgelostgroet,
Elmer

Gaarne altijd de oplossing vermelden voor de andere lezers.
.. ja je het gelijk. Ik heb '&& $search != null' toegevoegd, dus zo:

if(isset($_REQUEST['search']))
{
$search=$_REQUEST['search'];
}

if(isset($_REQUEST['search']) && $search != null)
{ etc.}



Reageren