2014-04-01 36 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