Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2015, 11:26   #1
Владимир417
 
Регистрация: 01.06.2010
Сообщений: 4
По умолчанию Обработка формы выбора и вставка данных в БД

Добрый день.
Друзья, помогите с решением задачи.
Мне нужно сделать что-то вроде табеля.
Как я хочу сделать - картинка во вложении,
Руководитель на этой форме выбирает тип работы (выходной/рабочий/больничный и пр.) и нажимает сохранить => происходит вставка данных в БД для каждого сотрудника на дату.
Кол-во сотрудников не статично, может меняться, поэтому они и выводятся в цикле, вместе с ними и список выбора.
У меня получилось отправить ПОСТом данные, в имени инпута - id сотрудника.
А в форече у меня получается определить из ПОСТа массив ключ=>значение.

insert - Сохранить
314 - 10.83
354 - 10.83
421 - 10.83
486 - 10.83
516 - 10.83
457 - 10.83
387 - 10.83
358 - 10.83
353 - 10.83
386 - 10.83
571 - 10.83
463 - 10.83
424 - 10.83
298 - 10.83
481 - 10.83
441 - 10.83
view - article
option - com_content

Insert, view, option = мне не нужны.

В БД мне нужно записать дату - берется из переменной $date, смену - $group_id, id сотрудника - из формы нужно взять и тип работы - тоже из формы.

Мне предлагали для каждого сотрудника свой инпут делать, но это статично получится..


PHP код:
<?php
require_once "Script/form.html";
//Список сотрудников

//Получаем id пользователся из сессии Joomla
$user JFactory::getUser();
$u $user->id;
//echo $u;

try{
//Подключаемся к БД
$dbh = new PDO('mysql:host=localhost;dbname=uvpz; charset=utf8''root'''/*, array(PDO::ATTR_PERSISTENT => true)*/);

//Выбираем сотрудников смены
$sql "SELECT uvpz.y9hmp_users.name as Name, uvpz.y9hmp_users.id AS user_id FROM uvpz.y9hmp_users
LEFT JOIN uvpz.y9hmp_user_usergroup_map ON uvpz.y9hmp_users.id = uvpz.y9hmp_user_usergroup_map.user_id
LEFT JOIN uvpz.y9hmp_usergroups ON uvpz.y9hmp_user_usergroup_map.group_id = uvpz.y9hmp_usergroups.id
Where uvpz.y9hmp_usergroups.ns_id = '
$u'
ORDER BY uvpz.y9hmp_users.name ASC"
;

$stmt $dbh->query($sql);
$stmt2 $dbh->query("SELECT uvpz.tabel_title.name as Name FROM uvpz.tabel_title;");

$stmt3 $dbh->query("SELECT uvpz.y9hmp_usergroups.id as ID FROM uvpz.y9hmp_usergroups Where uvpz.y9hmp_usergroups.ns_id = '$u'");

$stmt4 $dbh->query($sql);

$date date("Y-m-d");

// Получаем id группы
$row3 $stmt3->fetch(PDO::FETCH_ASSOC);
$group_id $row3['ID'];

//id всех сотрудников группы
while($row4 $stmt4->fetch(PDO::FETCH_ASSOC)){
$id[] = $row4['user_id'];}
//echo "count: ".count($id);
//echo $id[0];


echo "<table style ='width: 400px' align='left'>";
echo 
"<tr><td>";
echo 
"Сегодня:   ".$date;
echo 
"</td>";
echo 
"<td>";

echo 
"<form action='' method='POST'>";
echo 
"<input type='submit' name='insert' value='Сохранить'>";

echo 
"</td>";
echo 
"</tr>";

//присваиваем типы работ переменной
while ($row2 $stmt2->fetch(PDO::FETCH_ASSOC)){
$Name[] = $row2['Name'];// типы работ (выходной, рабочий и пр.)
};
//выводим список группы + форма типа работы

while($row $stmt->fetch(PDO::FETCH_ASSOC)) {

echo 
"<tr><td>".$row['Name']."</td>";

echo 
"<td>";
//форма выбора типа работы

echo "<select class='input' type=text name=".$row['user_id']." value=".$row['user_id'].">"

for (
$i 0$i <= 13$i++) 
{  
  echo 
"<option value=".$Name["$i"].">".$Name["$i"]."</option>"
}; 

echo 
"</select>"

}
echo 
"</form>";

echo 
"</td>";
echo 
"</tr>";
echo 
"</table>";


//INSERT INTO `tabel`(`id`, `date`, `group_id`, `user_id`, `work_type`) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])

//$stmt2 = $dbh->prepare("UPDATE `y9hmp_user_usergroup_map` SET `group_id`='$id_sm' where `user_id`='$oper'");
//$stmt2->execute();
//if (isset($_GET['user_id'])) $r = $_GET['user_id']; else $r = '546';
//for($h=0; $h<=)


//$r2 = $_GET[314];
//echo var_dump($r);


foreach($_POST as $key=>$value) {
echo 
$k[] = $key." - ";
echo 
$v[] = $value."</br>";
};


}
catch(
PDOException $e){
echo 
'Error : '.$e->getMessage();
exit();
};
?>
Изображения
Тип файла: jpg 99999999999999999999.jpg (27.8 Кб, 126 просмотров)
Владимир417 вне форума Ответить с цитированием
Старый 29.04.2015, 12:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Э-э-э... А в чем проблема то? Чет не пойму...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2015, 13:52   #3
Владимир417
 
