для этого я бы использовал три таблицы SQL (из-за нормализации), мы делаем это так, чтобы в MySQL не было дублирования данных, таблица photos
имеет отношение много: 1 с pages
(то есть есть несколько фотографийбыть связанными с одной страницей, хотя мы не хотим дублировать идентификатор фотографии в таблице страниц несколько раз. Также мы не хотим добавлять несколько идентификаторов страниц в таблицу фотографий. Поэтому мы используем третью таблицу location
, чтобы связатьсоедините их вместе и нормализуйте базу данных.
table 1 (photos):
columns: photo_id(p-key), filename
(maybe further fields such as description, alt, etc.)
table 2 (pages):
columns: page_id(p-key), page_info
table 3 (location):
columns: unique_key(p-key), page_id, photo_id
ПРИМЕЧАНИЕ. Таблица 3 является ЕДИНСТВЕННОЙ таблицей, которая может иметь дублированные данные, т.е.
unique_key page_id photo_id
1 1 1
2 1 2
3 1 3
4 2 6
5 2 7
6 2 8
Таким образом, вы сохраняете данные в двух таблицах, которыефактически содержат данные, полностью свободные от любого дублирования, что позволяет вам добавить столько дополнительных полей к каждой строке, сколько вам потребуется.
Не забывайте, что правила нормализации применяются к каждому полю. Если вы вводитеновый столбец в photos
и осознайте, что новый столбец можно применить к нескольким фотографиям, пришло время начать смотреть на новую таблицу дляr этот столбец и таблица нормализации, чтобы минимизировать дублирование.
Исключений из этого правила очень мало, следуя ему, можно значительно упростить определение приложений баз данных SQL в PHP.
Теперь мы можем использовать серию запросов SQL из PHP, чтобы получить точноеИнформация, которая вам нужна на странице.Мы знаем, на какой странице мы находимся, поэтому мы удостоверимся, что page_id соответствует странице, на которой мы находимся, и получим все ассоциированные photo_id с location
$connect = mysql_connect(HOST,USER,PASS) or die(mysql_error());
$query = mysql_query(
"SELECT location.photo_id WHERE location.page_id=" . $page, $connect) or die(mysql_error());
while ($row = mysql_fetch_array($query, MYSQL_ASSOC) {
$images[] = $row['photo_id'];
}
Теперь вы можете использовать цикл foreach для циклического переключениячерез массив $ images и захватите URL-адреса фотографий
foreach ($images as $image) {
$query = mysql_query(
"SELECT filename FROM `photos` WHERE photo_id =" . $image, $connect) or die(mysql_error());
$image_loc[] = mysql_fetch_row($query); // only one row should exist now!
}
У вас есть числовой массив $ image_loc, который содержит все ссылки на изображения, связанные со страницей, на которой вы находитесь.
Итак, вы идете, быстрый ускоренный курс по нормализации базы данных и как настроить таблицы SQL!:)
Удачного кодирования!(Я написал здесь весь код вручную, прошу прощения за любые глупые ошибки!)