Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись в базу данных массива чекбоксов в цикле (PHP) / 21 сообщений из 21, страница 1 из 1
20.01.2016, 18:00
    #39151726
alex_1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
Существует некоторая форма заказа, содержащая в себе массив доступных для выбора элементов меню (запрос SQL) и который выводится с помощью цикла do...while в виде последовательности чекбоксов (признак включения элемента меню в заказ), text'ов (количество экземпляров каждого выбранного элемента) и дат. Вот в таком виде:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$query_rent = mysql_query("SELECT IDItem, Number, Price, Count FROM room");
	$q_rent = mysql_fetch_array($query_rent);
	  do {
	   echo '

	       <input type="checkbox" name="IDItem" id="checkboxSuccess" value="'.$q_rent['IDItem'].'">
	      <input type="text" name="Interval" size="3">	
	      <input name="DateBegin" value="'.date('Y-m-d H:i').'" class="datepickerTimeField"> ';
	}
	while($q_rent = mysql_fetch_array($query_rent));


Клиент должен отметить галочками выбранные элементы, проставить для выбранных элементов количество и дату, после нажатия кнопки ОК должен выполниться запись в базу массива выбранных элементов.
Как правильно выполнить запись в базу?
Насколько я понимаю, после поста страницы должен быть цикл, перебирающий массив выбранных элементов. Но пока нашел только как записать массив чекбоксов, без дополнительных контроллов.
...
Рейтинг: 0 / 0
20.01.2016, 20:41
    #39151825
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
вам нужно insert или update?
...
Рейтинг: 0 / 0
21.01.2016, 10:12
    #39152004
alex_1988
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
SharuPoNemnogu, insert нужен
...
Рейтинг: 0 / 0
21.01.2016, 12:58
    #39152207
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
alex_1988, вот так попробуй
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
// это заменить
echo '<input type="checkbox" name="item['.$q_rent['IDItem'].'][id]" id="checkboxSuccess" value="'.$q_rent['IDItem'].'">
	      <input type="text" name="item['.$q_rent['IDItem'].'][Interval]" size="3">
	      <input name="item['.$q_rent['IDItem'].'][DateBegin]" value="'.date('Y-m-d H:i').'" class="datepickerTimeField"> ';

//это обработка
$insertData = [];
foreach ($_POST['item'] as $IDItem => $values) {
    if (isset($values['IDItem'])) {
        $insertData[] = "('{$IDItem}', '{$values['Interval']}', '{$values['DateBegin']}')";
    }
}

if (count($insertData) > 0) {
    $sql = "INSERT INTO table (IDItem, Interval, DateBegin) VALUES " . implode(',', $insertData);
    mysql_query($sql);
}


...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.02.2017, 22:19
    #39409414
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
доброе времени суток ,

У меня похожая проблема. Клиент должен записать список людей - отметить галочками выбранные элементы; выполниться запись в базу массива ($insertData или $f_ids ???) выбранных элементов и
дополнительных данных соответствующих переменным ($eid) и ($_SESSION['tc_user_id']).

Как правильно выполнить запись выбранных клиентов в базу?
база - invites

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
include ('config.inc');
session_start();

if(!isset($_SESSION['tc_user_name']))
	header('Location: index.php');

if(!isset($_GET['id']))
	header('Location: index.php');

$eid = $_GET['id']; // - event_page_id

$f_ids = $_POST['ids_array']; // - selected_user_id


$insertData = [];
foreach ($_POST['ids_array'] as $user_id => $values) {
    if (isset($values['user_id'])) {
        $insertData[] = "('{$user_id}')";
    }
}

if (count($insertData) > 0) {
    $sql = "INSERT INTO invites VALUES ( $eid, ".$_SESSION['tc_user_id'].",".implode(',', $insertData)")";
    mysql_query($sql);
}

	
echo 'sent';
}

 



