我根据PHP
中的查询结果创建了一个表格。它是一个可编辑的表,当用户单击save时,我需要遍历表元素并将文本值存储到数组中。作业#列中的值必须位于开始或结束 每次迭代循环,以便我可以轻松地提取它,然后在我完成时使用它来插入值。
PHP表格创建
<?php
if(isset($_POST['aid'])) {
$aid = $_POST['aid'];
$projects = getProjects($db);
$members = getUserName($db);
try {
$project_info = $db->prepare("
SELECT projects.id,
projects.project_name,
projects.pm,
projects.apm,
projects.est_start,
projects.est_end,
projects.contact,
projects.trips,
projects.tasks,
projects.perc_complete,
projects.bcwp,
projects.actuals,
projects.cpi,
projects.bcws,
projects.bac,
projects.comments,
projects.status,
projects.project_revenue,
projects.profit_margin,
projects.pm_perc,
projects.audited
FROM projects
WHERE account_id = ?
");
$project_info->bindValue(1, $aid, PDO::PARAM_STR);
$project_info->execute();
echo "<table class='projects_contentTable'>";
echo "<th class='content_th'>" . "Job #" . "</th>";
echo "<th class='content_th'>" . "Project Name" . "</th>";
echo "<th class='content_th'>" . "PM" . "</th>";
echo "<th class='content_th'>" . "APM" . "</th>";
echo "<th class='content_th'>" . "Est. Start" . "</th>";
echo "<th class='content_th'>" . "Est. End" . "</th>";
echo "<th class='content_th'>" . "Contact" . "</th>";
echo "<th class='content_th'>" . "Trips" . "</th>";
echo "<th class='content_th'>" . "Tasks" . "</th>";
echo "<th class='content_th'>" . "% Complete" . "</th>";
echo "<th class='content_th'>" . "BCWP" . "</th>";
echo "<th class='content_th'>" . "Actuals" . "</th>";
echo "<th class='content_th'>" . "CPI" . "</th>";
echo "<th class='content_th'>" . "Comments" . "</th>";
echo "<th class='content_th'>" . "Status" . "</th>";
echo "<th class='content_th'>" . "Project Revenue" . "</th>";
echo "<th class='content_th'>" . "Profit Margin" . "</th>";
echo "<th class='content_th'>" . "PM%" . "</th>";
echo "<th class='content_th'>" . "Audited" . "</th>";
while ($row = $project_info->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td class='content_td'>" . "<a href='#'>" . $row['id'] . "</a>" . "</td>";
echo "<td class='projects_editable_content_td' contenteditable='true'>" . $row['project_name'] . "</td>";
echo "<td class='projects_editable_content_td'>" .
"<select id='table_edit_project_pm'>" .
"<option value=''>" . $row['pm'] . "</option>" .
"<option>" . "-----" . "</option>";
foreach($members as $key => $value) {
echo "<option value='".$key."'>" . $value . "</option>";
}
echo "</td>";
echo "<td class='projects_editable_content_td'>" .
"<select id='table_edit_project_apm'>" .
"<option value=''>" . $row['apm'] . "</option>" .
"<option>" . "-----" . "</option>";
foreach($members as $key => $value) {
echo "<option value='".$key."'>" . $value . "</option>";
}
echo "</td>";
echo "<td class='projects_editable_content_td'>" .
"<input type='text' id='table_edit_project_start' value='". $row['est_start'] ."'>";
echo "</td>";
echo "<td class='projects_editable_content_td'>" .
"<input type='text' id='table_edit_project_end' value='". $row['est_end'] ."'>";
echo "</td>";
echo "<td class='projects_editable_content_td' contenteditable='true'>" . $row['contact'] . "</td>";
echo "<td class='content_td'>" . $row['trips'] . "</td>";
echo "<td class='content_td'>" . $row['tasks'] . "</td>";
echo "<td class='content_td'>" . $row['perc_complete'] . "</td>";
echo "<td class='content_td'>" . $row['bcwp'] . "</td>";
echo "<td class='content_td'>" . $row['actuals'] . "</td>";
echo "<td class='content_td'>" . $row['cpi'] . "</td>";
echo "<td class='projects_editable_content_td' contenteditable='true'>" . $row['comments'] . "</td>";
echo "<td class='projects_editable_content_td'>" .
"<select id='table_edit_project_status'>" .
"<option value=''>" . $row['status'] . "</option>" .
"<option>" . "-------" . "</option>" .
"<option>" . "On Hold" . "</option>" .
"<option>" . "In Progress" . "</option>" .
"<option>" . "Open" . "</option>" .
"<option>" . "Complete" . "</option>" .
"</select>";
echo "</td>";
echo "<td class='content_td'>" . $row['project_revenue'] . "</td>";
echo "<td class='content_td'>" . $row['profit_margin'] . "</td>";
echo "<td class='content_td'>" . $row['pm_perc'] . "</td>";
echo "<td class='projects_editable_content_td'>" .
"<input type='checkbox' id='table_edit_project_audited'>";
echo "</td>";
echo "</tr>";
}
echo "</table>";
} catch(PDOException $e) {
die($e->getMessage());
}
} else {
echo 'could not load projects table';
}
?>
现在我用来获取这些数据的代码就像这样
的jQuery
$('.projects_editable_content_td, .projects_contentTable td:nth-child(3) a').each(function () {
saveEdits.push($(this).text());
});
// then alert the values using this loop
$.each(saveEdits, function(index, value) {
alert(index + ': ' + value);
});
当循环播放时,我从saveEdits [0]和saveEdits [1]获取Job#的值,然后我从[select]元素中获取所有[option]值。我知道这是因为我不知何故需要在这个循环中加入“option:selected”。无论如何,我的循环是一团糟,经过几个小时的乱搞,我不能让这个东西工作。
所以,我需要循环遍历每个tr,从tr中的每个td元素中获取文本值,并在每次迭代的开始或结束时存储来自Job#列的值。循环。
非常感谢任何帮助
答案 0 :(得分:1)
如果您为id_cell
等特定单元格添加额外的类,则会为您提供每行的第一个单元格内容。
PHP:
while ($row = $project_info->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td class='content_td id_cell'>" . "<a href='#'>" . $row['id'] . "</a>" . "</td>";
jQuery的:
$(".projects_contentTable tr").each(function(){
$(this).find('.id_cell');
});
如果您想在该单元格中获取您的确切ID,可以执行以下操作:
var id = $(this).find('.id_cell').find('a').text();
但当然,如果这是你想要的,我真的无法得到你的问题!
答案 1 :(得分:1)
如果我理解正确,我相信这会起作用,或者至少是非常类似的东西。一次迭代一行,对于每一行,从&lt;中获取文本。 td&gt; s缺乏&lt;选择&gt; s,然后从选中的&lt;中获取文本选项&gt; s。顺便说一句,不要忘记添加&lt; / select&gt;在你的PHP中,添加&lt;并不是一个坏主意。 thead&gt;和&lt; tbody&gt;。欢呼声。
$('tbody tr').each(function() {
$('td:not(:has(select)),option:selected').each(function() {
saveEdits.push($(this).text());
});
});