Вот немного подошел к теме связей таблиц.
Сделал две тестовые таблицы и решил связать их и сделать вывод и удаление.
Прошу посмотреть мой код, правильно ли я делаю?
Таблица №1. Здесь название фирмы и ее адрес
CREATE TABLE IF NOT EXISTS `nam` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`adres` varchar(100) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
Таблица №2. Здесь Процентные ставки
CREATE TABLE IF NOT EXISTS `zol` (
`z_id` int(11) NOT NULL,
`zol` int(11) NOT NULL,
`teh` int(11) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
Связал таблицы через вот такой запрос:
ALTER TABLE `zol` ADD FOREIGN KEY (`z_id`) REFERENCES `nam` (`id`)
Вот тестовый код где я заношу в базу данные
<?php
include 'conect.php';
//Если переменная ok передана
if (isset($_POST["ok"])) {
$name = htmlspecialchars(trim($_POST["name"]));
$adres = htmlspecialchars(trim($_POST["adres"]));
$zol = htmlspecialchars(trim($_POST["zol"]));
$teh = htmlspecialchars(trim($_POST["teh"]));
$query = "
INSERT INTO
`nam`
SET
`name` = '".mysql_real_escape_string($name)."',
`adres` = '".mysql_real_escape_string($adres)."'
";
$sql = mysql_query($query) or die("Ошибка данных!");
// получаем номер добавленной записи (id)
$id = mysql_insert_id();
$query = "
INSERT INTO
`zol`
SET
`zol` = '".(int)($zol)."',
`teh` = '".(int)($teh)."'
";
$sql = mysql_query($query) or die("Ошибка данных!");
// получаем номер добавленной записи (id)
$id = mysql_insert_id();
//Если вставка прошла успешно
if (mysql_affected_rows() > 0) {
echo 'Успех!!!';
}
}
?>
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>GGGG'Успех!!!'</title>
</head>
<body>
<form action="" method="post">
<p>Имя</p>
<input type="text" name="name" minlength="3" placeholder="" required />
<p>Адрес</p>
<input type="text" name="adres" placeholder="" required />
<p>Золото</p>
<input type="text" name="zol" placeholder="" required />
<p>Техника</p>
<input type="text" name="teh" placeholder="" required />
<br>
<button name="ok" type="submit">Отправить заявку</button>
</form>
</body>
</html>
Вот код в котором вывожу и могу удалять данные в связанных таблицах
<?php
include 'conect.php';
//Удаляем, если что
if (isset($_GET['del']) > 0) {
$id = strip_tags(trim($_GET['del']));
$id = intval($id);
$query ="DELETE `nam`, `zol` FROM `nam` LEFT JOIN `zol` ON `nam`.id = `zol`.z_id WHERE id='".$id."'";
$sql = mysql_query($query) or die("Ошибка данных!");
if (mysql_affected_rows() > 0) {
echo 'Отлично!';
}
else {
echo 'Неудача'; }
}
//Получаем данные
$query = "SELECT * FROM `nam` LEFT JOIN `zol`
ON `nam`.id = `zol`.z_id ORDER BY `nam`.id DESC LIMIT 5";
// Если таблица не существует то ошибка
$sql = mysql_query($query) or die("Ошибка данных!");
// Проверяем существование строк в таблице
// Если строк больше нуля то выводим, если нет строк выводим сообщение
if(mysql_num_rows($sql) > 0){
$table = "<table>\n";
while ($result = mysql_fetch_assoc($sql)) {
$table .= "<tr>\n";
$table .= "<td>№ </td>\n";
$table .= "<td>Название </td>\n";
$table .= "<td>Город </td>\n";
$table .= "<td>Золото </td>\n";
$table .= "<td>Техника </td>\n";
$table .= "<td></td>\n";
$table .= "</tr>\n";
$table .= "<tr>\n";
$table .= "<td></td>\n";
$table .= "<td>".$result['name']."</td>\n";
$table .= "<td>".$result['adres']."</td>\n";
$table .= "<td>".$result['zol']."</td>\n";
$table .= "<td>".$result['teh']."</td>\n";
$table .= "<td><a href='./wm.php?del=".$result['id']."'>Удалить</a></td>\n";
$table .= "</tr><br />\n";
}
$table .= "</table>\n";
echo $table;
}
else{
echo "<b>Записей НЕТ!</b>"; //Если записи закончились
die();
}
Правильно ли написан код?
И если что то не то, то прошу подскажите пожалуйста.
_