Спасибо за помощь :)
...
Рейтинг: 0 / 0
23.02.2017, 00:26
    #39409443
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreerбаза - invitesПутаете понятия. Судя, по коду, пишется, всё же, в таблицу invites, что правильно.
toutcreerвыполниться запись в базу массиваМассив в чистом виде в базу MySQL не пишется, нет такого типа данных. Если только серилизовать... или один элемент массива === одна запись в базе... или по какому-то другому алгоритму.
По коду, вроде, попытка сделать по одной записи на элемент. Однако, мне кажется, текст запроса собран с ошибкой. Во всяком случае, закрывающая скобка ")" болтается сама по себе, без конкатенации, что должно бы вызвать ошибку PHP. А вообще, var_dump($sql); и смотреть, что получилось при сборке запроса.
...
Рейтинг: 0 / 0
23.02.2017, 01:16
    #39409446
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,
спасибо

я просто ищу какой-нибудь способ что бы данные - user_id которы находиятся в
Код: plaintext
$f_ids = $_POST['ids_array'];


мне значит нужно преобразовать массив в функцию и по-очереди, ввести в таблицу ?
...
Рейтинг: 0 / 0
23.02.2017, 01:25
    #39409449
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreer,
Что должно получиться в итоге то? Мои догадки - это догадки, всего лишь. Вы только показали попытку решения какой-то, лишь вам известной задачи, но не озвучили ни желаемый результат добавления записей в таблице, ни структуру этой самой таблицы.

toutcreerпреобразовать массив в функциюТакое преобразование Вы сами придумали или прочитали в каком то учебнике?
...
Рейтинг: 0 / 0
23.02.2017, 01:43
    #39409450
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,

автор Такое преобразование Вы сами придумали - :) да !

извините, может это пройдёт за сарказм - но совсем нет, я просто пытаюсь понять как сделать функцию для сайта ( приглосить друзей )

У меня есть массив (уже готовый ,) который содержит имена друзей которые были выделены при клике в чекобксе .

теперь хотелось-бы записать в таблицу
Код: php
1.
имя того кто приглашает(.$_SESSION['tc_user_id'].) , мероприятие ($eid), имена приглашенных друзей ".implode(',', $f_ids)"



До этого я посылал email каждому из друзей с приглашением
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?php

include ('config.inc');
session_start();

if(!isset($_SESSION['tc_user_name']))
	header('Location: index.php');

if(!isset($_GET['id']))
	header('Location: index.php');

$eid = $_GET['id'];

$f_ids = $_POST['ids_array'];

$qry = "SELECT * FROM user WHERE user_id in (".implode(',',$f_ids).")";
$res = $con->query($qry) or die('error');

$link = "https://".$_SERVER['HTTP_HOST']."/event.php?id=".$eid;
$msg = "Bonjour cher ami. Je voudrais vous inviter &#224; cet &#233;v&#233;nement. Cliquez sur ce lien pour plus de d&#233;tails: ".$link;
$msg = wordwrap($msg, 70);

if($res->num_rows > 0){
	while($row = $res->fetch_assoc()){
		mail($row['user_email'], "Toutcreer - Event Invitation", $msg);
	}
}

echo 'sent';



ещё раз СПАСИБО !
...
Рейтинг: 0 / 0
23.02.2017, 02:39
    #39409451
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
Ну как-то так, если правильно понимаю задачу.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$f_ids = implode(',', $_POST['ids_array']);

$sql = <<<SQL
INSERT INTO `invites` (
  `user_id`,
  `event_id`,
  `friends_ids`
)
VALUES (
  {$_SESSION['tc_user_id']},
  {$eid},
  '{$f_ids}'
)
SQL;



Или на каждого приглашенного должна быть добавлена отдельная запись?
...
Рейтинг: 0 / 0
23.02.2017, 03:31
    #39409453
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,

ооо да похоже на то ... да на каждого приглашенного должна быть добавлена отдельная запись где будет заменят только $f_ids ... вот ...
...
Рейтинг: 0 / 0
24.02.2017, 04:34
    #39409788
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
а как сделать повторную запись то? уже 3ий день сижу , ни как разобраться не могу...
...
Рейтинг: 0 / 0
24.02.2017, 11:50
    #39409832
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
Чем повторная от первичной отличается?
...
Рейтинг: 0 / 0
24.02.2017, 13:46
    #39409892
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,

