2013-07-29 32 views
0
我有一個問題,我的回聲< < < _END內的變量設置爲紐帶構建

URL編碼在構建>>>

這裏

是我的代碼:

<?php //submit_build.php 

include_once 'header.php'; 
require_once 'login_builds.php'; 
include_once 'functions.php'; 

$db_server = mysql_connect($db_hostname, $db_username, $db_password); 

mysql_select_db($db_database) 
    or die("Unable to select database: " . mysql_error()); 

?> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="en-us" http-equiv="Content-Language" /> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Weapon Build Creator</title> 

<link href="styles/main.css" rel="stylesheet" type="text/css" /> 

<style> 

.bannerdiv 
{ 
    display: block; 
    width: 620px; 
    height; 
    position: static; 
    background-image:url('images/news_banner_072813.jpg'); 
    text-align: center; 
    border-radius: 15px; 
    moz-border-radius: 15px; 
    moz-box-shadow: 0 0 30px 5px #999; 
    box-shadow: 0 0 30px 5px #999; 
    height: 300px; 
    margin-left: 25px; 

} 
.form 
{ 
    display: block; 
    width: 670px; 
    left: 50%; 
    margin-left: -335px; 
    margin-top: 100px; 
    float: left; 
    position: absolute; 
    background-image:url('images/greystripe_bg.jpg'); 
    text-align: center; 
    border-radius: 15px; 
    moz-border-radius: 15px; 
    moz-box-shadow: 0 0 30px 5px #999; 
    box-shadow: 0 0 30px 5px #999; 
    height: 1000px; 
} 


</style> 

</head> 

<body style="background-image: url('images/bg.jpg')"> 

<div id="form" class="form"> 
    <div class="newsdiv"><p class="title">Search/Browse Builds</p> 
     <p class="newsbody">&nbsp;Build your search query by inputting at least 1 of 
     the fields below.</p> 
    <form method="post" action="search_query.php"><p class="timestamp"> 
     <input name="buildname" type="text" style="vertical-align:middle">&nbsp;&nbsp; Build Name</p> 
     <p class="timestamp"> 
     <select name="weapon" class="dropdown" style="vertical-align:middle"> 
     <option></option> 
     <option>Acrid</option> 
     <option>Afuris</option> 
     <option>Akbolto</option> 
     <option>Aklato</option> 
     <option>Amphis</option> 
     <option>Ankyros</option> 
     <option>Bo</option> 
     <option>Boar</option> 
     <option>Bolto</option> 
     <option>Boltor</option> 
     <option>Braton</option> 
     <option>Braton Prime</option> 
     <option>Braton Vandal </option> 
     <option>Bronco</option> 
     <option>Bronco Prime</option> 
     <option>Burston </option> 
     <option>Ceramic Dagger</option> 
     <option>Cronus</option> 
     <option>Dark Dagger</option> 
     <option>Dark Sword</option> 
     <option>Dera</option> 
     <option>Despair</option> 
     <option>Dread</option> 
     <option>Dual Broncos</option> 
     <option>Dual Cleavers</option> 
     <option>Dual Ether</option> 
     <option>Dual Heat Swords</option> 
     <option>Dual Skana</option> 
     <option>Dual Zoren</option> 
     <option>Ether Daggers</option> 
     <option>Ether Sword</option> 
     <option>Fang</option> 
     <option>Fang Prime</option> 
     <option>Flux Rifle</option> 
     <option>Fragor</option> 
     <option>Furax</option> 
     <option>Furis</option> 
     <option>Glaive</option> 
     <option>Gorgon </option> 
     <option>Grakata</option> 
     <option>Gram</option> 
     <option>Hate</option> 
     <option>Heat Dagger</option> 
     <option>Heat Sword</option> 
     <option>Hek</option> 
     <option>Hikou</option> 
     <option>Ignis</option> 
     <option>Jaw Sword</option> 
     <option>Kestrel</option> 
     <option>Kogake</option> 
     <option>Kraken</option> 
     <option>Kunai</option> 
     <option>Lanka</option> 
     <option>Lato</option> 
     <option>Lato Prime</option> 
     <option>Lato Vandal</option> 
     <option>Latron</option> 
     <option>Latron Prime</option> 
     <option>Lex</option> 
     <option>Machete</option> 
     <option>Mire</option> 
     <option>MK1-Braton</option> 
     <option>Ogris</option> 
     <option>Orthos</option> 
     <option>Orthos Prime</option> 
     <option>Pangolin Sword</option> 
     <option>Paris</option> 
     <option>Paris Prime</option> 
     <option>Plasma Sword</option> 
     <option>Prova</option> 
     <option>Reaper Prime</option> 
     <option>Scindo</option> 
     <option>Seer</option> 
     <option>Sicarus</option> 
     <option>Skana</option> 
     <option>Skana Prime</option> 
     <option>Snipetron</option> 
     <option>Snipetron Vandal</option> 
     <option>Sobek</option> 
     <option>Spectra</option> 
     <option>Strun</option> 
     <option>Supra</option> 
     <option>Torid</option> 
     <option>Twin Vipers</option> 
     <option>Vasto</option> 
     <option>Viper</option> 
     <option>Vulkar</option> 
     </select>&nbsp;&nbsp; Weapon</p> 
     <p class="timestamp"> 
     <select class ="dropdown" name="category" style="vertical-align:middle"> 
     <option></option> 
     <option>Defensive</option> 
     <option>Balanced</option> 
     <option>High DPS</option> 
     </select>&nbsp;&nbsp; Category</p> 
     <p class="timestamp"> 
     <input name="id" type="text" style="vertical-align:middle">&nbsp;&nbsp; 
     Weapon ID Number</p> 
     <p class="timestamp"> 
     <input name="search" type="submit" value="Search Builds">&nbsp;</p> 
     <p class="timestamp"> 



     <p class="title">SEARCH RESULTS</p> 

