Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Вставка данных из PHP в MySQL в три таблицы, Вставка данных из PHP в MySQL в три таблицы в связке
Snnick  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42681
На форуме: 8 месяцев, 21 день
Карма:




Всем привет. Недавно начал осваивать PHP, сейчас пытаюсь написать маленький блог. Стоит задача вставить данные в таблицы, которые связанны.
Есть таблицы:
1. Пользователи с полями (id, Name, email, text, id_categories(внешний ключ на таблицу с китегориями))
2. Категории с полями (id, categories)
3. Теги с полями (id, tags)
4. Пользователи_теги с полями (id_pers, id_tag) Соотношение многие ко многим.

Создал две функции на добавление данных в таблицы в Таблицу №1(Пользователи) и Таблицу №3(Теги), в Таблицу №2(Категории) данные передаются по внешнему ключу(id_categories) с Таблицы №1
Не получается создать функцию, которая бы добавляла в Таблицу №4(Пользователи_теги) Данные для связки по первичному id Таблицы №1(Пользователи) и Таблицы №3(Теги).
Подскажите кто сталкивался с таким плиз.
Ниже скидываю код.



if (isset($_POST["submit"])){// На отправку постом
$nPost['name'] = $_POST['name'];
$nPost['email'] = $_POST['email'];
$nPost['tags'] = $_POST['tags'];
$nPost['text'] = $_POST['text'];
$nPost['categories'][0] = $_POST['categories'][0];
//var_dump($_POST);
}
if (isset($nPost['tags']) and !empty($nPost['tags'])){
$arrTags = array_unique(explode(', ', $nPost['tags']));
}

$connection = mysqli_connect('localhost', 'root', '') or die('Could not connect: ' . mysqli_error($connection)); // Создаем подключение
mysqli_select_db($connection, 'blog') or die('Could not select database'); //Конектимся к базе данных
$table = 'myblog'; // Загоняем таблицу в переменную
$tableTags = 'tags';
$tableTextTags = 'text_tags';


if (isset($_POST["submit"])){ //Проверяем если начата кнопка то формируем массив
$arr = array('name' => $nPost['name'], 'email' => $nPost['email'], 'text' => $nPost['text'], 'photo' => $files['photo']['name'], 'id_categories' => $nPost['categories'][0]); // Масив из которого будем добавлять значение в базу данных
}

function insert($connection, $table, $arr) { // Создаем функцию
$values = "'{$arr['name']}', '{$arr['email']}', '{$arr['text']}', '{$arr['photo']}', '{$arr['id_categories'][0]}'"; //Формируем значения для запроса и загоняем их в переменную
$keys = array_keys($arr);
$f = implode(', ', $keys);
$qwery = "INSERT INTO {$table} ({$f}) VALUES ($values)"; //Запрос на добавление данных, которые мы берем из массива
$result = mysqli_query($connection, $qwery) or die('Query failed: ' . mysqli_error($connection));
}
// Проверяем если есть все елементы то вставляем их в базу
if (isset($nPost['name']) and $nPost['email'] and $nPost['text'] and $files['photo']['name'] and $nPost['categories']){
insert($connection, $table, $arr);
}
function insertTags($connection, $tableTags, $arrTags) { // Создаем функцию
//Формируем значения для запроса и загоняем их в переменную

foreach ($arrTags as $val){
echo $val.'<br>';
$qwery = "INSERT INTO {$tableTags} (tags) VALUES ('{$val}') ";
echo "$qwery".'<br>';
$result = mysqli_query($connection, $qwery) or die('Query failed: ' . mysqli_error($connection));
}
}

insertTags($connection, $tableTags, $arrTags);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1355
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 6 дней
Карма: 77




Как же тут ВСЕ не логично, не удивительно что приходится создавать вторую тему, и никто не хочет отвечать.
С вашими знаниями, нужно не блог писать. а изучать каждый элемент в отдельности.

Вот примерно так должно быть.
// подключаемся к Mysql
// Подключение лучше всего вынести во внешний файл, и подключать

include connect.php;

// Если форма была отправлена
if (isset($_POST["submit"])){

// тут проверяем все ли заполненно

// Если все хорошо

// тут некоторое количество кода, (обращение к функции) которая загрузит и обработает пользовательский файл.

// Экранируем спец символы

$name = mysqli_real_escape_string($connection, $_POST['name']);
$email = mysqli_real_escape_string($connection, $_POST['email']);

// Запрос на добавления пользователя
$sql = "
INSERT INTO
`myblog`
SET
`name` = '"
.$name."',
`email` = '"
.$email."',
и т.д
"
;
mysqli_query($connection, $sql) or die('Query failed: ' . mysqli_error($connection));

/*
Теги
1) Проверить есть ли такие в базе, если не нужно дубликатов
1а) Добавляем только новые в 3 таблицу
2) Узнаем номера тегов
2а) добавляем данные в 4 таблицу.
*/

}

P.S.
Запросы в цикле - зло
Добавлять данные не обрабатывая - не безопасно и плохо
функция ради функции (insert) - ана должна быть универсальной, и не "статичной".

Это сообщение отредактировал Kusss - 2.05.2016 - 23:49
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Snnick  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42681
На форуме: 8 месяцев, 21 день
Карма:




Спасибо. Я только пару месяцев как начал изучать PHP, много еще не знаю.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса