使用其他函数禁用php函数

使用其他函数禁用php函数,php,Php,我想知道是否有一种方法可以在调用另一个函数时禁用现有的php函数或部分 我的情况如下: 我有一个带有文本输入的php搜索函数。这个很好用。请参阅下面的代码 if(isset($_POST['search'])){ if(isset($_GET['go'])){ if(preg_match("/[A-Z | a-z]+/", $_POST['search'])){ $input=$_POST['search']; //connects to database //selects database

我想知道是否有一种方法可以在调用另一个函数时禁用现有的php函数或部分

我的情况如下: 我有一个带有文本输入的php搜索函数。这个很好用。请参阅下面的代码

if(isset($_POST['search'])){
if(isset($_GET['go'])){
if(preg_match("/[A-Z | a-z]+/", $_POST['search'])){
$input=$_POST['search'];

//connects to database
//selects database table
//searches database
//assigns $results variable

//outputs results:
while($row=mysql_fetch_array($result)){
echo 'results...';

}}}} else {
//connects to database
//selects database table
//searches database:
$sql="SELECT * FROM table";
//outputs results (same as above)
}
这是我工作搜索函数的一个非常简短的形式。在这个搜索函数下面,我有一个按钮,当点击时,它应该输出一个特定字符串的搜索结果。这同样有效。问题是,当单击这个按钮时,它也会显示上面函数的else部分,而我只希望它显示该特定字符串的结果,而不显示其他表项。。。 下面是搜索一个特定字符串部分的代码:

function results_for_one_specific_string () {
//connects to database

//searches database:
$sql="SELECT * FROM table WHERE Name='string'";
//outputs results (same as above)
}

if (isset($_GET['button123'])) {
results_for_one_specific_string ()
}
为了让您知道,为了调用函数results\u来表示一个\u特定的\u字符串,我使用如下方法:

现在我的问题是:有没有人知道,只有在调用函数results_for_one_specific_string时,我才能以某种方式“禁用”搜索函数第1块代码的else部分?因此,只打印此函数的结果,而不打印第一个函数的“其他”方


谢谢你们

您喜欢这项工作吗

$hasBeenCalled = false; // Set a global var

function results_for_one_specific_string () {
    //connects to database
    //searches database
    //outputs results
}

if (isset($_GET['button123'])) {
    $hasBeenCalled = true; // Update global var here
    results_for_one_specific_string ()
}

...

if(isset($_POST['search'])){
    //connects to database
    //searches database
    //outputs results
} else if($hasBeenCalled==false){ // Check for global var here
    //outputs all table items (not only the search results, everything!)
}

在我看来,搜索自定义字符串和搜索特定字符串的代码是相同的。如果这是真的,那么为两种情况创建一个函数将更容易、更透明:

function results_for_any_string ($search='') {
if(strlen($search>0)){
//connects to database
//searches database
//outputs results
}
else {
//outputs all table items (not only the search results, everything!)
}
}
在主脚本中,选择要用作参数的内容

if(isset($_POST['search'])) $parameter = $_POST['search'];
else if (isset($_GET['button123']))  $parameter = $_GET['button123'];
else $parameter='';
results_for_any_string ($parameter);
}

此外,如果一个表单中没有任何按钮,您也可以通过同一表单和POST提交特定值。不混帖而得。请参阅示例。

好的,伙计,我需要查看更多您的代码,您的答案不应该太难。但我需要更多地了解你的想法和你在寻找什么。请通过完整代码您的答案对我来说完全有意义,但不幸的是,当我调用“results”for_one_specific_string”函数时,它仍然输出搜索函数的else部分…我认为调用函数时,在ifisset$\u POST['search'之前或之后,这一切都取决于一个{代码运行了吗?非常感谢!我刚刚不得不在您答案中的第二个if语句中添加另一个´$hasBeenCalled=true;´´!现在它对我有效了!