<?php //search result table 

if (isset($_POST['buildname']) || 
    isset($_POST['weapon']) || 
    isset($_POST['category']) || 
    isset($_POST['id'])) 

{ 

$sqlArray = array(); 

    if(!empty($_POST['buildname'])){ 
     $sqlArray[] = "buildname='" . mysql_real_escape_string($_POST['buildname']) . "'"; 
    } 

    if(!empty($_POST['weapon'])){ 
     $sqlArray[] = "weapon='" . mysql_real_escape_string($_POST['weapon']) . "'"; 
    } 

    if(!empty($_POST['category'])){ 
     $sqlArray[] = "category='" . mysql_real_escape_string($_POST['category']) . "'"; 
    } 

    if(!empty($_POST['id'])){ 
     $sqlArray[] = "id='" . mysql_real_escape_string($_POST['id']) . "'"; 
    } 

    $searchstring = "SELECT buildname,weapon,category,id,author,buildname FROM weapons " . 
        "WHERE " . implode(' AND ', $sqlArray); 

$result = mysql_query($searchstring); 

if (!$result) die ("Database access failed: " . mysql_error()); 

$rows = mysql_num_rows($result); 

echo<<<_END 

     <table class="searchresult"> 
     <tr style="width:100%"> 
     <td class="newsbody" style="width:5%">ID</td> 
     <td class="newsbody" style="width:40%">Build Name</td> 
     <td class="newsbody" style="width:20%">Weapon</td> 
     <td class="newsbody" style="width:20%">Category</td> 
     <td class="newsbody" style="width:15%">Author</td> 
     </tr> 
_END; 

for ($j = 0; $j < $rows; ++$j) 
{ 
$row = mysql_fetch_row($result); 
echo<<<_END 

     <tr style="width:100%"> 
     <td class="newsbody" style="width:5%">$row[3]</td> 
     <td class="newsbody" style="width:40%"><a href="view_build.php?buildname=$row[5]">$row[0]</a></td> 
     <td class="newsbody" style="width:20%">$row[1]</td> 
     <td class="newsbody" style="width:20%">$row[2]</td> 
     <td class="newsbody" style="width:15%">$row[4]</td> 
     </tr> 

_END; 
} 

echo<<<_END 

     </table> 

_END; 

} 

?> 

</form> 
<p><br /><br /><br /><br /><br /></p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p>&nbsp;</p> 
     <p><br /></p> 
    </div> 

</body> 
</html> 

的代碼行我遇到了第236行的問題,在代碼底部附近粗體顯示。

這一個:

<td class="newsbody" style="width:40%"><a href="view_build.php?buildname=$row[5]">$row[0]</a></td> 

我基本上要在搜索結果中顯示的值,例如「雙野馬」,然後大約有哪個環節view_build.php文本超鏈接buildurl =雙+野馬。

我不知道如何正確地插入進行urlencode功能,但因爲當我把標籤,它說我的HTML是錯誤的(它說表列結束標記無效/不必要的)。

所以我試圖讓urlencode在數據庫輸入時工作,以便每個對象都有一個「buildname」和一個「buildurl」,其中buildurl = urlencode($ buildname)。此代碼有效,並且我的數據庫輸入的值爲「Dual + Broncos」,但是當我檢索該行並將其放入view_build.php?buildurl = $ row [5]位置的鏈接時,它不會顯示'+'應該在編碼的URL中。

這一個任何幫助嗎?或者有關如何以另一種方式執行此功能的建議?

非常感謝!

PS。我包含了我的全部代碼,以便您可以看到HTML標籤和PHP標籤的開始和結束位置。

+0

作爲記錄,''<<<'語法被稱爲HEREDOC。 (見[PHP手冊](http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc)) – Spudley

+0

題外話:請注意,'mysql_xxx ()'函數**被棄用**。您應該強烈考慮修改代碼以改爲使用更新的PDO庫。 – Spudley

回答

0

只是做了URL編碼的循環之外:

for($j = 0; ...) { 
    $encoded = urlencode($row[0]); 
    echo <<<EOL 

....?buildname=$encoded 
EOL; 
} 

你可以使用一個變量函數和「內聯」的編碼,例如

$enc = 'urlencode'; 
echo <<<EOL 
... ?buildname={$enc($row[0])} 
EOL; 

但是這樣的代碼很快就變得完全不可檢測,而且很難調試。

0

只需使用一個變量來定界符之前插入其存放在之後的編碼值。

$value = urlencode($row[5]); 
... 
<td class="newsbody" style="width:40%"><a href="view_build.php?buildname=$value">$row[0]</a></td> 
相關問題