2015-04-03 51 views
0

我有一個顯示多個HTML表單的PHP循環。我有JavaScript onClick提交按鈕。我試圖讓每個表單上的提交按鈕只提交它所屬的表單。我的問題是在循環顯示幾個表單之後,只有循環顯示的最後一個表單纔會提交。單擊提交按鈕時,循環中最後一個表單之前的任何表單都不會提交。我確實在Post form in while loop with javascript submitadd onclick function to a submit button找到了一些有用的信息,這些對我的幫助確實有所幫助,但他們並沒有幫助我解決遇到的這個問題。任何建議將不勝感激。帶有HTML表單和JavaScript提交按鈕的PHP循環僅提交循環中的最後一個表格

這裏是頭部分的JavaScript:

<!-- Script to fire uploaded photos form bound to unique id --> 

<script> 
function submitForm(image_id) { 
    document.forms[image_id].submit(); 
    return false; 
} 
</script> 

<!-- End of script to fire uploaded photos form bound to unique id --> 

這裏是PHP循環和形式:

<div id="uploaded-photos"> 

<!-- Start of Uploaded Photos --> 

<?php 

// Selecting all images from the database 
$select_images = "select * from files where email = '$_SESSION[email]'"; 
$run_images = mysqli_query($conn, $select_images); 
while($row=mysqli_fetch_array($run_images)){ 

// Creating variables for post id, title, date, author, image, keywords and content 
$image_name = $row['name']; 
$image_description = $row['description']; 
$image_title = $row['title']; 
$image_directory_name = $row['image_directory_name']; 
$image_keywords = $row['keywords']; 
$image_privacy = $row['privacy']; 
$image_id = $row['id']; 

?> 

<div id="uploaded-photos-individual"> 

<div id="uploaded_photos_image_wrapper"> 

<form method="post" name="<?php echo "$image_id"; ?>" action="nonadmin_user_profile.php"> 

<p class="av-radio2"><img src="../photo-uploads/server/php/files/<?php echo "$image_directory_name"; ?>/thumbnail/<?php echo "$image_name"; ?>" width="100" height="100" alt="<?php echo "$image_description"; ?>" title="<?php echo "$image_title"; ?>"> 
<br> 
&nbsp;<input type="radio" value="<?php echo "$image_name"; ?>" name="uploaded-personal-avatar-name" <?php if ("$uploaded_personal_avatar_name" == "$image_name") {echo 'checked="checked"';} else {echo '';} ?>>Personal Profile 
<br> 
<input type="radio" value="<?php echo "$image_name"; ?>" name="uploaded-business-avatar-name" <?php if ("$uploaded_business_avatar_name" == "$image_name") {echo 'checked="checked"';} else {echo '';} ?>>Business Profile<input type="hidden" name="image-id" value="<?php echo "$image_id"; ?>"</p> 

</div> <!-- End of Uploaded Photos IMG Wrapper --> 

<div id="uploaded-photos-inputs"> 

<table style="width:100%"> 

<tr> 
<td class="tdleft"><strong>Title:</strong></td> 
<td align="left"><input type="text" name="image-title" style="width:99%" maxlength="250" value="<?php echo "$image_title"; ?>"></td> 
</tr> 

<tr> 
<td class="tdleft"><strong>Description:</strong></td> 
<td align="left"><input type="text" name="image-description" style="width:99%" maxlength="250" value="<?php echo "$image_description"; ?>"></td> 
</tr> 

<tr> 
<td class="tdleft"><strong>Keywords:</strong></td> 
<td align="left"><input type="text" name="image-keywords" style="width:99%" maxlength="250" value="<?php echo "$image_keywords"; ?>"></td> 
</tr> 

<tr> 
<td class="tdleft"><strong>Name:</strong></td> 
<td align="left"><input type="text" name="image-name" style="width:99%" maxlength="250" readonly="readonly" value="<?php echo "$image_name"; ?>"></td> 
</tr> 

<tr> 
<td class="tdleft"><strong>Privacy:</strong></td> 
<td align="left"><select name="image-privacy"><option value="Private" <?php if ("$image_privacy" == 'Private') {echo 'selected="'."$image_privacy".'"';} else {echo '';} ?>>Private</option><option value="Public" <?php if ("$image_privacy" == 'Public') {echo 'selected="'."$image_privacy".'"';} else {echo '';} ?>>Public</option> 
</select></td> 
</tr> 

</table> 

</div> <!-- End of Uploaded Photos Inputs --> 

<div id="uploaded-photos-submit"> 
<input type="submit" value="Update This Photo" class="submit_button" name="<?php echo "$image_id"; ?>" <?php echo 'onClick="return submitForm($image_id);"'; ?>> 

</div> 

</form> 

</div> <! -- End of Uploaded Photos Individual --> 

<?php } ?> 

