Jump to content

Need help with a search script. *SOLVED*


pocobueno1388

Recommended Posts

I have a couple of forms that the user can fill out that will search through the database and it will return results according to what they typed in.

The feilds they fill out are:

-Name (users input text)
-ID (users input numbers)
-Breed (This is a drop down box)
-For sale? (dropdown box that contains 'yes' or 'no')

I would like it to where they don't have to fill out all the fields, yet they will get the result they are looking for.
For example, if they know the name of the dog and just type in the name, I want it to pull that dog's name from the database.
I got the name and ID feilds to work, but I am not sure how to incorparate the 'breed' and 'for sale?' fields into my code.

Code:

[code]
<?php
include 'header.php';

if ($_POST['dogsearch']) {

$dogname = $_POST['dogname'];
$dogid = $_POST['dogid'];

$result = mysql_query("SELECT dogID, name FROM dog WHERE name='$dogname' OR dogID='$dogid'");

$row = mysql_fetch_assoc($result);




$sql_name_check = mysql_query("SELECT dogID, name FROM dog WHERE name='$dogname' OR dogID='$dogid'");

$name_check = mysql_num_rows($sql_name_check);




if($name_check == 0){

    print "<table width='40%' bgcolor='49614A'><td align='center' bgcolor='788D7A'><b>No such dog!</b></td></table></b>";
   
} else {


print<<<HERE

<table width="90%" align="left">
<td>

<h2>Search Results:</h2><p>


<a href="dog.php?id=$row[dogID]">$row[name] ($row[dogID])</a>

</td></table>

HERE;

}
exit;
}

print<<<HERE

<table width="90%" align="left">
<td>

<h3>Search Dogs</h3>

<form action="dogsearch.php?action=search" method="POST">
Name:<br>
<input type="text" name="dogname"><p>
ID:<br>
<input type="text" name="dogid" size=8><p>

<select name="breed">
<option value="">No Breed</option>
<option value="Afghan Hound">Afghan Hound</option>
<option value="Airedale Terrier">Airedale Terrier</option>
<option value="Alaskan Husky">Alaskan Husky</option>
<option value="Alaskan Malamute">Alaskan Malamute</option>
<option value="American Bulldog">American Bulldog</option>
<option value="American Eskimo Dog">American Eskimo Dog</option>
<option value="American Indian Dog">American Indian Dog</option>
<option value="American Pitbull Terrier">American Pitbull Terrier</option>
<option value="American White Shepherd">American White Shepherd</option>
<option value="Anatolian Shepherd">Anatolian Shepherd</option>
<option value="Australian Cattle Dog">Australian Cattle Dog</option>
<option value="Australian Koolie">Australian Koolie</option>
<option value="Australian Shepherd">Australian Shepherd</option>
<option value="Basenji">Basenji</option>
<option value="Basset Hound">Basset Hound</option>
<option value="Beagle">Beagle</option>
<option value="Bearded Collie">Bearded Collie</option>
<option value="Bedlington Terrier">Bedlington Terrier</option>
<option value="Belgian Malinois">Belgian Malinois</option>
<option value="Belgian Sheepdog">Belgian Sheepdog</option>
<option value="Belgian Tervuren">Belgian Tervuren</option>
<option value="Bernese Mountain Dog">Bernese Mountain Dog</option>
<option value="Bloodhound">Bloodhound</option>
<option value="Border Collie">Border Collie</option>
<option value="Border Terrier">Border Terrier</option>
<option value="Borzoi">Borzoi</option>
<option value="Boston Terrier">Boston Terrier</option>
<option value="Bouvier des Flandres">Bouvier des Flandres</option>
<option value="Boxer">Boxer</option>
<option value="Boykin Spaniel">Boykin Spaniel</option>
<option value="Briard">Briard</option>
<option value="Brittany Spaniel">Brittany Spaniel</option>
<option value="Brussels Griffon">Brussels Griffon</option>
<option value="Bull Terrier">Bull Terrier</option>
<option value="Bulldog">Bulldog</option>
<option value="Bullmastiff">Bullmastiff</option>
<option value="Cairn Terrier">Cairn Terrier</option>
<option value="Canaan Dog">Canaan Dog</option>
<option value="Cardigan Welsh Corgi">Cardigan Welsh Corgi</option>
<option value="Caucasian Ovtcharka">Caucasian Ovtcharka</option>
<option value="Chart Polski">Chart Polski</option>
<option value="Chesapeake Bay Retriever">Chesapeake Bay Retriever</option>
<option value="Chihuahua">Chihuahua</option>
<option value="Chinese Crested">Chinese Crested</option>
<option value="Chinese Shar-Pei">Chinese Shar-Pei</option>
<option value="Chinook">Chinook</option>
<option value="Chow-chow">Chow-chow</option>
<option value="Clumber Spaniel">Clumber Spaniel</option>
<option value="Cocker Spaniel">Cocker Spaniel</option>
<option value="Curly-Coated Retriever">Curly-Coated Retriever</option>
<option value="Dachshund">Dachshund</option>
<option value="Dalmatian">Dalmatian</option>
<option value="Doberman Pinscher">Doberman Pinscher</option>
<option value="Dutch Shepherd">Dutch Shepherd</option>
<option value="English Foxhound">English Foxhound</option>
<option value="English Mastiff">English Mastiff</option>
<option value="English Setter">English Setter</option>
<option value="English Shepherd">English Shepherd</option>
<option value="English Springer Spaniel">English SpringerSpaniel</option>
<option value="Eurasier">Eurasier</option>
<option value="Flat-Coated Retriever">Flat-Coated Retriever</option>
<option value="French Bulldog">French Bulldog</option>
<option value="German Pinscher">German Pinscher</option>
<option value="German Shepherd">German Shepherd</option>
<option value="German Shorthaired Pointer">German Shorthaired Pointer</option>
<option value="German Wirehaired Pointer">German Wirehaired Pointer</option>
<option value="Giant Schnauzer">Giant Schnauzer</option>
<option value="Golden Retriever">Golden Retriever</option>
<option value="Gordon Setter">Gordon Setter</option>
<option value="Great Dane">Great Dane</option>
<option value="Greater Swiss Mountain Dog">Greater Swiss Mountain Dog</option>
<option value="Greyhound">Greyhound</option>
<option value="Harrier">Harrier</option>
<option value="Havanese">Havanese</option>
<option value="Hovawart">Hovawart</option>
<option value="Irish Setter">Irish Setter</option>
<option value="Irish Terrier">Irish Terrier</option>
<option value="Irish Wolfhound">Irish Wolfhound</option>
<option value="Italian Greyhound">Italian Greyhound</option>
<option value="Jack Russel Terrier">Jack Russel Terrier</option>
<option value="Japanese Chin">Japanese Chin</option>
<option value="Kerry Blue Terrier">Kerry Blue Terrier</option>
<option value="Komondor">Komondor</option>
<option value="Labrador Retriever">Labrador Retriever</option>
<option value="Long-haired Collie">Long-haired Collie</option>
<option value="Maltese">Maltese</option>
<option value="Manchester Terrier">Manchester Terrier</option>
<option value="Maremma Sheepdog">Maremma Sheepdog</option>
<option value="Mastiff">Mastiff</option>
<option value="Miniature Australian Shepherd">Miniature Australian Shepherd</option>
<option value="Miniature Dachshund">Miniature Dachshund</option>
<option value="Miniature Pinscher">Miniature Pinscher</option>
<option value="Miniature Schnauzer">Miniature Schnauzer</option>
<option value="Old English Sheepdog">Old English Sheepdog</option>
<option value="Otterhound">Otterhound</option>
<option value="Papillon">Papillon</option>
<option value="Pekingese">Pekingese</option>
<option value="Pembroke Welsh Corgi">Pembroke Welsh Corgi</option>
<option value="Plott">Plott</option>
<option value="Pointer">Pointer</option>
<option value="Pomeranian">Pomeranian</option>
<option value="Poodle">Poodle</option>
<option value="Pug">Pug</option>
<option value="Rottweiler">Rottweiler</option>
<option value="Saarloos Wolfhound">Saarloos Wolfhound</option>
<option value="Saint Bernard">Saint Bernard</option>
<option value="Saluki">Saluki</option>
<option value="Samoyed">Samoyed</option>
<option value="Schipperke">Schipperke</option>
<option value="Scottish Deerhound">Scottish Deerhound</option>
<option value="Scottish Terrier">Scottish Terrier</option>
<option value="Shetland Sheepdog">Shetland Sheepdog</option>
<option value="Shiba Inu">Shiba Inu</option>
<option value="Shih Tzu">Shih Tzu</option>
<option value="Shikoku">Shikoku</option>
<option value="Siberian Husky">Siberian Husky</option>
<option value="Siberian Laika">Siberian Laika</option>
<option value="Sloughi">Sloughi</option>
<option value="Smooth Collie">Smooth Collie</option>
<option value="Smooth Fox Terrier">Smooth Fox Terrier</option>
<option value="Soft Coated Wheaten Terrier">Soft Coated Wheaten Terrier</option>
<option value="Staffordshire Bull Terrier">Staffordshire Bull Terrier</option>
<option value="Sussex Spaniel">Sussex Spaniel</option>
<option value="Swedish Vallhund">Swedish Vallhund</option>
<option value="Taiwan Dog">Taiwan Dog</option>
<option value="Tibetan Spaniel">Tibetan Spaniel</option>
<option value="Toy Fox Terrier">Toy Fox Terrier</option>
<option value="Toy Poodle">Toy Poodle</option>
<option value="Toy Spaniel">Toy Spaniel</option>
<option value="Welsh Springer Spaniel">Welsh Springer Spaniel</option>
<option value="Welsh Terrier">Welsh Terrier</option>
<option value="Yorkshire Terrier">Yorkshire Terrier</option>

