2011-01-27 65 views
0

我想添加評論像StackOverflow和Facebook用於我正在建設的網站。基本上,每個父母職位都會有自己的孩子評論。我打算用jQuery Ajax實現前端,但我正在努力解決如何最好地解決PHP後端問題。

由於每個表單字段具有相同的名稱和ID會導致驗證錯誤(然後可能有一些),所以我將父郵政的ID添加到每個表單字段。將被傳遞字段是commentID,commentBody,commentAuthor - 與該ID添加他們將commentTitle-12

由於$_POST array_key將新信息處理的每個時間將是不同的,我需要剪掉-12(或任何ID可能)從$_POST鍵,只留下commentTitle,commentBody等及其相關的值。

$_POST['commentTitle-12']; //how it would be received after submission 
$_POST['commentTitle']; //this is what I am aiming for 

非常感謝

SOLUTION 由於CFreak-

//Basic example, not actual script 
<?php 
if (array_key_exists("send", $_POST)) { 
    $title = $_POST['title'][0]; 
    $body = $_POST['body'][0]; 
    echo $title . ', ' . $body; 
} 
?> 
<html> 
<body> 
<form name="test" id="test" method="post" action=""> 
<input type="text" name="title[]"/> 
<input type="text" name="body[]"/> 
<input type="submit" name="send" id="send"/> 
</form> 
</body> 
</html> 

更新2 哎呀,那種忘記了它的整點 - 獨一無二名稱(儘管它已經建立:1)這是不是真的有必要和2)可能會更好,對於這種應用,要做到這一點使用jQuery代替)

//Basic example, not actual script 
    <?php 
    if (array_key_exists("send", $_POST)) { 
     $id = $_POST['id']; 
     $title = $_POST['title'][$id]; 
     $body = $_POST['body'][$id]; 
     echo $title . ', ' . $body; 
    } 
    ?> 
    <html> 
    <body> 
    <form name="test" id="test" method="post" action=""> 
    <input type="text" name="title[<?php echo $row['id'];?>]"/> 
    <input type="text" name="body[<?php echo $row['id'];?>]"/> 
    <input type="hidden" name="id" value="<?php echo $row['id']; //the ID?>"/> 
    <input type="submit" name="send" id="send"/> 
    </form> 
    </body> 
    </html> 
+2

你應該永遠只能在一個時間,所以我認爲發佈一個評論回你可能會以錯誤的方式來解決問題。該名稱被用作post數組的鍵,並且具有相同名稱的元素很好。所以當有人提交評論時,只需獲取父ID,並將其作爲ajax帖子中的額外參數傳遞。 – Endophage

+0

你是對的。在這種特殊情況下,知道這個頁面的唯一用戶將啓用Javascript,我將僅使用jQuery來完成此操作。然而,對於未來的情況,如果情況可能並非如此,我想弄清楚如何最好地使用PHP來處理這個問題..但是,你又是對的。 :) – NightMICU

回答

5

PHP有一個小竅門,讓陣列或者甚至多維數組出來的HTML表單。在HTML命名你的領域是這樣的:

<input type="text" name="commentTitle[12]" value="(whatever default value)" /> 

(你可以使用變量或把任何的「12」,如果這就是你在做什麼,關鍵是括號[]

。然後,在PHP中你會得到:

$_POST['commentTitle'][12] 

然後,您可以通過評論由索引ID抓住每個

只是環和

你也可以只把它作爲空方括號中的HTML:

<input type="text" name="commentTitle[]" value="(whatever default value)" /> 

這將使它成爲一個索引數組,從0開始,如果你不關心實際的ID值是什麼。

希望有所幫助。

+0

好的,我們在這裏做了些什麼..但是,我怎樣才能從窗體的'value'屬性中取值呢?謝謝:) – NightMICU

+0

$ commentTitle = $ _POST ['commentTitle'] [12];那有意義嗎?如果沒有,我可以編輯我的答案以提供更完整的示例。 – Cfreak

+0

不,知道了!請參閱編輯..謝謝! – NightMICU

0

你只需要通過$_POST迭代並搜索匹配的密鑰:

function extract_vars_from_post($arr) { 
    $result = array(); 
    foreach ($arr as $key => $val) { 
     // $key looks like asdasd-12 
     if (preg_match('/([a-z]+)-\d+/', $key, $match)) { 
      $result[$match[1]] = $val; 
     } else { 
      $result[$key] = $val; 
     } 
    } 

    return $result; 
} 

沒有測試的代碼,雖然