這裏來接受表單提交和裝載數據庫的代碼:

<!-- Code for Uploaded Photos Update Form --> 

<?php 

if (isset($_POST["$image_id"])) { 

// Let's sanitize the user's uploaded avatar selection for personal profile 
$uploaded_personal_avatar_name_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['uploaded-personal-avatar-name']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded avatar selection for business profile 
$uploaded_business_avatar_name_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['uploaded-business-avatar-name']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded image title 
$image_title_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['image-title']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded image description 
$image_description_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['image-description']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded image keywords 
$image_keywords_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['image-keywords']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded image privacy settings 
$image_privacy_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['image-privacy']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

// Let's sanitize the user's uploaded image id 
$image_id_input = trim(((isset($conn) && is_object($conn)) ? mysqli_real_escape_string($conn, $_POST['image-id']) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""))); 

if ('$uploaded_personal_avatar_name_input' == '') {} 

else { 

// Let's add all this stuff to the database if an uploaded user photo is selected for personal profile use 
mysqli_query($conn, "UPDATE nonadmin_user_login SET 

uploaded_personal_avatar_name='$uploaded_personal_avatar_name_input', 
uploaded_personal_avatar_usage='1', 
built_in_personal_avatar_name='', 
built_in_personal_avatar_usage='0' 

WHERE email = '$_SESSION[email]'") or die(((is_object($conn)) ? mysqli_error($conn) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 

} 

if ('$uploaded_business_avatar_name_input' == '') {} 

else { 

// Let's add all this stuff to the database if an uploaded user photo is selected for business profile use 
mysqli_query($conn, "UPDATE nonadmin_user_login SET 

uploaded_business_avatar_name='$uploaded_business_avatar_name_input', 
uploaded_business_avatar_usage='1', 
built_in_business_avatar_name='', 
built_in_business_avatar_usage='0' 

WHERE email = '$_SESSION[email]'") or die(((is_object($conn)) ? mysqli_error($conn) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 

} 

// Let's add some remaining stuff to the database regardless if any profile picture was selected 
mysqli_query($conn, "UPDATE files SET 

title='$image_title_input', 
description='$image_description_input', 
keywords='$image_keywords_input', 
privacy='$image_privacy_input' 

WHERE email = '$_SESSION[email]' AND id = '$image_id_input'") or die(((is_object($conn)) ? mysqli_error($conn) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 

// If the database insert fails let's print a query failed warning 
if (mysqli_affected_rows($conn) == 0) { 

echo 'Something went wrong'; 
} 

// If the database insert succeeded we can alert the user and refresh the page 
else { 

//echo " <script>alert('Photo Selection Update Successful!');</script> "; 
echo "<script>window.location=window.location</script>"; 

//echo "<script>$(window).load(function() { alert('Photo Selection Update Successful!'); });</script>"; 

} 
} 
?> 

<!-- End of Code for Uploaded Photos --> 

回答

1

我解決了這個問題。這裏的問題是使用相同的變量名稱作爲表單的名稱和提交按鈕的名稱。很明顯,由於表單名稱和提交按鈕名稱都被編碼爲$ image_id,所以這會造成提交混淆。

前面的代碼沒有工作:

<input type="submit" value="Update This Photo" class="submit_button" name="<?php echo "$image_id"; ?>" <?php echo 'onClick="return submitForm($image_id);"'; ?>> 

<form method="post" name="<?php echo "$image_id"; ?>" action="nonadmin_user_profile.php"> 

通過簡單地改變提交按鈕的一切作品的名稱和更正後的代碼如下所示:

<input type="submit" value="Update This Photo" class="submit_button" name="upload-photo-form" <?php echo 'onClick="return submitForm($image_id);"'; ?>> 

<form method="post" name="<?php echo "$image_id"; ?>" action="nonadmin_user_profile.php">