Как отобразить неотредактируемые данные в форме и прочитать их обратно на сервер
Я заполнил таблицу на веб-странице HTML из таблицы MySQL с помощью цикла. В конце каждой строки я включил флажок. Данные из таблицы хранятся в ячейках таблицы с помощью тип ввода="текст" коробка. Я не хочу, чтобы пользователь изменял какие-либо табличные данные, отображаемые в текстовых полях, но я хочу, чтобы они установили некоторые флажки.
Код для создания таблицы выглядит следующим образом;
$x = 0; while ( $db_field = mysqli_fetch_assoc($result) ) { $_SESSION["Opponent"] = $db_field['Opponents']; $uOpponentName = $_SESSION["Opponent"]; $_SESSION["Venue"] = $db_field['Venue']; $uVenue = $_SESSION["Venue"]; $originalDate = $db_field['Date']; $_SESSION["Date"] = date("d-m-Y", strtotime($originalDate)); $uPlayer = $_SESSION["Player"]; $SQL = "SELECT * FROM ".DB_AVAIL." WHERE opponents = '$uOpponentName' AND venue = '$uVenue' AND player_name = '$uPlayer'"; $result2 = mysqli_query($db_handle, $SQL); $x=$x + 1; if ($result2->num_rows >0) { echo'<tr> <td style="width: 150px;"><input type="text" name="oppon'.$x.'" size="20" value="'.$_SESSION["Opponent"].'" ></input></td> <td style="width: 37px;"><input type="text" name="ven'.$x.'" size="5" value="'.$_SESSION["Venue"].'" ></input></td> <td style="width: 80px;"><input type="text" name="dat'.$x.'" size="10" value="'.$_SESSION["Date"].'" ></input></td> <td style="width: 100px;" align = "center"><input type="checkbox" name="avail'.$x.'" value="avail" checked="checked"></td> </tr> '; }else{ echo'<tr> <td style="width: 150px;"><input type="text" name="oppon'.$x.'" size="20" value="'.$_SESSION["Opponent"].'" ></input></td> <td style="width: 37px;"><input type="text" name="ven'.$x.'" size="5" value="'.$_SESSION["Venue"].'" ></input></td> <td style="width: 80px;"><input type="text" name="dat'.$x.'" size="10" value="'.$_SESSION["Date"].'" ></input></td> <td style="width: 100px;" align = "center"><input type="checkbox" name="avail'.$x.'" value="avail"></td> </tr> '; }}} ?>
Чтобы сохранить данные обратно в другую таблицу в зависимости от того был ли установлен флажок я использовал следующий код;
$y = $_SESSION["RowCount"]; for ($x = 1; $x <= $y; $x++) { $Already = false; if (isset($_POST['avail'.$x.''])) { $uPlayerName = $_SESSION["Player"]; $uOpponent = $_POST['oppon'.$x.'']; $uVenue = $_POST['ven'.$x.'']; //// check to see it player already in the availabilty list for this match $SQL = "SELECT `player_name` FROM ".DB_AVAIL." WHERE `opponents`= '$uOpponent' AND `venue`= '$uVenue'"; $result = $conn->query($SQL); if ($result->num_rows >0) { while($row = $result->fetch_assoc()) { $PlayerName = $row['player_name']; If ($uPlayerName==$PlayerName ){ $Already = true; Break; } } } // sql to add a record If ($Already == false){ $sql = "INSERT INTO ".DB_AVAIL." (`player_name`, `opponents`, `venue`) VALUES ('$uPlayerName','$uOpponent','$uVenue')"; if ($conn->query($sql) === FALSE) { print "Error adding record: " . $sql . "<br>" . $conn->error; } }
Все это работает нормально, но текстовые поля открыты для редактирования, чего я не хочу.
Вопрос в том, как я могу отобразить табличные данные в HTML-форме, чтобы они не могли быть отредактированы, но все же могли быть переданы обратно на сервер в PHP для обработки и сохранения по мере необходимости?
Что я уже пробовал:
Я попытался отключить текстовые поля, изменив код следующим образом
<td style="width: 150px;"><input type="text" name="oppon'.$x.'" size="20" value="'.$_SESSION["Opponent"].'" ></input></td>
к
<td style="width: 150px;"><input type="text" name="oppon'.$x.'" size="20" value="'.$_SESSION["Opponent"].'" disable></input></td>
однако это не удалось, так как $_POST['oppon'.$x."] переменная не была сгенерирована HTML-страницей.