0

Sir I am using these codes

<div id="search">
        <label for="filter">Filter</label> <input type="text" name="filter" value="" id="filter" />
</div>   
<br /> 
          <table cellpadding="2" cellspacing="0" width="90%" id="resultTable">
          <thead>
            <tr>
              <th> <strong>ID</strong> </th>
              <th> <strong>Name</strong> </th>
              <th> <strong>Mobile</strong> </th>
              <th> <strong>City</strong> </th>
              <th> <strong>Country</strong> </th>
            </tr>
          </thead>
          <tbody>
<?php
$sql = "SELECT * from contacts order by name" ;
$select = mysqli_query($con, $sql);
$run_sel = mysqli_fetch_array($select);
$row=mysqli_num_rows($select);
//echo ($row);
$a = 1;
while($a<=$row)
{
    echo "<tr>";
    echo "<td> <a href='contacts.php?id=".$run_sel['id']."'>
    <img border=\"noborder\" src=\"images/pencil.png\" title=\"Display\"></a></td>";
    echo "<td align='left'> " . $run_sel["name"].  "</td>";
    echo "<td> " . $run_sel["moba"]. "</td>";
    echo "<td> " . $run_sel["city"]. "</td>";
    echo "<td> " . $run_sel["country"] . "</td>";
    echo "</tr>";
    $run_sel = mysqli_fetch_array($select);
    $a++;

}
?>
        </tbody>
       </table>      

These codes display following data
[IMG]http://i43.tinypic.com/or45r8.jpg[/IMG]

Now I want to apply incremental search with Filter box.

For example:

If I type "B" then all matching records (name field in table) which begins with "B" must appear in display list.

Please help

2
Contributors
12
Replies
42
Views
3 Years
Discussion Span
Last Post by tqmd1
Featured Replies
  • 1
    diafol 3,720   3 Years Ago

    "SELECT ... WHERE `name` LIKE 'B%'" So.. "SELECT ... WHERE `name` LIKE '$filter%'" Read More

  • 1
    diafol 3,720   3 Years Ago

    $filter = ''; if(isset($_GET['filter']) && trim($_GET['filter'])) { $input = trim($_GET['filter']); $input = strtoupper(substr($input,0,1)); if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$filter%'"; } $query = "SELECT ..." . $filter; now run the query and do your stuff on the page Read More

  • 1
    diafol 3,720   3 Years Ago

    That error message suggests that there is a typo or wrong fieldname/ tablename etc in the query. $sql = "SELECT * from contacts .$filter order by name"; You've included the concatenator (.) within the string - no need: $sql = "SELECT * from contacts $filter order by name"; Try that. Read More

  • 1
    diafol 3,720   3 Years Ago

    Sigh, you still haev't taken out the concatenator: $sql = "SELECT * from contacts .$filter order by name"; SHOULD BE $sql = "SELECT * from contacts $filter order by name"; Then... $table = ''; $select = mysqli_query($con, $sql); if(mysqli_num_rows($select)) { $table .= '<table cellpadding="2" cellspacing="0" width="80%" id="resultTable"> <thead> <tr> <th> … Read More

1
"SELECT ... WHERE `name` LIKE 'B%'"

So..

"SELECT ... WHERE `name` LIKE '$filter%'"

Edited by diafol

0

where should i put my query?

I want to populate it with
<input type="text" name="filter" value="" id="filter" />

Edited by tqmd1

1
$filter = '';
if(isset($_GET['filter']) && trim($_GET['filter']))
{
    $input = trim($_GET['filter']);
    $input = strtoupper(substr($input,0,1));
    if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$filter%'";
}    

$query = "SELECT ..." . $filter;

now run the query and do your stuff on the page

0

Sir I modified codes as you said.
Now codes are as follows

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>My Contacts</title>

    <style type="text/css">

    html {
overflow:auto;
}

    body{
        background-color:#e7f4fe;
        padding:15px;
        }

    #box2{
    float:left;
    width:500px;
    height:400px;
    border-color:#cceeff;
    padding:10px;
    background-color:#CCF;
    overflow:auto;
    }

    #box2 #resultTable{
    border-bottom: 7px solid #9BAFF1;
    border-collapse: collapse;
    border-top: 7px solid #9BAFF1;
    font-family: "Lucida Sans Unicode","Lucida Grande",Sans-Serif;
    font-size: 12px;
    margin: 10px;
    text-align: center;
    width: 480px;
    }

    #box2 #resultTable th{
    background: none repeat scroll 0 0 #B9C9FE;
    border-left: 1px solid #9BAFF1;
    border-right: 1px solid #9BAFF1;
    color: #003399;
    font-size: 13px;
    font-weight: normal;
    padding: 4px;
    }

    #box2 #resultTable td {
    background: none repeat scroll 0 0 #E8EDFF;
    border-left: 1px solid #AABCFE;
    border-top: 1px solid #9BAFF1;
    border-right: 1px solid #AABCFE;
    color: #666699;
    padding: 4px;
    }

    </style>
    </head>

    <body  onload="form1.filter.focus()">
    <div id="box2">

    <form name="form1" action=""  method="post">

        <label for="filter"><b>Filter</b></label>
        <input type="text" name="filter" value="" id="filter" />
        <input type="submit" value="Filter Result" name="display">

          <table cellpadding="2" cellspacing="0" width="80%" id="resultTable">
          <thead>
            <tr>
              <th> <strong>ID</strong> </th>
              <th> <strong>Name</strong> </th>
              <th> <strong>Mobile</strong> </th>
              <th> <strong>City</strong> </th>
              <th> <strong>Country</strong> </th>
            </tr>
          </thead>
          <tbody>
