2014-03-07 41 views
-1

我希望将$ module_id和$ user_name传递给url。点击按钮提交后,如何将下拉列表中的选定值传递给url查询字符串?

下面的代码不会将正确的值从下拉列表传递到URL查询字符串。你能告诉我什么是缺少的?

<?php 
    $root = $_SERVER['HTTP_HOST']; 
    $fullname = $_POST['user_name']; 
    $user_name = explode(" ", $fullname); 
    $module_id = $_POST['e_learning_module']; 
    ?>       
         <form action="<?php echo home_url() . '/certificate/print-request-certificate.php?id=' . $module_id . '&fname=' . $user_name[0] . '&lname=' . $user_name[1]; ?>" method="post" name=""> 
<select id="user_name" name="user_name"> 
<option value="default">Names</option> 
<?php 
$query = mysql_query('SELECT DISTINCT fname, lname FROM wl_activity_logs ORDER BY fname ASC'); 

while($row = mysql_fetch_array($query)) { 
echo '<option value="' . htmlentities($row['fname'], ENT_QUOTES) . ' ' . htmlentities($row['lname'], ENT_QUOTES) . '">' . htmlentities($row['fname'], ENT_QUOTES) . ' ' . htmlentities($row['lname'], ENT_QUOTES) . '</option>'; 
} 
?> 
</select> 
<input type="hidden" name="user_name" id="user_name_hidden"> 

<select id='e_learning_module' name="e_learning_module"> 
<option value="default">E-Learning Modules</option> 
<?php 
global $post; 
$args = array(
'numberposts' => -1, 
'post_type' => 'wpsc-product', 
'post_status' => 'publish', 
'wpsc_product_category' => 'e-learning-modules', 
'order' => 'ASC' 
); 
$e_learning_modules = get_posts($args); 

foreach($e_learning_modules as $post) { 
            setup_postdata($post); 
$id = $post->ID; 
?> 
<option value="<? echo $id; ?>"><?php the_title(); ?></option> 
<?php 
} 
?> 
</select> 
<input type="hidden" name="e_learning_module" id="e_learning_module_hidden"> 

<input type="submit" value="Print" name='print' /> 
</form> 
+0

为什么不添加它们作为隐藏字段。表单方法是POST并使用$ _POST,这些值可以被捕获。 –

回答

0

你haave使用如下形式的'get'(method="get")。

<form action="<?php echo home_url() . '/certificate/print-request-certificate.php?id=' . $module_id . '&fname=' . $user_name[0] . '&lname=' . $user_name[1]; ?>" method="get" name=""> 
+0

'?e_learning_module = 351&e_learning_module_hidden =&user_name = Amanda + Walker&user_name_hidden =&print = Print' Thanks!我只想得到351和阿曼达+沃克只,我该怎么做? – user3349519

+0

你可以通过删除下面的输入隐藏元素来实现这一点。 ' –

+0

这样开辟了另一种解决我的方法问题。 – user3349519

0

你有2个字段具有相同名称 'USER_NAME':

<select id="user_name" name="user_name"></select>

<input type="hidden" name="user_name" id="user_name_hidden">

您需要更改第二个到另一个名称(例如: user_name_hidden)或将第一个名称更改为另一个名称(例如:full_name),然后使用$fullname = $_POST['full_name'];

+0

谢谢。但它没有从'的值不会被检索。这就是为什么你必须重命名这两个领域之一。您可以尝试将''更改为''预期的结果! –

+0

此外,不要将表单方法更改为GET,因为$ _POST将变为无用(空)。 –

2

变化

<form action="<?php echo home_url() . '/certificate/print-request-certificate.php?id=' . $module_id . '&fname=' . $user_name[0] . '&lname=' . $user_name[1]; ?>" method="post" name="">

<form action="<?php echo home_url() . '/certificate/print-request-certificate.php" method="GET" name="">

添加下面的表单标签下面的代码

<input type="hidden" name="id" value="<?php echo $module_id?>"> <input type="hidden" name="fname" value="<?php echo $user_name[0]?>"> <input type="hidden" name="lname" value="<?php echo $user_name[1]?>">

相关问题