powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Запись в базу данных массива чекбоксов в цикле (PHP)
21 сообщений из 21, страница 1 из 1
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39151726
alex_1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существует некоторая форма заказа, содержащая в себе массив доступных для выбора элементов меню (запрос 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
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39151825
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам нужно insert или update?
...
Рейтинг: 0 / 0
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39152004
alex_1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SharuPoNemnogu, insert нужен
...
Рейтинг: 0 / 0
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39152207
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Период между сообщениями больше года.
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39409414
toutcreer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
доброе времени суток ,

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

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


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

toutcreerпреобразовать массив в функциюТакое преобразование Вы сами придумали или прочитали в каком то учебнике?
...
Рейтинг: 0 / 0
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39409450
toutcreer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39409451
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как-то так, если правильно понимаю задачу.

Код: 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
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39409453
toutcreer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

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

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

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

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

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

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

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

Код: 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
Запись в базу данных массива чекбоксов в цикле (PHP)
    #39410066
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
toutcreerвот на пример,Слово "например" пишется слитно. Не забываем про заглавную букву и про запятую.

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

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


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

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

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

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

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


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