<?php

require_once("connect.php");

$filter = '';
if(isset($_GET['filter']) && trim($_GET['filter']))
{
    $input = trim($_GET['filter']);
    $input = strtoupper(substr($input,0,1));
    if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$filter%'";
}  

$sql = "SELECT * from contacts .$filter order by name"; 
$select = mysqli_query($con, $sql); 
$run_sel = mysqli_fetch_array($select); 
$row=mysqli_num_rows($select);  

$a = 1;
while($a<=$row)
{
    echo "<tr>";
    echo "<td> <a href='contacts.php?id=".$run_sel['id']."'>
    <img border=\"noborder\" src=\"images/pencil.png\" title=\"Display\"></a></td>";
    echo "<td align='left'> " . $run_sel["name"].  "</td>";
    echo "<td> " . $run_sel["moba"]. "</td>";
    echo "<td> " . $run_sel["city"]. "</td>";
    echo "<td> " . $run_sel["country"] . "</td>";
    echo "</tr>";
    $run_sel = mysqli_fetch_array($select);
    $a++;
 }
?>
        </tbody>
       </table>   
       </form>   
</div>   

    </body>
    </html>

But these codes still not work.
I enter some value into textbox and press Filter Result button then it says:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\Phonebook\filter_dia.php on line 93

and line number 93 is

$run_sel = mysqli_fetch_array($select); 

I think i have made some mistake in query.
Please help me to locate the error.

Thanks

1

That error message suggests that there is a typo or wrong fieldname/ tablename etc in the query.

$sql = "SELECT * from contacts .$filter order by name"; 

You've included the concatenator (.) within the string - no need:

$sql = "SELECT * from contacts $filter order by name"; 

Try that.

0

Sir now I have these codes, when I submit form then nothing appears.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>My Contacts</title>

    <style type="text/css">

    html {
overflow:auto;
}

    body{
        background-color:#e7f4fe;
        padding:15px;
        }

    #box2{
    float:left;
    width:500px;
    height:400px;
    border-color:#cceeff;
    padding:10px;
    background-color:#CCF;
    overflow:auto;
    }

    #box2 #resultTable{
    border-bottom: 7px solid #9BAFF1;
    border-collapse: collapse;
    border-top: 7px solid #9BAFF1;
    font-family: "Lucida Sans Unicode","Lucida Grande",Sans-Serif;
    font-size: 12px;
    margin: 10px;
    text-align: center;
    width: 480px;
    }

    #box2 #resultTable th{
    background: none repeat scroll 0 0 #B9C9FE;
    border-left: 1px solid #9BAFF1;
    border-right: 1px solid #9BAFF1;
    color: #003399;
    font-size: 13px;
    font-weight: normal;
    padding: 4px;
    }

    #box2 #resultTable td {
    background: none repeat scroll 0 0 #E8EDFF;
    border-left: 1px solid #AABCFE;
    border-top: 1px solid #9BAFF1;
    border-right: 1px solid #AABCFE;
    color: #666699;
    padding: 4px;
    }

    </style>
    </head>

    <body  onload="form1.filter.focus()">
    <div id="box2">

    <form name="form1" action=""  method="post">

        <label for="filter"><b>Filter</b></label>
        <input type="text" name="filter" value="" id="filter" />
        <input type="submit" value="Filter Result" name="display">

          <table cellpadding="2" cellspacing="0" width="80%" id="resultTable">
          <thead>
            <tr>
              <th> <strong>ID</strong> </th>
              <th> <strong>Name</strong> </th>
              <th> <strong>Mobile</strong> </th>
              <th> <strong>City</strong> </th>
              <th> <strong>Country</strong> </th>
            </tr>
          </thead>
          <tbody>
<?php

require_once("connect.php");

