I need help with debugging a php file that has to search a database and display the results in multiple pages. I use a mysql database to search.
This php file works well as far as the first page is displayed. When I click on the NEXT page link, it says,
"Notice: Undefined index: name in /services/web/content/search.php on line 7"
The line #7 is as follows, and my entire code is given below.
$SESSION['name'] = $REQUEST['name'];
I figure that the parameters are passed well but the search variable somehow becomes empty (or null).
Can someone help me find a solution for this problem? Thanks!
Wildcat
<?php
global $name;
if(empty($name))
{
$SESSION['name'] = $REQUEST['name'];
}
$name = $_REQUEST['name'];
// if(empty('name'))
// {
// echo "Sorry, I couldn't find any user that matches your query ($name)";
// exit;
// }
global $search;
$search = $name;
if (empty($search))
{
$search=$_REQUEST['name'];
print "$search";
}
$limit=20;
$pages=0;
$PHP_SELF= "search.php";
//print "$name";
print "$search";
if(!eregi("[[:alpha:]]", $search))
{
echo "Error, Please enter one or more characters to search!<br>";
exit;
}
if (empty($offset))
{
$offset=0;
}
if (empty($index))
{
$index=0;
}
$sql=mysql_query("(select phone, firstname, lastname, address, city, state, zip from directory where lastname='$search' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '%$search%' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '%$search' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '$search%' order by lastname)");
$numresults= mysql_num_rows($sql);
?>
<TABLE width="100%" border=2 cellspacing=0 cellpadding=0>
<TR>
<TH align="center">phone</TH>
<TH align="left">name</TH>
<TH align="center">street</TH>
<TH align="left">City, State, Zip</TH>
</TR>
<?php
//check the results are less than 20
if ($numresults == 0)
{
echo "Sorry, I couldn't find any user that matches your query ($search)";
exit;
}
else if ($numresults == 1)
{
echo "I've found <b>1</b> match!<br>";
}
else
{
echo "I've found <b>$numresults</b> matches! <br>";
}
$sql2= mysql_query("(select phone, firstname, lastname, address, city, state, zip from directory where lastname='$search' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '$search%' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '%$search%' order by lastname) union (select phone, firstname, lastname, address, city, state, zip from directory where lastname like '$search%' order by lastname) limit $offset, $limit");
global $results;
$results= mysql_num_rows($sql2);
print "There are $results\n results.";
//display the result
while ($row= mysql_fetch_array($sql2))
{
$index++;
$l_last =$row["lastname"];
$l_first=$row["firstname"];
$l_phone=$row["phone"];
$l_address=$row["address"];
$l_city=$row["city"];
$l_state=$row["state"];
$l_zip=$row["zip"];
echo "
<tr><td align='left'>$l_phone</td><td >$l_last, $l_first</td><td>$l_address</td><td>$l_city $l_state, $l_zip</td>
</tr>";
}
//calculate the number of pages the results will be shown
$pages = intval($numresults/$limit);
print "Total $pages pages\n";
//link to other results
if(($pages!= 0 and $pages!=1) or ($pages==1 and ($numresults%$limit))) // if numresults <= 1 skip the following
{
if ($offset!=0) // pass the previous link if offset is 0
{
$prevoffset=$offset-$limit;
//print "$prevoffset\n";
print "<a href=\"$PHP_SELF?offset=$prevoffset\">PREV</a> // \n";
}
//the variable $pages has integer of pages unless there is a remainder from division
if($numresults%$limit) // now $page has remainder add //one more page
{
$pages++;
//print "$pages\n";
}
//loop to make links
for ($i=1; $i<=$pages; $i++)
{
global $newoffset;
$newoffset=$limit*($i-1);
//print "$newoffset\n";
if($offset!=$newoffset) //Make links only for other //pages
{
print "<a onMouseOver=\"window.status='Page $i Results'; return true\"; href=\"$PHP_SELF?offset=$newoffset& index=$newoffset &results=$results &action=search\">$i</a> \n";
}
else
{
print "$i \n";
}
print "This is $newoffset<br>";
print "$search<br>";
print "$newoffset, $results, $search<br>";
}
//check whether next link is needed
if ($pages>=1 or ($pages==1 and ($numresults%$limit)))
{
if (($offset+$limit)<$numresults) //if it is last page skip next
{
$newoffset=$offset+$limit;
print "$newoffset\n";
print "<a href=\"$PHP_SELF?offset=$newoffset\">NEXT</a>\n";
}
}
}
?>