----- Original Message -----
From: "yousuf hussain"
Dear members:
I came across a problem that while searching a record
from a database it
only returns one field record. i want to search it with different option.
Code is given below
Only Unit record is returned
<snip>
<?php
$searchText = $_REQUEST["search"];
// Try $searchText = $_POST['search'];
include "header.php";
?>
<snip>
<?php
include "connection.php";
if($searchText=="syard"){
$mySQL = "select * from addbunglow where syard='$searchText' and
isactive=1 order by bangid";
// try $mySQL = "SELECT * FROM addbunglow WHERE syard='" . $searchText . "' AND
isactive=1 ORDER BY
bangid";
// or $mySQL = 'SELECT * FROM addbunglow WHERE syard=\'' . $searchText . '\'
AND isactive=1 ORDER BY
bangid';
// or $mySQL = "SELECT * FROM addbunglow WHERE syard=\'$searchText\' AND
isactive=1 ORDER BY
bangid";
echo "syard:".$searchText;
}
else if($searchText=="price"){
$mySQL = "select * from addbunglow where price='$searchText' and
isactive=1 order by bangid";
echo "price:".$searchText;
}
else {
$mySQL = "select * from addbunglow where unit='$searchText' and
isactive=1 order by bangid";
echo "unit:".$searchText;
}
$result = mysql_query($mySQL);
$counter = 1;
while($row = mysql_fetch_array($result))
// You are fetching an array of rows so why use while as there is only one
array of rows to be
fetched.
// Either use $rowS = msql_fetch_array() and then use foreach($rowS as $row) or
// while($row = mysql_fetch_row($result))
<td ><?php echo $counter;?></td>
<td ><?php echo $row["syard"];?></td>
<td ><?php echo $row["street"];?></td>
<td ><?php echo $row["phase"];?></td>
<td ><?php echo $row["unit"];?></td>
<td ><?php echo $row["catagory"];?></td>
<td ><?php echo $row["price"];?></td>
<td><?php echo $row["comments"];?></td>
</tr>
It is really good to see the use of associative MySQL arrays. I only use
mysql_fetch_assoc()
although an array of rows is numerically indexed. This saves much heartache
when making changes to
the database structure.
<td ><?php echo $row["syard"];?></td>
I would do this differently -
<td ><?php echo($row['syard']); ?></td>
php is mostly white space insensitive so take advantage of this. It makes code
easier to read by
placing spaces between all units of code. I use $var['key'] rather than
$var["key"] as there is no
need to parse a variable key for other variables.
In fact I never use echo("The time is $time"); instead I use echo('The time is'
. $time); Especially
with mysql queries. Just remember to have spaces where needed -
$query = 'SELECT COUNT(*) FROM users, groups';
$query .= ' WHERE users.GroupID = groups.GroupID';
$query .= ' AND groups.GroupType = ' . $grouptype;
MySQL doesn't need single quotes (') around table and field names if you use
the white space
correctly in queries UNLESS you have spaces in table or field names in the
database. Save yourself a
lot of trouble tracking down missing or extra quotes in query string by not
using spaces in
table/field names in the database.
The echo 'test'; verses my echo('test'); is a bad habit of mine. I was well
into learning php before
I discovered that echo was a primitive rather than a function. Like return,
continue, break etc.
Here are some simple database abstractions.
// ######## function db_connect() ########
function db_connect()
{
global $db_handle;
$db_handle = mysql_connect('host', 'username', 'password'); // Local access
mysql_select_db('databasename'); // Local access
}
// ######## function db_to_array() ########
function db_to_array($query)
{
global $db_handle;
$result = mysql_query($query, $db_handle);
if(mysql_error($db_handle)) echo(mysql_error($db_handle) . "<br />\n" .
$query . "<br />\n");
if(mysql_num_rows($result) == 0) return FALSE;
if(mysql_error($db_handle)) echo(mysql_error($db_handle) . "<br />\n" .
$query . "<br />\n");
$responce = mysql_fetch_row($result);
return $responce[0];
}
// ######## function db_to_arrays() ########
function db_to_arrays($query)
{
//echo($query . "<br>\n");
global $db_handle;
$result = mysql_query($query, $db_handle);
if(mysql_error($db_handle)) echo(mysql_error($db_handle) . "<br />\n" .
$query . "<br />\n");
if(mysql_num_rows($result) == 0) return FALSE;
if(mysql_error($db_handle)) echo(mysql_error($db_handle) . "<br />\n" .
$query . "<br />\n");
while($array = mysql_fetch_assoc($result))
{
$db_data[] = $array;
}
return $db_data;
}