2014-04-01 35 views
0

我正在從Web提交表單中搜索並調用搜索。我似乎無法讓變量傳遞到搜索框中的參數。將變量傳遞給搜索方法的問題

這是一個instagram搜索應用程序。我試圖檢索特定用戶飼料:

這是調用來獲取用戶的飼料:

$result = $instagram->searchUser($id); 

這調用該函數:

public function searchUser($name, $limit = 0) { 
    return $this->_makeCall('users/search', false, array('q' => $name, 'count' => $limit)); 
} 

我的問題是如何說「 $ id'傳入此。這就是我到目前爲止在html中的內容,並且我意識到我可能會在這裏離開,但是im(顯然)是新的。

<form id="sform" method="post"> 
    <fieldset> 

     <input id="s" type="text" /> 

     <input type="submit" value="Submit" id="id" /> 

     <div id="searchInContainer"> 
      <input type="radio" name="check" value="site" id="id" checked /> 
      > 

     </div> 



    </fieldset> 
</form> 
+1

首先我會假設你的輸入'id =「s」'是你的搜索輸入嗎?更改或添加'name =「s」',然後從'$ id = $ _POST ['s']獲取s;'因爲POST變量使用name屬性而不是ID – Chitowns24

回答

1

你的代碼有一些不一致之處。首先,原件,以searchUser()呼叫在名爲$id,那麼你的定義,功能變量傳遞了一個變量命名$name - 有沒有錯技術上,但它很容易混淆你的論點時,它們被命名爲不同,一般像那樣。

你的問題是你的表單,你有多個ID分配給元素,這是違反HTML規範。您還需要給文本框名稱屬性,否則沒有數據將發佈到您的表單。

接下來,您需要爲表單標記定義一個操作,以告知瀏覽器在哪裏指定發佈位置 - 這是您的PHP文件,它會調用API。比方說,它的myfile.php,嘗試這樣的形式:

<form id="sform" action="myfile.php" method="post"> 
    <fieldset> 
     <input name="search" id="search" type="text" /> 
     <input type="submit" value="Submit" name="submitButton" id="submitButtom" /> 
     <div id="searchInContainer"> 
      <input type="radio" name="check" value="site" id="yourCheckbox" checked /> 
     </div> 
    </fieldset> 
</form> 

一旦你的HTML被整理出來,你只需要獲得變量PHP,並將其傳遞到您的API:

$id = $_POST['search']; 
$result = $instagram->searchUser($id); 

我如果您希望發送一個數字,請使用:$id = (int) $_POST['search'];強制變量爲一個整數(去除惡意字符等)。

+0

感謝您的有用答覆。首先,我希望這個搜索頁面包含以下代碼:'$ id = $ _POST ['search']; $ result = $ instagram-> searchUser($ id);'所以如果可能的話不要重定向。 – BrandN00b

+0

更新:感謝您的有用答覆。閱讀此問題後的問題..我想這個搜索頁面包含此代碼:'$ id = $ _POST ['search']; $ result = $ instagram-> searchUser($ id);'所以如果可能的話不要重定向。 「SearchUser」功能位於另一個包含大多數方法的文件中。但我希望每個頁面都做它自己的事情。所以這個頁面只會搜索用戶。等等 – BrandN00b

+0

好吧,您需要將表單操作更改爲'$ _SERVER ['PHP_SELF']'發佈到自身,並在處理之前檢查發佈數據的存在:'if(isset($ _ POST ['search'])){/ * ...做你的東西* /}' –

1

您所追求的是超全球的$_POST。當您提交表單時,每個字段的內容將放入$_POST變量,該變量可通過腳本訪問。

<form id="sform" method="post" action="searchUser.php"> 
    <fieldset> 
     <input id="s" name="userid" type="text" /> 

     <input type="submit" value="Submit" id="id" /> 

     <div id="searchInContainer"> 
      <input type="radio" name="check" value="site" checked /> 
     </div> 
    </fieldset> 
</form> 

searchUser.php將被調用當用戶提交表單,將有可變$_POST['userid']其中包含文本字段的內容。這意味着:

$result = $instagram->searchUser($_POST['userid']); 

然後工作! $_POST['check']也可以在這一點上,你可以做var_dump($_POST)看看你的表單中有什麼,如果你需要調試!

我會強烈建議在任何用戶提交的數據字段做一些數據驗證,但是!不要假設$_POST變量是安全的!

你可以看看PHP Documentation瞭解更多! $_POST是能幫助你的超全球植物之一!

+0

感謝您的回覆。已經很多的幫助。無論如何,使這個代碼都住在「searchUser.php」沒有重定向? 「SearchUser」方法在一個包含所有代碼的文件中。我只想爲每個搜索進行一個頁面。一個頁面用於搜索用戶供稿,一個用於搜索標籤,一個用於搜索位置等。 – BrandN00b

+0

絕對如此。看看[這個要點](https://gist.github.com/paulflypay/9923873)我只是爲你一起投擲 - 希望它是有道理的! –

+0

啊,很好。看看我有什麼,因爲它與你有什麼不同。我仍然有錯誤,但我認爲它有不同的原因。 [鏈接](https://gist.github.com/TommyVon/9924209) – BrandN00b