Приведенные критерии кажутся немного сомнительными, и, поскольку не дано никакого реального указания, но требуется помощь, я собрал воедино некоторый полупсевдокод, чтобы, возможно, помочь вам на пути к конечной цели (или некоторым из них) в любом случае)
Чтобы редактировать / удалять записи, вам нужен способ доступа к ним. Самым простым будет использование строки запроса, указывающей либо на ту же страницу, либо на специальный скрипт-обработчик. Следующие опции выбирают выделенный обработчик.
[Предположим, что предыдущая страница includes
уже включена. Важными изменениями здесь являются добавление гиперссылок, указывающих на новый скрипт report-edit.php
]
<form id="addReport" action ='./functions/report-functions.php' method="post">
<table id="table1" class="table">
<?php
echo '<tr><th>Objectives</th>';
for ( $i = 0; $i < count( $course ); $i++ ) {
$name=$course[$i]->commonName;
echo "<th>{$name}</th>";
}
echo '</tr>';
for( $y = 0; $y < count( $objective ); $y++ ) {
$objective_title=$objective[$y]->objective;
echo "<tr>
<th class=row-header>{$objective_title}</th>";
for ( $x = 0; $x < count( $course ); $x++ ) {
$cseid=$course[$x]->courseId;
$objid=$objective[$y]->objectiveId;
echo "<td>
<input name='check[]' type='checkbox' value='c{$cseid}-o{$objid}' />
<!-- EDIT LINKS EXAMPLE -->
<a href='./functions/report-edit.php?task=edit&course={$cseid}&objective={$objid}'>Edit</a>
<a href='./functions/report-edit.php?task=delete&course={$cseid}&objective={$objid}'>Delete</a>
</td>";
}
echo '</tr>';
}
?>
</table>
</form>
Затем, глядя на report-edit.php
~ полупсевдокод.
<?php
/* report-edit.php */
$tasks=array('edit','delete');
$actions=array('commit-edit','commit-delete');
/* include database connections */
# require 'db-connect.php';
if( $_SERVER['REQUEST_METHOD']=='POST' && !empty( $_POST['action'] ) && in_array( $_POST['action'], $actions ) ){
$course=filter_input( INPUT_POST, 'course', FILTER_SANITIZE_STRING );
$objective=filter_input( INPUT_POST, 'objective', FILTER_SANITIZE_STRING );
$value=filter_input( INPUT_POST, 'check', FILTER_SANITIZE_STRING );
switch( $_POST['action'] ){
case 'commit-edit':
/* process form submission */
$sql='update `report` set `colrow`=:value where `course-id`=:cseid and `objective-id`=:objid';
/*
$args=array(
':value' => $value,
':cseid' => $course,
':objid' => $objective
);
$stmt=$db->prepare( $sql );
$result = $stmt->execute( $args );
exit( header( sprintf( 'Location: report.php?action=%s&status=%s', $_POST['action'], $result ) ) );
*/
break;
case 'commit-delete':
/* process form submission */
$sql='delete from `report` where `course-id`=:cseid and `objective-id`=:objid';
/*
$args=array(
':cseid' => $course,
':objid' => $objective
);
$stmt=$db->prepare( $sql );
$stmt->execute( $args );
exit( header( sprintf( 'Location: report.php?action=%s&status=%s', $_POST['action'], $result ) ) );
*/
break;
default:
exit('error');
break;
}
exit( $sql );
}
if( $_SERVER['REQUEST_METHOD']=='GET' && !empty( $_GET['task'] ) && in_array( $_GET['task'], $tasks ) ){
$course=filter_input( INPUT_GET, 'course', FILTER_SANITIZE_STRING );
$objective=filter_input( INPUT_GET, 'objective', FILTER_SANITIZE_STRING );
$head="
<!DOCTYPE html>
<html>
<head>
<title>{$_GET['task']}</title>
</head>
<body>";
$foot="
</body>
</html>";
switch( $_GET['task'] ){
case 'edit':
case 'delete':
/* render a form */
printf("
%s
<form method='post'>
<h1>%s record</h1>
<input type='text' name='course' value='%s' />
<input type='text' name='objective' value='%s' />
<input type='hidden' name='action' value='commit-%s' />
<input type='submit' />
</form>
%s",
$head,
ucfirst( $_GET['task'] ),
$course,
$objective,
$_GET['task'],
$foot
);
break;
default:
exit('error');
break;
}
} else {
http_response_code(404);
}
?>
Не зная схемы или данных, возвращаемых в report.php
, почти невозможно дать однозначный ответ относительно того, как вы проверяете флажки, если их значение равно X
~ никто, кроме вас, не знает удерживаемых значений - это это могут быть строки, целые числа, биты и т. д. и т. д., поэтому значение каждого флажка может быть cbanana-oharvest
или c23-o44
и т. д. ... оно неизвестно!
Также неизвестно, почему синтаксис for( $i=0....
для итерации массива, а не foreach
? На мой взгляд, использование for( $i=0; $i... etc
открывает возможности для ошибок с индексами и т. Д. Однако, когда дело доходит до повторной проверки флажков, вам необходимо проверить, совпадает ли текущая строка в базе данных / массиве с чем-то еще - см. Предыдущий комментарий о неизвестных значениях, хотя , Итак, псевдо-мудрый:
if( $row['col-A-value' ]=="A value" && $row['col-B-value']=='B value' ){ $checked=' checked=true'; } else { $checked=''; }
<input name='check[]' type='checkbox' value='c{$cseid}-o{$objid}' {$checked} />
Ничто из вышеперечисленного не было проверено больше, чем элементарный тест, и, как уже говорилось, оно является скорее псевдо, чем окончательным. Чем больше вы задаете вопрос, тем больше вы получите ответ, я думаю, по большей части, но если вы создадите новый скрипт report-edit.php
, добавите приведенный ниже код и внесете изменения в report.php
, вы должны лучше понимать о том, как действовать, если нет, я буду в пабе!