2014-01-27 25 views
0

我從此jsfiddle中顯示的HTML代碼發佈到代碼如下的PHP頁面。問題是沒有收到數組$_POST['selectedpost']。這是包含勾選了哪些複選框的數組。在js小提琴中,我在示例行中添加了包含複選框的表格,通常這些都是使用PHP和SQL生成的。未從複選框表單接收郵件php

<?php 
include "connect2.php"; 

if (isset($_POST['selectedpost'])) { 
$postschecked = $_POST['selectedpost']; 
$length = count($postschecked); 
} 
else{ 
returnpage(); 
} 

if (isset($_POST['deleteposts'])) { 
foreach($postschecked as $post_id){ 
    $sql = "DELETE FROM posts WHERE post_id='$post_id'"; 
    mysql_query($sql); 
} 
returnpage(); 
} 

if (isset($_POST['passposts'])) { 
foreach($postschecked as $post_id){ 
    $sql = "UPDATE posts SET moderation=1 WHERE post_id='$post_id'"; 
    mysql_query($sql); 
} 
returnpage(); 
} 

if (isset($_POST['editpost'])) { 
if ($lenght==1){ 
    foreach($postschecked as $post_id){ 
     header("location:editpost.php?post_id=$post_id"); 
    } 
} 
else{ 
    returnpage(); 
} 
} 

if (isset($_POST['returnpost'])) { 
if (isset($_POST['reasonreturned'])) { 

    foreach($postschecked as $post_id){ 

     $sql = "SELECT description FROM posts WHERE post_id='$post_id'"; 
     $query = mysql_query($sql); 
     $array = array(); 
     while ($row = mysql_fetch_array($query, MYSQL_NUM)) { 
     $array[] = $row; } 
     $description = "".$array[0][0]; 

     $description = $description . "<br/><br/><span style='color:red;font-size:18px;'>" . $_POST['reasonreturned'] . "</span>"; 

     $sql = "UPDATE posts SET description='$description' WHERE post_id='$post_id'"; 
     $query = mysql_query($sql); 
    } 
} 
foreach($postschecked as $post_id){ 
    $sql = "UPDATE posts SET moderation=3 WHERE post_id='$post_id'"; 
    $query = mysql_query($sql); 
} 
returnpage(); 
} 

if ($length){ 
returnpage(); 
} 

function returnpage(){ 
//header("location:moderate.php"); 
} 
?> 

http://jsfiddle.net/3A6az/2/

而且額外的筆記,我知道是我的代碼如何取消有效的是在地方,我也知道這樣的事實,我應該放棄MySQL和移動到類似mysqli的。感謝對給定

+1

數組,什麼數組?你正在使用一個輸入''你不需要''如果你不應該使用'value ='404' '除非這是你想要通過的「價值」。您可能打算使用多個複選框並使用'name ='selectedpost []'' –

+0

值404是我放入的一個示例,這些都是通常自身生成的。關於/輸入的好處,謝謝,我忘記了這一點。當複選框的張貼在表單中,我認爲他們通過一個數組? – Shard

+0

他們會如果您的複選框被命名爲'name ='selectedpost []''''',如'' –

回答

4

如果你有超過1個複選框,則需要使用

name='selectedpost[]' 

然後它會提供給你$_POST['selectedpost'];作爲數組任何幫助。

希望這會有所幫助!

+0

謝謝,這完全超出了我的想法!我試試 – Shard

+0

謝謝,這是固定的:)我知道這將是一些愚蠢的簡單,當它允許我的病態時勾選 – Shard

+0

很高興我可以幫助!我喜歡綠色箭頭,所以請做! :) – Yani

2

您使用的加括號的輸入<input type='checkbox' name='selectedpost' value='404'></input>再加上你不需要</input> <(FYI)

如果有什麼你不應該使用value='404',除非這就是你想要的東西通過的「價值」。

你可能意味着使用多個複選框,並使用name='selectedpost[]'

即:

<input type='checkbox' name='selectedpost[]'> 

用方括號[]被視爲一個數組。


腳註:

我想,雖然指出,該切換到mysqli_*功能將是最有利的。 mysql_*函數已棄用。

使用mysqli_*prepared statementsPDO功能將更好,以防止SQL注入。

下面是關於如何防止SQL注入指南:How can I prevent SQL injection in PHP?


注:我還發現了一個錯字這可能會給你帶來麻煩if ($lenght==1){

你有字$length在你的代碼以及。更改爲if ($length==1){

+0

Upvote指出/輸入,但我怕你被毆打 – Shard

+0

沒關係(公平是公平的);-)。我很欣賞這一點,並很高興這已經解決了。 @Shard –

+1

@ Fred-ii-我已經提出了你的答案,只是爲了公平:) – Yani