повторная должна записывать следующую переменную ...? или я что то не понял ...??
...
Рейтинг: 0 / 0
24.02.2017, 15:48
    #39409954
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreer, крме Вас никто же не знает, что эта штука должна делать в принципе.

Вот с моей колокольни, повторная запись - это приглашение того же или изменённого списка друзей на то же самое мероприятие в случае, если весь список идёт одной записью (список друзей через запятую). Тогда это будет другой запрос - UPDATE или, при использовании составного индекса по первым двум полям - INSERT ... ON DUPLICATE KEY UPDATE.

Вы же, насколько понимаю, пишите в базу по одной записи на друга. В этом смысле вижу только одну проблему повторных записей - чтоб записи не дублировались. Решается составным индексом, опять же. Впрочем, тут можно нарисовать множество вариантов. Возможно, в Вашем случае будет более правильным использование составного индекса по второму и третьему полям (мероприятие и друг) и запроса INSERT IGNORE (если друг уже был приглашен на мероприятие кем-то другим, то новое приглашение не будет сформировано).

Ну а переменные массива можно все скопом закинуть - MySQL позволяет одним запросом INSERT добавить несколько записей в таблицу, перечислив все необходимые записи в VALUES через запятую.

Впрочем, деталей в топике очень мало, чтоб давать какие-то исчерпывающие советы. Или я чего-то не понимаю.
...
Рейтинг: 0 / 0
24.02.2017, 17:13
    #39409973
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,

а можно переговорить по skype ?практичнее будет ...
...
Рейтинг: 0 / 0
24.02.2017, 17:32
    #39409976
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
вот на пример, у меня записывает только одного гостя ; двоих сразу не может и второго по отдельности тоже не записывает ...

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$eid = $_GET['id'];

$f_ids = $_POST['ids_array'];

// con aux utilisateurs selectionnes
$qry = "SELECT * FROM user WHERE user_id in (".implode(',',$f_ids).")";
$res = $con->query($qry) or die('error');

if($res->num_rows > 0){
	while($row = $res->fetch_assoc()){
$qry2 = "INSERT IGNORE INTO invites VALUES ($eid, ".$_SESSION['tc_user_id'].", ".$row['user_id'].")";
$res2 = $con->query($qry2) or die('Invitation Failed: '.$con->error);

}
	}
	
echo 'sent';
...
Рейтинг: 0 / 0
24.02.2017, 21:53
    #39410066
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreerвот на пример,Слово "например" пишется слитно. Не забываем про заглавную букву и про запятую.

toutcreerдвоих сразу не может и второго по отдельности тоже не записываетПочему?

И, да, в этом коде появился какие-то загадочные экземпляы классов в $con и в $res, о которых нам тут вообще ничего неизвестно.


toutcreerа можно переговорить по skype ?практичнее будет ...Не думаю.
...
Рейтинг: 0 / 0
25.02.2017, 00:18
    #39410097
toutcreer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
vkle,

авторНе думаю. это заметно

автор в этом коде появился автор экземпляы не забываем ПРО РУССКИЙ Язык ...

а вообще я не русский язык пришел изучать ... ну спасибо
...
Рейтинг: 0 / 0
25.02.2017, 00:41
    #39410099
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreerа вообще я не русский язык пришел изучать
Модератор:
Читаем правила форума:
Рекомендуется:
Использовать хотя бы основные правила русского языка при составлении сообщений.
...
Рейтинг: 0 / 0
25.02.2017, 01:02
    #39410103
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись в базу данных массива чекбоксов в цикле (PHP)
toutcreervkle,

авторНе думаю. это заметноУж извините, у меня, увы, есть занятия на выходной день. На форум уходит от 10 минут до получаса. Изредка - больше. Рассказывать про составление алгоритмов в скайпе - это явно перебор по времени. Индивидуальное обучение так же не входит в мои планы. Если хотите изучать предмет - начните с общих учебников по программированию. Если же Вам нужно лишь быстро получить готовый рабочий код - создайте топик в подфоруме "Работа" - наверняка, кто-то сделает желаемое за адекватное вознаграждение.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись в базу данных массива чекбоксов в цикле (PHP) / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]