mysql search and display data help....
First of all this is a crazy thing I have just done.. so please sit back and read the whole post.............. Today I finished my math final and decided to learn a new programming language..... MYSQL. So I was able make my way to http://www.freewebmasterhelp.com/tutorials/phpmysql using Google I followed most of the tutorial and got the database setup... up until part 4; Everything works great and now I am just curious that how can I make a small page called search.php in which I can make a small search box. and have only one result display from the MySQL?
desiguru
Junior Poster in Training
63 posts since Aug 2006
Reputation Points: 10
Solved Threads: 1
Create a html form like this:
<form action="search.php" method="post">
<input type="text" name="search">
<input type="submit">
</form>
search.php
<?php
$search = "%" . $_POST["search"] . "%";
mysql_connect ("localhost", "myuser", "mypassword");
mysql_select_db ("mydatabase");
$query = "SELECT mycolumn FROM mytable WHERE mycolumn LIKE '$search'";
$result = mysql_query ($query);
if ($result) {
while ($row = mysql_fetch_array ($result)) {
echo $row[0] . "";
}
}
?>
pritaeas
Posting Expert
5,484 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
I got it to work but it displays only one column instead of showing all of the columns from the database.
Is there anyway I can show all of the columns?
desiguru
Junior Poster in Training
63 posts since Aug 2006
Reputation Points: 10
Solved Threads: 1
if ($result) {
while ($row = mysql_fetch_array ($result)) {
foreach ($row as $key => $value) {
echo "$key = $value";
}
echo "<hr>";
}
}
pritaeas
Posting Expert
5,484 posts since Jul 2006
Reputation Points: 653
Solved Threads: 875
For all:
all the "%" do is tell MySQL it is a wild card. So "am" with "%am%" pulls up anything with any number of letters before the combo "am" and any number of letters after:
name - n am e
tame - t am e
madam - mad am
ambulance - am bulance
understand? So if you're searching the database for a userid, you do not want the LIKE scenario, you want the normal "userid" not, "%userid%".
Furthermore, "%am" will pull only words beginning with anything but ending with am, like "sam", and same as the other way "am%" pulls words like "ambuleance".
For your search page, if you only want one result, add this line to your SQL query: "LIMIT 1"
This way it will only return one result and not waste memory holding the other 200 results that are being unused.
For homienick
So, following the code above as I am not a PHP programmer, use it like below to pull your users info:
<?php
$userid = $_POST["userid"];
mysql_connect ("localhost", "myuser", "mypassword");
mysql_select_db ("mydatabase");
$query = "SELECT mycolumn FROM mytable WHERE mycolumn=$userid"
$result = mysql_query ($query);
if ($result) {
//if this userid exists, do your coding here
}else{
//if this userid does not exist, do your coding here
}
?>
SheSaidImaPregy
Veteran Poster
1,080 posts since Sep 2007
Reputation Points: 43
Solved Threads: 68