$filter = '';
if(isset($_GET['filter']) && trim($_GET['filter']))
{
    $input = trim($_GET['filter']);
    $input = (substr($input,0,1));
    if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$filter%'";


$sql = "SELECT * from contacts .$filter order by name"; 
$select = mysqli_query($con, $sql); 
$run_sel = mysqli_fetch_array($select); 
$row=mysqli_num_rows($select);  

$a = 1;
while($a<=$row)
{
    echo "<tr>";
    echo "<td> <a href='contacts.php?id=".$run_sel['id']."'>
    <img border=\"noborder\" src=\"images/pencil.png\" title=\"Display\"></a></td>";
    echo "<td align='left'> " . $run_sel["name"].  "</td>";
    echo "<td> " . $run_sel["moba"]. "</td>";
    echo "<td> " . $run_sel["city"]. "</td>";
    echo "<td> " . $run_sel["country"] . "</td>";
    echo "</tr>";
    $run_sel = mysqli_fetch_array($select);
    $a++;
 }
 }  
?>
        </tbody>
       </table>   
       </form>   
</div>   

    </body>
    </html>

I want to ask more, should I fill the value in this input?

<input type="text" name="filter" value="" id="filter" />

if yes then what variable should I use?

$filter or $input

1

Sigh, you still haev't taken out the concatenator:

$sql = "SELECT * from contacts .$filter order by name"; 

SHOULD BE

$sql = "SELECT * from contacts $filter order by name"; 

Then...

$table = '';
$select = mysqli_query($con, $sql); 
if(mysqli_num_rows($select))
{
    $table .= '<table cellpadding="2" cellspacing="0" width="80%" id="resultTable">
      <thead>
        <tr>
          <th> <strong>ID</strong> </th>
          <th> <strong>Name</strong> </th>
          <th> <strong>Mobile</strong> </th>
          <th> <strong>City</strong> </th>
          <th> <strong>Country</strong> </th>
        </tr>
      </thead>
      <tbody>";
    while($run_sel = mysqli_fetch_array($select))
    {
        $table .= "<tr><td> <a href='contacts.php?id={$run_sel['id']}'><img border='noborder' src='images/pencil.png' title='Display'></a></td><td align='left'>{$run_sel['name']}</td><td>{$run_sel['moba']}</td><td>{$run_sel['city']}</td><td>{$run_sel['country']}</td></tr>";
    }
    $table .= "</tbody></table>";
}

//later on...
echo $table;
0

Sir I have modified as you said above.
Now body tag is like this

<body  onload="form1.filter.focus()">
    <div id="box2">

    <form name="form1" action=""  method="post">

        <label for="filter"><b>Filter</b></label>
        <input type="text" name="filter" value="" id="filter" />
        <input type="submit" value="Filter Result" name="display">

          <table cellpadding="2" cellspacing="0" width="80%" id="resultTable">
          <thead>
            <tr>
              <th> <strong>ID</strong> </th>
              <th> <strong>Name</strong> </th>
              <th> <strong>Mobile</strong> </th>
              <th> <strong>City</strong> </th>
              <th> <strong>Country</strong> </th>
            </tr>
          </thead>
          <tbody>
<?php

require_once("connect.php");

$filter = "";
if(isset($_GET['filter']) && trim($_GET['filter']))
{
    $input = trim($_GET['filter']);
    $input = (substr($input,0,1));
    if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$filter%'";


$sql = "SELECT * from contacts $filter order by name"; 
$table = '';
$select = mysqli_query($con, $sql); 
if(mysqli_num_rows($select))
{
    $table .= '<table cellpadding="2" cellspacing="0" width="80%" id="resultTable">
      <thead>
        <tr>
          <th> <strong>ID</strong> </th>
          <th> <strong>Name</strong> </th>
          <th> <strong>Mobile</strong> </th>
          <th> <strong>City</strong> </th>
          <th> <strong>Country</strong> </th>
        </tr>
      </thead>
      <tbody>";
    while($run_sel = mysqli_fetch_array($select))
    {
        $table .= "<tr><td> <a href='contacts.php?id={$run_sel['id']}'><img border='noborder' src='images/pencil.png' title='Display'></a></td><td align='left'>{$run_sel['name']}</td><td>{$run_sel['moba']}</td><td>{$run_sel['city']}</td><td>{$run_sel['country']}</td></tr>";
    }
    $table .= "</tbody></table>";
}
//later on...
echo $table;
?>
        </tbody>
       </table>   
       </form>   
</div>   

    </body>

but it has many errors now.
Sir I am still unable to solve out the problems.

Please

0

Why are you using post and get? use method="get" in the form tag

0

Well, now when I enter any name in search box then it show all records of table.

I tested query in this way

$sql = "SELECT * from contacts $filter order by name"; 
echo $sql; 

it shows:
SELECT * from contacts WHERE name LIKE '%' order by name

It means $filter is not getting any value from form.

Should we fill value in this line

  <input type="text" name="filter" value="" />

Edited by tqmd1

0

My bad, the line should be...

if(ctype_alpha($input)) $filter = " WHERE `name` LIKE '$input%'";
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.