</select><p>

<input type="submit" name="dogsearch" value="Search">
        </form>

</td></table>

HERE;

?>
[/code]

NOTE: I didn't include the 'for sale?' form in this code.

This is this part of code that I don't know how to incorparate the 2 last feilds in.

[code]$result = mysql_query("SELECT dogID, name FROM dog WHERE name='$dogname' OR dogID='$dogid'");[/code]

If you guys need anymore information, just let me know.

I greatly appreciate any help =)



Link to comment
Share on other sites

That is my problem...I don't know how to ignore empty fields.

Would I just do an if statement?

[code]
if ($name){
      $result = mysql_query("SELECT dogID, name FROM dog WHERE name='$dogname'");
}
[/code]

Then just do that for each form? That doesn't seem like it would work to me...I don't know though.
Link to comment
Share on other sites

You'd lose data if they filled in more than one field. Just build a smarter query. Here's a sloppy example I threw together:

[code=php:0]if($dogname) $my_array[$i++]=" `dogname` = '$dogname'";
if($dogid) $my_array[$i++]=" `dogid` = '$dogid'";
if($breed) $my_array[$i++]=" `breed ` = '$breed'";
// etc //
reset ($my_array);
$query = "SELECT `dogID`, `name` FROM `dog`";
if($my_array) $query.=" WHERE ";
do {
    $query.=current($my_array)." AND";
} while(next($my_array));
$query=substr($query,0,-4); //removes the trailing AND from the end
$result = mysql_query($query);[/code]
Link to comment
Share on other sites

Sorry, I tend to overcomplicate things... lets simplify:

[code=php:0]
$query = "SELECT `dogID`, `name` FROM `dog` WHERE 1";
if($dogname) $query.=" AND `dogname` = '$dogname'";
if($dogid) $query.=" AND `dogid` = '$dogid'";
if($breed) $query.=" AND `breed ` = '$breed'";
$result = mysql_query($query);[/code]


[b]EDIT:[/b] forgot the dots, Dooh!
Link to comment
Share on other sites

You could also consider doing a full-text index on your fields being searched and query by relevance like so:

[code=php:0]
<?php
$query = "SELECT MATCH(name,breed) AGAINST ('$single_key_word') AS relevance, name, breed
FROM dog
HAVING relevance > 0
ORDER BY relevance DESC";
?>
[/code]

This would be a true search engine and bring back results ordered by their relevance.  Remember, the fields (name,breed) will have to have the FULLTEXT index assigned.
Link to comment
Share on other sites

Much much simpler to understand, lol.

Here is my code now, I am getting an error with my mysql_fetch_assoc(). Here is the error:

[code]
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/colin/public_html/dogsearch.php on line 16
[/code]

Here is the code that goes along with that error:

[code]
$dogname = $_POST['dogname'];
$dogid = $_POST['dogid'];
$breed = $_POST['breed'];

$query = "SELECT `dogID`, `name` FROM `dog` WHERE 1";
if($dogname) $query.=" AND `dogname` = '$dogname'";
if($dogid) $query.=" AND `dogid` = '$dogid'";
if($breed) $query.=" AND `breed ` = '$breed'";
$result = mysql_query($query);

$row = mysql_fetch_assoc($result); // NOT VALID...?
[/code]

Here is the entire code:

[code]
<?php
include 'header.php';

if ($_POST['dogsearch']) {

$dogname = $_POST['dogname'];
$dogid = $_POST['dogid'];
$breed = $_POST['breed'];

$query = "SELECT `dogID`, `name` FROM `dog` WHERE 1";
if($dogname) $query.=" AND `dogname` = '$dogname'";
if($dogid) $query.=" AND `dogid` = '$dogid'";
if($breed) $query.=" AND `breed ` = '$breed'";
$result = mysql_query($query);

$row = mysql_fetch_assoc($result);




$sql_name_check = mysql_query("SELECT dogID, name FROM dog WHERE name='$dogname' OR dogID='$dogid'");

$name_check = mysql_num_rows($sql_name_check);




if($name_check < 0){

    print "<table width='40%' bgcolor='49614A'><td align='center' bgcolor='788D7A'><b>No such dog!</b></td></table></b>";
   
} else {


print<<<HERE

<table width="90%" align="left">
<td>

<h2>Search Results:</h2><p>


<a href="dog.php?id=$row[dogID]">$row[name] ($row[dogID])</a>

</td></table>

HERE;

}
exit;
}

print<<<HERE

<table width="90%" align="left">
<td>

<h3>Search Dogs</h3>

<form action="dogsearch.php?action=search" method="POST">
Name:<br>
<input type="text" name="dogname"><p>
ID:<br>
<input type="text" name="dogid" size=8><p>
<select name="breed"><option value="">No Breed</option>
<option value="Afghan Hound">Afghan Hound</option>
<option value="Airedale Terrier">Airedale Terrier</option>
<option value="Alaskan Husky">Alaskan Husky</option>
<option value="Alaskan Malamute">Alaskan Malamute</option>
<option value="American Bulldog">American Bulldog</option>
<option value="American Eskimo Dog">American Eskimo Dog</option>
<option value="American Indian Dog">American Indian Dog</option>
<option value="American Pitbull Terrier">American Pitbull Terrier</option>
<option value="American White Shepherd">American White Shepherd</option>
<option value="Anatolian Shepherd">Anatolian Shepherd</option>
<option value="Australian Cattle Dog">Australian Cattle Dog</option>
<option value="Australian Koolie">Australian Koolie</option>
<option value="Australian Shepherd">Australian Shepherd</option>
<option value="Basenji">Basenji</option>
<option value="Basset Hound">Basset Hound</option>
<option value="Beagle">Beagle</option>
<option value="Bearded Collie">Bearded Collie</option>
<option value="Bedlington Terrier">Bedlington Terrier</option>
<option value="Belgian Malinois">Belgian Malinois</option>
<option value="Belgian Sheepdog">Belgian Sheepdog</option>
<option value="Belgian Tervuren">Belgian Tervuren</option>
<option value="Bernese Mountain Dog">Bernese Mountain Dog</option>
<option value="Bloodhound">Bloodhound</option>
<option value="Border Collie">Border Collie</option>
<option value="Border Terrier">Border Terrier</option>
<option value="Borzoi">Borzoi</option>
<option value="Boston Terrier">Boston Terrier</option>
<option value="Bouvier des Flandres">Bouvier des Flandres</option>
<option value="Boxer">Boxer</option>
<option value="Boykin Spaniel">Boykin Spaniel</option>
<option value="Briard">Briard</option>
<option value="Brittany Spaniel">Brittany Spaniel</option>
<option value="Brussels Griffon">Brussels Griffon</option>
<option value="Bull Terrier">Bull Terrier</option>
<option value="Bulldog">Bulldog</option>
<option value="Bullmastiff">Bullmastiff</option>
<option value="Cairn Terrier">Cairn Terrier</option>
<option value="Canaan Dog">Canaan Dog</option>
<option value="Cardigan Welsh Corgi">Cardigan Welsh Corgi</option>
<option value="Caucasian Ovtcharka">Caucasian Ovtcharka</option>
<option value="Chart Polski">Chart Polski</option>
<option value="Chesapeake Bay Retriever">Chesapeake Bay Retriever</option>
<option value="Chihuahua">Chihuahua</option>
<option value="Chinese Crested">Chinese Crested</option>
<option value="Chinese Shar-Pei">Chinese Shar-Pei</option>
<option value="Chinook">Chinook</option>
<option value="Chow-chow">Chow-chow</option>
<option value="Clumber Spaniel">Clumber Spaniel</option>
<option value="Cocker Spaniel">Cocker Spaniel</option>
<option value="Curly-Coated Retriever">Curly-Coated Retriever</option>
<option value="Dachshund">Dachshund</option>
<option value="Dalmatian">Dalmatian</option>
<option value="Doberman Pinscher">Doberman Pinscher</option>
<option value="Dutch Shepherd">Dutch Shepherd</option>
<option value="English Foxhound">English Foxhound</option>
<option value="English Mastiff">English Mastiff</option>
<option value="English Setter">English Setter</option>
<option value="English Shepherd">English Shepherd</option>
<option value="English Springer Spaniel">English SpringerSpaniel</option>
<option value="Eurasier">Eurasier</option>
<option value="Flat-Coated Retriever">Flat-Coated Retriever</option>
<option value="French Bulldog">French Bulldog</option>
<option value="German Pinscher">German Pinscher</option>
<option value="German Shepherd">German Shepherd</option>
<option value="German Shorthaired Pointer">German Shorthaired Pointer</option>
<option value="German Wirehaired Pointer">German Wirehaired Pointer</option>
<option value="Giant Schnauzer">Giant Schnauzer</option>
<option value="Golden Retriever">Golden Retriever</option>
<option value="Gordon Setter">Gordon Setter</option>
<option value="Great Dane">Great Dane</option>
<option value="Greater Swiss Mountain Dog">Greater Swiss Mountain Dog</option>
<option value="Greyhound">Greyhound</option>
<option value="Harrier">Harrier</option>
<option value="Havanese">Havanese</option>
<option value="Hovawart">Hovawart</option>
<option value="Irish Setter">Irish Setter</option>
<option value="Irish Terrier">Irish Terrier</option>
<option value="Irish Wolfhound">Irish Wolfhound</option>
<option value="Italian Greyhound">Italian Greyhound</option>
<option value="Jack Russel Terrier">Jack Russel Terrier</option>
<option value="Japanese Chin">Japanese Chin</option>
<option value="Kerry Blue Terrier">Kerry Blue Terrier</option>
<option value="Komondor">Komondor</option>
<option value="Labrador Retriever">Labrador Retriever</option>
<option value="Long-haired Collie">Long-haired Collie</option>
<option value="Maltese">Maltese</option>
<option value="Manchester Terrier">Manchester Terrier</option>
<option value="Maremma Sheepdog">Maremma Sheepdog</option>
<option value="Mastiff">Mastiff</option>
<option value="Miniature Australian Shepherd">Miniature Australian Shepherd</option>
<option value="Miniature Dachshund">Miniature Dachshund</option>
<option value="Miniature Pinscher">Miniature Pinscher</option>
<option value="Miniature Schnauzer">Miniature Schnauzer</option>
<option value="Old English Sheepdog">Old English Sheepdog</option>
<option value="Otterhound">Otterhound</option>
<option value="Papillon">Papillon</option>
<option value="Pekingese">Pekingese</option>
<option value="Pembroke Welsh Corgi">Pembroke Welsh Corgi</option>
<option value="Plott">Plott</option>
<option value="Pointer">Pointer</option>
<option value="Pomeranian">Pomeranian</option>
<option value="Poodle">Poodle</option>
<option value="Pug">Pug</option>
<option value="Rottweiler">Rottweiler</option>
<option value="Saarloos Wolfhound">Saarloos Wolfhound</option>
<option value="Saint Bernard">Saint Bernard</option>
<option value="Saluki">Saluki</option>
<option value="Samoyed">Samoyed</option>
<option value="Schipperke">Schipperke</option>
<option value="Scottish Deerhound">Scottish Deerhound</option>
<option value="Scottish Terrier">Scottish Terrier</option>
<option value="Shetland Sheepdog">Shetland Sheepdog</option>
<option value="Shiba Inu">Shiba Inu</option>
<option value="Shih Tzu">Shih Tzu</option>
<option value="Shikoku">Shikoku</option>
<option value="Siberian Husky">Siberian Husky</option>
<option value="Siberian Laika">Siberian Laika</option>
<option value="Sloughi">Sloughi</option>
<option value="Smooth Collie">Smooth Collie</option>
<option value="Smooth Fox Terrier">Smooth Fox Terrier</option>
<option value="Soft Coated Wheaten Terrier">Soft Coated Wheaten Terrier</option>
<option value="Staffordshire Bull Terrier">Staffordshire Bull Terrier</option>
<option value="Sussex Spaniel">Sussex Spaniel</option>
<option value="Swedish Vallhund">Swedish Vallhund</option>
<option value="Taiwan Dog">Taiwan Dog</option>
<option value="Tibetan Spaniel">Tibetan Spaniel</option>
<option value="Toy Fox Terrier">Toy Fox Terrier</option>
<option value="Toy Poodle">Toy Poodle</option>
<option value="Toy Spaniel">Toy Spaniel</option>
<option value="Welsh Springer Spaniel">Welsh Springer Spaniel</option>
<option value="Welsh Terrier">Welsh Terrier</option>
<option value="Yorkshire Terrier">Yorkshire Terrier</option>

</select><p>

<input type="submit" name="dogsearch" value="Search">

</form>
</td></table>
HERE;

?>

[/code]

The only thing that will work is if I type in a dog's ID in the ID field of the form and press 'Search'. Everything else returns the error.
Link to comment
Share on other sites

[quote author=willfitch link=topic=109146.msg439767#msg439767 date=1158976642]
[code=php:0]
<?php
$query = "SELECT MATCH(name,breed) AGAINST ('$single_key_word') AS relevance, name, breed
FROM dog
HAVING relevance > 0
ORDER BY relevance DESC";
?>
[/code]
[/quote]

I haven't seen this mysql query method before -- is it possible to use it with multiple_key_words?
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.