2014-02-26 48 views
-2

我需要从我的函数输出多个值,并访问外部变量,把输入隐藏和POST变量,以使访问数据从PHP。如何输出多个值?

数据来自多行表格中的用户输入值,这是多行计数,其他值来自数据库。

Javascript;

function validateForm() { 

$('textarea.pc_1').each(function(event){ 
     var thought= $(this).val();  
     $("input[name='status']").val(thought); 
     alert(status.value); 
    }) 
} 

上面的Javascript函数可以提醒多个值,但是当值输入隐藏时,只有单值POST到pc1_process.php。我所需要的是从这个函数输出多个值并传递到隐藏的输入。在pc1_process.php上从POST访问此值。

pc1.php

<script type="text/javascript"> 
function validateForm() { 

$('textarea.pc_1').each(function(event){ 
     var thought= $(this).val();  
     $("input[name='status']").val(thought); 
     alert(status.value); 
    }) 
} 
</script> 
... 
... 
<form name="myForm" id="contact" method="post" action="../lpc/pc1_process.php" onsubmit="return validateForm()"> 

<table id="tftable" class="MyTable" style="font-size:12px; color:#333333; width:100%; border-width: 1px; border-color: #729ea5; border-collapse: collapse;" border="1" > 
     <thead> 
     <tr style="background-color:#acc8cc;"> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Issues</td> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Notes <br></td> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;">Status <br></td> 
     </tr> 
    </thead> 
    <?php 
    if ($info6['datetime_submit'] != null){ 
    $alert_null = ""; 
    $check11 = mysql_query("select * 
    from (
    select * from page1_table union all 
    select * from page2_table 
    ) t 
    where t.submit = 'No' AND t.userid = '".$_SESSION['userid']."'") or die(mysql_error()); 
    while($row = mysql_fetch_array($check11)) { 
     ?>    
    <tr style="background-color:#d4e3e5;"> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["issues"];?></td> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["notes"];?></td> 
     <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"> 
      <textarea class="pc_1" style="border: none;border-color: Transparent;overflow: auto;width: 100%;height: 100%;background-color:#d4e3e5;resize: none; "></textarea> 
     </td> 
    </tr> 
    <?php } 

}?> 
</table> 

<br><br>  
<input type="hidden" id="status" name="status"/> 
<input style="float: right;" type="image" <?php echo $disabled?> src=<?php echo $button_off?> onMouseOver="this.src='../images/submit_button_on.png'" onMouseOut="this.src='../images/submit_button_off.png'"> 
</form> 

pc1_process.php

<?php 
$status = isset($_POST['status'])?filter_input(INPUT_POST, 'status', FILTER_SANITIZE_STRING):""; 

echo($status); 
?> 
+0

我可以建议你重新思考你是如何计划你的验证。最好是发布所有内容并在pc1_process.php中对其进行验证。在你的pc1_process文件中有一个你期望的密钥数组,不要允许验证你不期望的密钥。 –

回答

0

或者你在创建具有唯一的名称或输入字段的名称属性的多个隐变量应该是一个阵列(名称='状态[]')或通过具有一些唯一标识符将textarea的值附加到相同的隐藏变量中,以便可以将它们分解为每个值。

如果设置输入名称为数组,那么你将不得不在阵列中的PHP脚本,比如$ _ POST [“状态”]

在上面JS的所有值的功能你是隐变量分配值,所以我觉得你是只在PHP脚本中获得最后的值。

+0

感谢您的回答。 :) – Napsters

1

你可以通过这样的:

function validateForm() { 
    var thought = $('textarea.pc_1').map(function(){ 
         return this.value; 
        }).get(); 
    $("input[name='status']").val(thought); // <--this holds ',' separated values 
} 

所以在上面的代码中var thought持有像['val1', 'val2', ...n]所以现在这些值设定为$("input[name='status']")值的数组。


.map()是具有ie 6, 7, 8版本的一些问题,所以你可以做象下面这样:

function validateForm() { 
    var thought = []; 
    $('textarea.pc_1').each(function(){ 
     thought.push(this.value); 
    }); 
    $("input[name='status']").val(thought); // <--this holds ',' separated values 
} 
+0

感谢您的答案。 :) – Napsters

0

你为什么要复制你的textarea的内容到隐藏字段?

如果你添加一个name属性到你的textareas,你可以在PHP中访问这些名字。此外,如果你给每个textarea的名称相同,但[]在名称末尾,你可以作为一个数组访问textarea的值:

while($row = mysql_fetch_array($check11)) { 
?>    
<tr style="background-color:#d4e3e5;"> 
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["issues"];?></td> 
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"><?php echo $row["notes"];?></td> 
    <td style="font-size:12px; border-width: 1px; padding: 8px; border-style: solid; border-color: #729ea5;"> 
     <textarea name="status[]" class="pc_1" style="border: none;border-color: Transparent;overflow: auto;width: 100%;height: 100%;background-color:#d4e3e5;resize: none; "></textarea> 
    </td> 
</tr> 
<?php } 

pc1_process.php

<?php 
$all_statuses = ''; 
if (isset($_POST['status'])) { 
    foreach($_POST['status'] as $status) { 
     // Add filtering here 
     $all_statuses .= $status; 
    } 
} 
echo($all_statuses); 
?> 
+0

感谢您的答案。 :) – Napsters