2016-03-14 3 views
0

Мне кажется, что это общий вопрос, но я не нашел для него правильного ответа, поэтому я прошу вас! ;)Php, форма, перенаправление и запросы

Начнет с формой в классических index.php:

... 
    <form action="<?php echo BASE_URL; ?>"> 
     <div style="color:white">Instructions</div> 
     <input type="number" name="param" /> 
     <input type="hidden" name="action" value="view" /> 
     <input type="hidden" name="controller" value="Solution" /> 

     <input type="????" name="instance_id" value="?????" /> 

     <input type="submit" value="Solutions Listing" id="button_solutions"> 
    </form> 
... 

вопрос здесь является последнего входа поля перед кнопкой отправки. Пользователь должен ввести параметр в первый не скрытый ввод, и это должно вызвать функцию php, которая определяет instance_id путем выбора в базу данных.

То, что я хочу сделать то, что, когда пользователь нажимает на отправить, он перенаправлять через ссылку, как

BASE_URL."?controller=Solution&action=view&param=toto&instance_id=value" 

скажем моя функция в PHP, который выбрать в базе данных называется тото(), toto возвращает instance_id. Я знаю, как указать URL-адрес с параметрами GET через форму, , ноЯ не знаю, как вызвать функцию php. Я знаю, как определить instance_id через вход парам ноя не знаю, как создать перенаправление с параметрами GET с помощью функции PHP

пожалуйста, любая помощь будет рассматриваться Благодаря

+0

Правильно ли я понимаю, что вы хотите, чтобы действие формы было динамическим на основе входных данных формы? – amflare

+0

Это не может быть сделано в одиночку с PHP, вам нужно использовать запрос AJAX (на стороне клиента) на ваш PHP, который отправляет параметр, а затем получает ответ. – Akam

+0

Это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – skrilled

ответ

1

Если вам не нужно видеть экземпляр экземпляра на вашем клиенте, вы можете создать какую-то страницу переадресации, которая извлекает экземпляр экземпляра из вашей базы данных. Эта страница может быть такой же, как и на целевой странице.

<form method="GET" action="<?php echo BASE_URL; ?>"> 
    <div style="color:white">Instructions</div> 
    <input type="number" name="param" /> 
    <input type="hidden" name="action" value="view" /> 
    <input type="hidden" name="controller" value="Solution" /> 

    <input type="submit" value="Solutions Listing" id="button_solutions"> 
</form> 

и в вашем PHP скрипт

// instance_id not set 
if (!isset($_GET['instance_id'])) { 
    $args = $_GET; 
    $param = $args['param']; 

    // do something with param and save it to instance_id 
    $instance_id = ... 

    $args['instance_id'] = $instance_id; 

    // create get query 
    $query = http_build_query($args); 

    $url = BASE_URL . '?' . $query; 
    header('Location: ' . $url); 
} else { 
    // instance_id set - do something with it 
    $instance_id = $_GET['instance_id']; 
} 

Если вы не можете использовать этот подход и должен показать результат вашей instance_id то же самое время, когда пользователь вводит параметров, вы должны использовать ajax-запрос, который отправляет запрос на сервер, чтобы получить экземпляр экземпляра.

JavaScript (с помощью JQuery), чтобы сделать это может выглядеть следующим образом:

$('input[name="param"]').on('change', function() { 
    $.ajax({ 
     url: '...', 
     data: { param: $(this).val() }, 
     method: 'GET' 
    }).done(function(data) { 
     $('input[name="instance_id"]').val(data); 
    }); 
}); 

Файл PHP получить param в качестве значения GET и должен возвращать instance_id из базы данных.

Смежные вопросы