Регистрация: 01.06.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Э-э-э... А в чем проблема то? Чет не пойму...
не знаю как технически это сделать...
пытаюсь сравнить массивы $id и $k, но что-то не получается
PHP код:
foreach($_POST as $key=>$value) {
$k[] = $key." - ";
$v[] = $value."</br>";
};

for (
$i 0$i <= count($k); $i++) 
{
if (
in_array("$k[$i]"$id)) {
    echo 
"Нашел:"."</br>";
    
//echo "INSERT INTO `tabel`(`date`, `group_id`, `user_id`, `work_type`) VALUES ($date,$group_id,$id[$i],$v[$i])"."</br>";
    
};
    }; 
т.е. типа если id сотрудника из $id есть в $k, то делаем Insert для этого id, тем самым из POSTa берем только id сотрудников, а Insert, view, option - не берем, как я додумался...

Последний раз редактировалось Владимир417; 29.04.2015 в 14:01.
Владимир417 вне форума Ответить с цитированием
Старый 29.04.2015, 14:21   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Ну дак с чем конкретно проблема, не получается сравнить ?
uberchel вне форума Ответить с цитированием
Старый 29.04.2015, 14:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Теперь я еще больше запутался...
Я правильно понимаю - ты хочешь изменить в записи в БД некое значение, если такая запись существует, и если не существует - вставить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2015, 14:54   #6
Владимир417
 
Регистрация: 01.06.2010
Сообщений: 4
По умолчанию

Вот, вроде получилось.
PHP код:
<?php
require_once "Script/form.html";
//Список сотрудников

//Получаем id пользователся из сессии Joomla
$user JFactory::getUser();
$u $user->id;
//echo $u;

try{
//Подключаемся к БД
$dbh = new PDO('mysql:host=localhost;dbname=uvpz; charset=utf8''root'''/*, array(PDO::ATTR_PERSISTENT => true)*/);

//Выбираем сотрудников смены
$sql "SELECT uvpz.y9hmp_users.name as Name, uvpz.y9hmp_users.id AS user_id FROM uvpz.y9hmp_users
LEFT JOIN uvpz.y9hmp_user_usergroup_map ON uvpz.y9hmp_users.id = uvpz.y9hmp_user_usergroup_map.user_id
LEFT JOIN uvpz.y9hmp_usergroups ON uvpz.y9hmp_user_usergroup_map.group_id = uvpz.y9hmp_usergroups.id
Where uvpz.y9hmp_usergroups.ns_id = '
$u'
ORDER BY uvpz.y9hmp_users.name ASC"
;

$stmt $dbh->query($sql);
$stmt2 $dbh->query("SELECT uvpz.tabel_title.name as Name,uvpz.tabel_title.id as Id FROM uvpz.tabel_title;");

$stmt3 $dbh->query("SELECT uvpz.y9hmp_usergroups.id as ID FROM uvpz.y9hmp_usergroups Where uvpz.y9hmp_usergroups.ns_id = '$u'");

$stmt4 $dbh->query($sql);

$date date("Y-m-d");

// Получаем id группы
$row3 $stmt3->fetch(PDO::FETCH_ASSOC);
$group_id $row3['ID'];

//id всех сотрудников группы
while($row4 $stmt4->fetch(PDO::FETCH_ASSOC)){
$id[] = $row4['user_id'];}
//echo "count: ".count($id)."</br>";
//echo $id[0]."</br>";


echo "<table style ='width: 400px' align='left'>";
echo 
"<tr><td>";
echo 
"Сегодня:   ".$date;
echo 
"</td>";
echo 
"<td>";

echo 
"<form action='' method='POST'>";
echo 
"<input type='submit' name='insert' value='Сохранить'>";

echo 
"</td>";
echo 
"</tr>";

//присваиваем типы работ переменной
while ($row2 $stmt2->fetch(PDO::FETCH_ASSOC)){
$Name[] = $row2['Name'];
$W_id[] = $row2['Id'];// типы работ (выходной, рабочий и пр.)
};
//выводим список группы + форма типа работы

while($row $stmt->fetch(PDO::FETCH_ASSOC)) {

echo 
"<tr><td>".$row['Name']."</td>";

echo 
"<td>";
//форма выбора типа работы

echo "<select class='input' type=text name=".$row['user_id']." value=".$row['user_id'].">"

for (
$i 0$i <= 13$i++) 
{  
  echo 
"<option value=".$W_id["$i"].">".$Name["$i"]."</option>"
}; 

echo 
"</select>"

}
echo 
"</form>";

echo 
"</td>";
echo 
"</tr>";
echo 
"</table>";

foreach(
$_POST as $key=>$value) {
$k[] = $key;
$v[] = $value;
};

for (
$i 0$i count($k); $i++) 
{
if (
in_array("$k[$i]"$id)) {
      
$stmt5 $dbh->prepare("INSERT INTO uvpz.tabel(uvpz.tabel.date, uvpz.tabel.group_id, uvpz.tabel.user_id, uvpz.tabel.work_type)
 VALUES ('
$date',$group_id,$k[$i],$v[$i])");
    
$stmt5->execute();
    };
    };

}
catch(
PDOException $e){
echo 
'Error : '.$e->getMessage();
exit();
};
?>
только ошибку выдает, хотя она чуть выше определяется в форече. Undefined variable: k in C:\xampp\php\pear\Script\tabel.php on line 88
но данные вставляются, подскажите с чем все же ошибка связана?
Владимир417 вне форума Ответить с цитированием
Старый 30.04.2015, 10:27   #7
xen
Пользователь
 
Регистрация: 13.03.2007
Сообщений: 45
По умолчанию

Ошибка возникает из-за того что не объявлена переменная $k вот тут
PHP код:
foreach($_POST as $key=>$value) { 
$k[] = $key
$v[] = $value
}; 
Надо перед циклом объявить $k: $k = array(); или настроить выводи ошибок (очень не рекомендую это делать).
А вообще код ужасен.
- Если используется joomla - то почему бы не оформить все в виде компонента системы.
- Почему бы не использовать класс для работы с БД этой cms
- Зачем данные из POST записывать в массивы $k и $v. Есть стандартные функции php: array_keys, array_values
- т.п.
xen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка исключения ввода данных с формы в visual c++ василий- Visual C++ 0 24.09.2012 12:35
[PHP]обработка выбора dma PHP 4 28.11.2010 23:26
кнопка выбора записи из ленточной формы StrelokCU Microsoft Office Access 6 22.08.2010 21:15
Обработка данных полученных из формы Linel PHP 4 23.04.2009 14:38
Обработка данных из формы Damhurz PHP 5 14.04.2009 15:39