Добавих някои наистина хакерски начин за извършване на актуализацията. Трябва да се пазите от SQL инжекция и други лоши неща, когато използвате post
... уверете се, че винаги проверявате и дезинфекцирате данните си. „Хакският“ начин работи, защото работим с целочислени стойности и те се почистват лесно.
Екранна снимка:
Това е моята таблица... Нарекох я така за stackoverflow...
+----+-------+-------+-------+-------+-------+-------+-------+-------+
| id | week1 | week2 | week3 | week4 | week5 | week6 | week7 | week8 |
+----+-------+-------+-------+-------+-------+-------+-------+-------+
| 1 | | | | | | | | |
| 2 | 1 | | | | | | | |
| 3 | 1 | | 1 | | | | | |
| 4 | 1 | | 1 | | 1 | | | |
| 5 | 1 | | 1 | | 1 | | 1 | |
+----+-------+-------+-------+-------+-------+-------+-------+-------+
Това е моят PHP файл.... (залепете го в празен PHP документ, за да го стартирате, той е самостоятелен, освен промяната на db връзката и заявката)
<?php
$mysqli = new mysqli("localhost", "root", "password", "test");
if (!empty($_POST)) {
print "<pre>POST VARS: \n".print_r($_POST,true)."</pre>";
foreach($_POST as $i => $data)
{
if (substr($i,0,3)=='row' && is_numeric(substr($i,3)))
{
$row_id = substr($i,3);
$data = array_flip($data);
$values = array();
for ($x=1; $x<9; $x++) {
$values[] = "week$x = ". ((isset($data[$x])) ? '1' : '0');
}
$stmt = "\nupdate so ".
"\n set ".implode(", \n ",$values).
"\n where id = $row_id; \n";
$update = $mysqli->query($stmt);
if ($update) { print "Row $row_id updated successfully.<br/>"; }
}
print "<br/>";
}
}
$result = $mysqli->query("select * from so");
$mysqli->close();
?>
<form method="post" id="updating" action="<?php $_PHP_SELF ?>">
<?php
while($row = $result->fetch_object())
{
$count = 1;
print "<div style='border:1px solid black; display:inline-block;'>\n";
print "Row ".$row->id."<br/>\n";
while($count < 9)
{
$week = "week$count";
$checkvalue = $row->{$week};
?>
Week<?php echo $count ?> <input type="checkbox" id="Week<?php echo$count;?>" name="row<?php echo $row->id
?>[]" value="<?php echo $count;?>" <?php if($checkvalue==1){
?> checked="checked" <?php } ?> />
<?php
$count++;
}
print "</div><br/><br/>\n\n\n";
}
?>
<input name="update" type="submit" id="update" value="Update">
</form>
"; foreach($_POST като $i => $data) { if (substr($i,0,3)=='ред' &&is_numeric(substr($i,3))) { $row_id =substr($i, 3); $data =array_flip($data); $values =масив (); за ($x=1; $x<9; $x++) { $values[] ="week$x =". ((isset($data[$x])) ? '1' :'0'); } $stmt ="\nuupdate so ". "\n задайте ".implode(", \n ",$values). "\n където id =$row_id; \n"; $update =$mysqli->query($stmt); if ($update) { print "Ред $row_id е актуализиран успешно."; } } печат "
"; }}$result =$mysqli->query("изберете * от така"); $mysqli->close();?>