Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
1

Узнать id

23.10.2014, 13:19. Показов 2093. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Делаю что- то вроде тикет системы (на одной странице много бланков заявок). В правом вверхнем углу этого тикета у меня есть кнопка закрыть заявку( реализованно иконкой) при нажатии на которую открываеться модальное окно и необходимо выбрать параметры для закрытия. Проблема в том что я не могу сообразить как определить ID тикета. Пробывал делать выборку из бд, но тогда определяеться либо первый ид либо последний, а надо текущий тикет которого надо закрыть. Подскажите пожалуйста как реализовать(в приоритете без js).

Собственно создание тикета :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
include 'mysql.php';
$count = mysql_query("SELECT system,sensor,detected,DATE_FORMAT(data_detected,'%d.%m.%Y %H:%i:%s') AS data_detected,transferred,corrected,DATE_FORMAT(data_corrected,'%d.%m.%Y %H:%i:%s') AS data_corrected,id,area,description,Image,status FROM blanks WHERE status='Открыта'") or die(mysql_error());
while ($row_blank=mysql_fetch_array($count))
{
echo '<div class="blank"> 
<table width="100%" border="1" cellspacing="5">
        <td>
        <table class="table1" width="450"  border="2" cellpadding="5">
        <tr>
        <td>№ Заявки: '.$row_blank['id'].'</td> 
        <td>Статус: '.$row_blank['status'].'</td></tr>
        <tr>
        <td colspan="2">Система: '.$row_blank['system'].'</td>
        </tr>
        <tr>
        <td colspan="2">Обнаружил: '.$row_blank['detected'].'</td>
        </tr>
        <tr>
        <td colspan="2">Дата обнаружения: '.$row_blank['data_detected'].'</td>
        </tr>
        <tr>
        <td colspan="2">Передано: '.$row_blank['transferred'].'</td>
        </tr>
        <tr>
        <td colspan="2">Устранил: '.$row_blank['corrected'].'</td>
        </tr>
        <tr>
        <td colspan="2">Дата устранения: '.$row_blank['data_corrected'].'</td>
        </tr>
        </table>
        </td>
        <td width="100%">
        <table  class="table2" width="100%" border="2" cellpadding="5">
        <tr>
    <td>Участок: '.$row_blank['area'].'<a href="#Close_blank"><img src="Images/Icons/Close.png" align="right"></a><a href="#Edit" align="right"><img src="Images/Icons/Edit.png" align="right"></a> <hr> Устройство\Датчик: '.$row_blank['sensor'].'</td></tr>
    <tr>
    <td height="145">'.$row_blank['description'].'</td></tr></td></table>
</table></div>';
 
echo '<div id="comments_form">
        <form name="comments" action="comments.php" method="post">';
            //вывод комментариев
            $blank_id =$row_blank['id'];// Уникальный идентификатор заявки
            $result_set = mysql_query("SELECT id,blank_id,com,user,DATE_FORMAT(data,'%d.%m.%Y %H:%i:%s') AS data FROM comments WHERE blank_id='$blank_id'"); //Вытаскиваем все комментарии для данной заявки
            while ($row_comments = mysql_fetch_assoc($result_set)) 
            {
            echo '<h3>Прокомментировал: '.$row_comments['user'].'</br>
            Дата: '.$row_comments['data'].'</br></h3>
            '.$row_comments['com'].'</br><hr>';//Вывод комментариев
            } 
echo    '</br><label>Добавить комментарий:</label>
        <br/>
        <textarea name="text_comment"></textarea>
        </p>
        <p>
        <input type="hidden" name="blank_id" value="'.$row_blank['id'].'" />
        <input type="submit" value="Отправить" class="submit"/>
        </p></form></div>'; }               
?>
Обработчик закрытия тикета
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php 
header('Content-Type: text/html; charset=utf8');
if (isset($_POST['FIO']))
{
$fio = $_POST['FIO'];
$date = date('Y-m-d, H:i:s');
    include "mysql.php";
    $close_result = mysql_query("UPDATE blanks SET corrected='$fio',data_corrected='$date',status='Закрыта' WHERE id=$blank_id") or die(mysql_error());
    if ($close_result=='true')
{header("Location:index.php");
mysql_close;}
else {echo "Произошла ошибка, пожалуйста повторите попытку";}}
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2014, 13:19
Ответы с готовыми решениями:

Как узнать, что картинка полностью загружена, чтобы узнать её размеры
Здраствуйте ! Делаю галерею. Мне нужно узнать когда картинка загрузица полносттю, чтобы узнать её...

Даны 3 стороны треугольника, узнать существует ли он, если да, то узнать какой он
Помогите бо сегодня вообще не хачу думать! Даны 3 стороны треугольника, узнать существует ли...

Узнать запущено ли уже приложение, если да то узнать его handle
Если приложение уже запущено нужно поучить его handle и передать в него данные Вопрос. С...

Узнать как у меня дела с железом, узнать какое плохое
Здравствуйте! Помогите мне пожалуйста со следующим вопросом, что мне бы поменять в первую очередь?...

15
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
23.10.2014, 13:31 2
Как модальное окно создаете?
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
23.10.2014, 13:53  [ТС] 3
PHP/HTML
1
2
3
4
5
6
7
8
9
10
<a href="#" class="overlay" id="Close_blank"></a>
<div class="close_blank_popup">
<?php require'close_blank.php'; ?>
<a class="close" title="Закрыть" href="#close"></a>
</div>
<a href="#" class="overlay" id="Edit"></a>
<div class="popup">
<?php require'edit_blank.php'; ?>
<a class="close" title="Закрыть" href="#close"></a>
</div>
В коде выше написанно обращение к нему
0
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
23.10.2014, 14:04 4
Получается, что у вас одно модальное окно закрытия на все тикеты? Тогда без JS не обойтись. Вам надо будет передать id тикета в поле формы в модальном окне, чтобы этот id передался на сервер.

PHP
1
<a href="#Close_blank" data-id="<?=$row_blank['id']?>">
При нажатии на ссылку открытия модального окна, вам нужно взять значение атрибута data-id и передать его в скрытое поле в форме закрытия тикета. Тогда после отправки формы этот id будет передан в скрипт закрытия тикета, и вы сможете использовать его в запросе.
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
23.10.2014, 14:21  [ТС] 5
Да одно модальное на все тикеты. Делал, передавал в hidden и не чего не вышло. Не подскажите тогда как это в js сделать?
0
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
23.10.2014, 15:54 6
С помощью JQuery как-то так:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<a href="#" data-id="5" class="close-button">Элемент №5</a><br>
<a href="#" data-id="7" class="close-button">Элемент №7</a><br>
 
<form>
    <input type="text" name="id" id="field_id">
    <input type="submit" name="submit-button">
</form>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
$(function(){
    $('.close-button').click(function() {
        var id = $(this).attr('data-id');
        $('#field_id').val(id);
    });
});
</script>
1
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
23.10.2014, 16:31  [ТС] 7
Для jQuery нужен интернет. А там где использовать прогу инета нет и не будет. Вот поэтому эт не вариант. Без js вообще не реализовать?
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
23.10.2014, 17:50 8
для jQuery интернет не нужен, нужен лишь скрипт подгруженный
0
8 / 8 / 4
Регистрация: 12.05.2014
Сообщений: 233
23.10.2014, 18:13 9
Заливай скрипт в созданную папку( можно назвать js), кидаешь туда код и затем указываешь путь к папке. Готово.
Скачать скрипт можешь, перейдя по ссылке скрипта, например, https://code.jquery.com/jquery-2.1.1.min.js
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
23.10.2014, 22:30  [ТС] 10
Reposlav в примере который вы написали необходимо будет прописывать каждый элемент. А заявок может быть тысячи... не могу сообразить...

Добавлено через 1 час 32 минуты
Сделал так:
При нажатии на кнопку считываем значение текущеее и помещаем
PHP
1
<a href="#Close_blank" close_id="'.$row_blank['id'].'" class="Close_blank" onclick="search_id();">
Далее скрипт пытался написать. но не могу понять как пеоедать значение это переменной и дальше с ним работать
Javascript
1
2
3
4
5
function search_id(){
    $('.Close_blank').click(function search_id() {
        var id = $(this).attr('close_id');
    });
};
0
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
23.10.2014, 23:10 11
Руфус, вряд ли вы все тысячи тикетов будете помещать на одну страницу, скорее всего у вас будет пагинация. И нужно будет прописать только для тех элементов, что выводятся на странице. И это нормально.

Вы все правильно делаете. Далее в скрипте нужно передать этот id в вашу форму закрытия тикета, как я писал выше:
Javascript
1
$('#field_id').val(id);
#field_id - это ваше поле типа hidden.
У вас ведь должна быть форма закрытия тикета, в которой есть поля отвечающие за параметры закрытия тикета. Вот просто добавится еще одно поле, отличие которого будет в том, что его значение будет меняться в зависимости от того, для какого поля открывается модальное окно. А дальше, при сабмите формы, в php-скрипт придут параметры закрытия тикета и id тикета, который вы сможете вставить в запрос.
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
24.10.2014, 01:58  [ТС] 12
Пагинации не будет. Ладно поколдую. Отпишусь о результатах
0
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
24.10.2014, 11:58 13
Цитата Сообщение от Руфус Посмотреть сообщение
Пагинации не будет
ага-ага мы все так когда-то думали
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
25.10.2014, 11:29  [ТС] 14
Вообщем поковырялся, ID не передается(((
Расспишу подробнее что я сделал.

Кнопка на бланке.
PHP
1
<a href="#Close_blank" close_id="'.$row_blank['id'].'" class="Close_blank" onclick="search_id();"><imgsrc="Images/Icons/Close.png" align="right"></a>
При нажатии срабатывает скрипт
Javascript
1
2
3
4
5
6
function search_id(){
    $('.Close_blank').click(function search_id() {
        var id = $(this).attr('close_id');
        $('#close_blank_id').val(id);
    });
};
Открывается модальное окно в котором есть скрытое поле
PHP
1
2
<input type="hidden" name="close_blank_id" id="close_blank_id"/>
    <input type="submit" value="Закрыть" class="submit">
Далее обработчик апдейтит запись присваивая значения полученное из формы
PHP
1
$close_id = $_POST['close_blank_id'];
Думаю проблема в js. Повторюсь бланков много и пагинации не предусмотренно. Подскажите где косяк(
0
48 / 48 / 26
Регистрация: 31.05.2011
Сообщений: 139
25.10.2014, 14:17 15
Руфус, подозреваю, что у вас обработчик клика не срабатывает. У вас вообще какая-то странная вот эта конструкция:

Javascript
1
2
3
4
5
6
function search_id(){
    $('.Close_blank').click(function search_id() {
        var id = $(this).attr('close_id');
        $('#close_blank_id').val(id);
    });
};
Должно быть вот так:
Javascript
1
2
3
4
5
6
$(function(){
    $('.Close_blank').click(function() {
        var id = $(this).attr('close_id');
        $('#close_blank_id').val(id);
    });
});
Почитайте про анонимные функции и замыкания в JS, и про обработчики событий в jQuery.
0
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 44
25.10.2014, 16:12  [ТС] 16
Репослав огромное вам человеческое спасибо. как вы написали все заработало. надо было знак доллара перед функцией добавить было. хотя странно другие функции у меня и без доллара в начале пашут. Тему можно закрывать. Еще раз благадарю всех!
0
25.10.2014, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2014, 16:12
Помогаю со студенческими работами здесь

Как узнать раскладку клавиатуры? Как её изменить? Как узнать, на каком языке текст в файле?
сабж

ListBox узнать текст зная индекс элемента и узнать индекс зная текст элемента
Мне нужно что-то в этом роде for(int b ; b &lt; listBox1.Items.Count ; b++) { string name = Узнаем...

Узнать PR
Посоветуйте какую-нибудь надёжную &quot;шляпу&quot; для точного расщёта PR

Узнать id
Послу операции занесения в БД новой информации:mysql_query(&quot;INSERT INTO infa (login,pass)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru