Passing more than one word variables to php page

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Matthew Robinson

    Passing more than one word variables to php page

    i wrote a search page for my site (searching through a mysql database) but
    when i type in more than one word (eg "item three") in the search field it
    gets passed to the page as a single word ("item"). Are there any
    workarounds for this? the code is below.( houseproudlancs .co.uk/search.php
    )



    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    <!-- background="./images/background.jpg" --> <body bgcolor="#64000 0">
    <?php
    $search_for = $_GET['for'];
    $search_categor y = $_GET['category']; global $search_for;
    global $search_categor y;
    global $the_items_desc ription;
    global $does_contain_t ext;
    ?>

    <div align=center>
    <form action="http://www.houseproudl ancs.co.uk/search.php"
    method="GET"> <br><table bgcolor="#EBEB9 6" cellpadding=6>
    <tr> <td> </td> </tr> <tr> <td> <div align=center> Search For:
    </div></td> <td> <div align=center> Category: </div> </td> </tr>
    <tr> <td>
    <INPUT name=for value=<?php echo ("$search_for") ; ?>>
    </td> <td>
    <SELECT NAME=category SIZE=1>
    <OPTION <?php if ($search_catego ry == "Search All
    Categories") { echo ("SELECTED") ; } ?>>Search All Categories
    <OPTION <?php if ($search_catego ry == "Floral Creations") {
    echo ("SELECTED") ; }?>>Floral Creations <OPTION <?php if
    ($search_catego ry == "Decorative Lighting") { echo
    ("SELECTED") ; }?>>Decorative Lighting <OPTION <?php if
    ($search_catego ry == "Kitchenwar e & Crockery") { echo
    ("SELECTED") ; }?>>Kitchenware & Crockery <OPTION <?php if
    ($search_catego ry == "Fancy Goods & Furniture") { echo
    ("SELECTED") ; }?>>Fancy Goods & Furniture
    </SELECT>
    </td> <td>
    <INPUT TYPE=submit VALUE="Search">
    </td>
    </form>
    <tr> <td> </td> </tr>
    </table>
    </div>


    <?php


    switch ($search_catego ry) {
    case "":
    exit;
    break;
    case "Search All Categories":
    $filter_categor y = "*" ;
    break;
    case "Floral Creations":
    $filter_categor y = "floral";
    break;
    case "Decorative Lighting":
    $filter_categor y = "lighting";
    break;
    case "Kitchenwar e & Crockery":
    $filter_categor y = "kitchenwar e";
    break;
    case "Fancy Goods & Furniture":
    $filter_categor y = "furniture" ;
    break;
    default:
    echo ("<P>Error - The Selected Category Was Not Found</P>"); break;
    }

    $dbcnx = @mysql_connect( "server",
    "username", "password") ; $select =
    @mysql_select_d b("houseproudla ncs_co_uk1"); if ($filter_catego ry ==
    "*") {
    $command = "SELECT * FROM `stock` WHERE 1 ORDER BY `id`";
    } else {
    $command = "SELECT * FROM `stock` WHERE 1 AND `category` LIKE
    \"$filter_categ ory\" ORDER BY `id`";
    }

    $qresult = mysql_query($co mmand);

    $started_table = false;
    while ($row = mysql_fetch_arr ay($qresult)) {
    //text search
    $the_items_desc ription = $row ["descriptio n"];

    if ($search_for === '') $search_for = ":X:X::X:X::X:X :"; // hopefully
    ":X:X::X:X::X:X :" is something that is *never* in $the_items_desc ription
    $Items_searchab le_text = ($row ["descriptio n"] . $row ["id"] . $row
    ["name"]);
    $pos = stristr($Items_ searchable_text , $search_for);

    //THIS IS FOR DEBUGGING THE TEXT SEARCH
    //echo ("POS = ");
    //echo ("$pos");
    //echo ("<br>item description = ");
    //echo ("$the_items_de scription");
    //echo ("<br> search for = ");
    //echo ("$search_for") ;
    //echo ("<br>");
    //END OF DEBUGGING TEXT SEARCH

    if ($search_for == ":X:X::X:X::X:X :") {
    $does_contain_t ext = true;
    } elseif ($pos === false) {
    $does_contain_t ext = false;
    } else {
    $does_contain_t ext = true;
    }

    // end text search
    if ($does_contain_ text == true) {

    if ($started_table == false) {
    echo ("<center><tabl e width=80% cellpadding=5>" ); }

    if ($tablebgcolor == "#1E8CDB"){ //blue
    $tablebgcolor = "#EBEB96"; //green
    } else {
    $tablebgcolor = "#1E8CDB"; }
    ?>

    <tr ><td> <table border=0 cellspacing=3 width=100% bgcolor=<?php
    echo ("$tablebgcolor "); ?>> <tr><td> <table> <tr>
    <?php
    switch ($row ["category"]) {
    case "lighting":
    $item_category = "Decorative Lighting"; break;
    case "floral";
    $item_category = "Floral Creations";
    break;
    case "kitchenwar e":
    $item_category = "Kitchenwar e & Crockery"; break;
    case "furniture" :
    $item_category = "Fancy Goods & Furniture"; break;
    default;
    $item_category = "Unknown Category";
    break;
    }
    ?>
    <td><pre>Name : </pre></td> <td><b><div align=left><?ph p
    echo ($row ["name"]); ?> </b></div></td></tr><tr>
    <td><pre>Descri ption: </pre></td> <td><div align=left><?ph p echo
    ($row ["descriptio n"]); ?></div> </td></tr><tr> <td><pre>Catego ry:
    </pre></td> <td><div align=left><?ph p echo ($item_category ); ?>
    </div> </td></tr><tr> <td><pre>Pric e:
    </pre></td><td><div align=left><?ph p echo ("£" . $row ["price"]);
    ?> </div> </td></tr><tr> <td><pre>P&P:
    </pre></td><td><div align=left><?ph p echo ("£" . $row ["pandp"]);
    ?> </div> </td></tr><tr>
    <?php $quantity = $row ["quantity"];
    if ($quantity != "0") { ?>
    <td><pre>Quanti ty: </pre></td> <td><div align=left><?ph p echo
    ($row ["quantity"]); ?> </div></td></tr><tr><?php } ?>
    <td><pre>Produc t ID: </pre></td> <td><div align=left> <?php
    echo ($row ["id"]); ?></div></td></tr><tr><td>
    <?php if ($quantity == "0") { ?>
    <td><b> <font color=#DD0000> <div align=center>Te mporarily Out
    Of Stock </b></div></font></tr><tr>
    <?php } ?>
    </td></tr></table>
    </td><td width=30%>
    <?php $pictureid = $row ["id"]; ?>
    <?php $picturepath = "./images/" . $pictureid . ".jpg"; ?>
    <?php
    if (file_exists($p icturepath)) {
    echo ("<div align=\"center\ "><a href=\"$picture path\"
    target=LargeIma ge><img src=$picturepat h height=200 alt='Image
    Of Product'></a><font size=2><br>Clic k The Image To See It Full
    Size In A New Window</font></div>");
    } else {
    echo ("<div align=\"center\ "><img src=\"/images/nopic.png\"
    height=200 alt='No Picture Available'></a><font
    size=2><br>Sorr y, There Is No Available Picture For This
    Item</font></div>");
    }
    ?>
    </td></tr></table></td></tr>
    <?php
    }
    }
    ?>
    </table></center>

    <?php



    ?>
  • Shawn Wilson

    #2
    Re: Passing more than one word variables to php page

    Matthew Robinson wrote:[color=blue]
    >
    > i wrote a search page for my site (searching through a mysql database) but
    > when i type in more than one word (eg "item three") in the search field it
    > gets passed to the page as a single word ("item"). Are there any
    > workarounds for this? the code is below.( houseproudlancs .co.uk/search.php
    > )[/color]
    [color=blue]
    > <INPUT name=for value=<?php echo ("$search_for") ; ?>>[/color]

    This is your problem. You need to put quotes around your value. Check the HTML
    code that is produced. You'll see something like:

    <INPUT name=for value=item three>

    Your browser interprets that as value = "item", with an attribute called "three"
    that it doesn't know what to do with, and therefore ignores.

    Regards,
    Shawn
    --
    Shawn Wilson
    shawn@glassgian t.com


    I have a spam filter. Please include "PHP" in the
    subject line to ensure I'll get your message.

    Comment

    Working...