кнопка редактирования в mysql

Я получил свою базу данных, чтобы работать, и я могу добавить свои данные и получить обратно на нее снова. Это прекрасно, потому что это первый раз, когда я заставляю его работать, и это открывает много возможностей. Так что мой следующий проект здесь, чтобы изменить мою таблицу в MySQL с помощью кнопки. До сих пор это выглядит так:

Образ

Я могу добавить дату, день, время и время. Но я хотел бы иметь возможность изменять день, если я ошибаюсь, когда добавляю значения в свою базу данных. Я начал делать кнопку редактирования в правой части. Так что со временем я сделаю новую строку, придет новая кнопка редактирования. Но кто-нибудь знает, как я могу присвоить свою кнопку запросу ALTER TABLE? Или, может быть, намек, как это сделать?

С наилучшими пожеланиями ко всем
Из Мадс

ИЗДАННЫЙ КОД:

Я сделал первичный ключ в базе данных p_id. Я также получаю возврат от p_id

  <html>

<head>
<link rel="stylesheet" type="text/css" href="css/arrangeTables.css">

</head>

<body>

<form method="post">
<h3>Add your worktime to database</h3><br>
<input type="date" name="date"><br><br>
<select name="day">
<option value="Mandag">Mandag</option>
<option value="Tirsdag">Tirsdag</option>
<option value="Onsdag">Onsdag</option>
<option value="Torsdag">Torsdag</option>
<option value="Fredag">Fredag</option>
<option value="Lørdag">Lørdag</option>
<option value="Søndag">Søndag</option>
</select>
<input type="time" name="fromtime">
<input type="time" name="totime">
<input type="submit" value="submit"><br><br>

</form></body>

<?php
$username = "root";
$password = "root";
$hostname = "127.0.0.1:3306";

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br><br>";

//select a database to work with
$selected = mysql_select_db("danskebank",$dbhandle)
or die("Could not select any database");

// Insert to database
$date = $_POST['date'];
$day = $_POST['day'];
$fromtime = $_POST['fromtime'];
$totime = $_POST['totime'];

$sql = "INSERT INTO addWorkTime(date, day, fromtime, totime) VALUES('$date', '$day', '$fromtime', 'totime')";

$result = mysql_query($sql);

//Return records from database
$result = mysql_query("SELECT date, day, fromtime, totime FROM addWorkTime");
?><!-- Return from the database -->
<h3>Return from database:</h3><br>

<!-- headers -->
<tr>
<th class="column1">Date</th>
<th class="column2">Day</th>
<th class="column3">From</th>
<th class="column4">To</th>
</tr>

<!-- Now a row for each new set of data, here you probably need to
loop through some data set you retrieve from the database -->
<?php while($row = mysql_fetch_array($result)): ?>
<table>
<tr>
<td class="resultcolumn4"><?php echo $row{'p_id'};?></td>
<td class="resultcolumn1"><?php echo $row{'date'};?><br></td>
<td class="resultcolumn2"><?php echo $row{'day'};?></td>
<td class="resultcolumn3"><?php echo $row{'fromtime'};?></td>
<td class="resultcolumn4"><?php echo $row{'totime'};?></td>
<td><a href='link_to_the_add_or_edit?id='.<?php $row['id'] ?></td>

<?php

$id=$_GET['id'];

echo '<input type="hidden" name="name_of_hidden_input" value='.$id.'>';
//and the rest of the form

if($_GET['submit']){

//Some mysql injection prevention first
update danskebank SET date=['?'] where id= $_GET['name_of_hidden_input']
}
?>
</tr>
<?php endwhile; ?>
</table>
</html>

0

Решение

Для редактирования конкретной строки вам понадобится Основной ключ в вашей таблице MySQL. Например, вы называете это: id. Теперь вам нужно также получить идентификатор из таблицы: SELECT id, date, day, fromtime, totime FROM addWorkTime

Использовать $row['id']; в цикле while и замените: <input type="button" value="Edit"> чтобы: <a href='link_to_the_add_or_edit?id='.<?php $row['id'] ?> Теперь ваш URL будет выглядеть так: link_to_the_add_or_edit? id = 1, и вы можете использовать: $_GET['id'] на странице link_to_the_add_or_edit. Теперь, когда вы находитесь на этой странице, убедитесь, что вы помните этот идентификатор (ЗАСЕДАНИЯ), так что вы можете использовать его в действии отправки при заполнении значений.
Пример сеанса:

session_start();
$_SESSION['id']=$_GET['id'];

на странице link_to_the_add_or_edit. После этого вы можете обновить строку, которую вы хотите, как это (когда вы отправляете что-то):

update danskebank SET date=['?'] where id= $_SESSION['id']

РЕДАКТИРОВАТЬ (относительно комментария DarkBee):

Вместо использования здесь сессий, вы также можете хранить $ _GET [‘id’] в скрытом поле, например так:

$id=$_GET['id'];

echo '<input type="hidden" name="name_of_hidden_input" value='.$id.'>';
//and the rest of the form

if($_GET['submit']){

//Some mysql injection prevention first

update danskebank SET date=['?'] where id= $_GET['name_of_hidden_input']
}

и в запросе используйте: $_GET['name_of_hidden_input'];

1

Другие решения

Если вы хотите редактировать значения строки, попробуйте через url:

echo '<a href="edit.php?row_id=' . $row_id . '>Edit</a>'; //You should have id for every row

Создайте edit.php файл и получить идентификатор строки с $_GET['row_id'], Создайте form Добавь немного input в этом (как этот:<input type="datetime" />), а затем обработать его другим php-файлом. Вы должны выполнить свой UPDATE запрос там. Как это :

$sql = "UPDATE row SET
date     = '$date' ,
day      = '$day' ,
fromtime = '$fromtime' ,
totime   = '$totime'
WHERE id     = $row_id;
";

mysql_query($sql);

Но для всего этого вы должны иметь id для каждой строки в базе данных.

0