[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Правильно ли связал таблицы
Astin
Приветствую Форумчане!

Вот немного подошел к теме связей таблиц.
Сделал две тестовые таблицы и решил связать их и сделать вывод и удаление.

Прошу посмотреть мой код, правильно ли я делаю?

Таблица №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();
}


Правильно ли написан код?

И если что то не то, то прошу подскажите пожалуйста.

_
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.