отключить функцию PHP с другой функцией

0

Мне было интересно, есть ли способ отключить существующую 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-part" функции выше, когда я хочу, чтобы она показывала результаты для этой конкретной строки и никаких других "элементов таблицы"... Теперь следует код для части, в которой выполняется поиск для конкретной конкретной строки:

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 ()
}

Чтобы сообщить вам, для вызова function results_for_one_specific_string() я использую что-то вроде этого:

<a href="index.php?button123=true" title="">title</a>

Теперь мой вопрос: кто-нибудь знает, как я могу каким-то образом отключить "else-part" моей функции поиска (1-й блок кода) только при function results_for_one_specific_string()? (так что печатаются только результаты этой функции, а не сторона "else" первой функции)

Спасибо вам, ребята!

Теги:

2 ответа

0
Лучший ответ

Будет ли что-то вроде этой работы для вас?

$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!)
}
  • 0
    Ваш ответ имеет для меня полное значение, но, к сожалению, он все еще выводит остальную часть функции поиска, когда я вызываю функцию «results_for_one_specific_string» ...
  • 0
    Я думаю, что все зависит от того, когда вызывается функция, до или после if(isset($_POST['search'])){ код выполняется?
Показать ещё 1 комментарий
0

Мне кажется, у вас идентичный код для поиска пользовательской строки, а также для конкретной строки. Если это так, было бы проще и прозрачнее сделать одну функцию для обоих случаев:

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. Не перемешать пост и получить. См. Например, этот пост.

  • 0
    Спасибо за вашу помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню