Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/32: Рейтинг темы: голосов - 32, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
1

Вывод из таблицы MySQL записей в виде html таблицы и дальнейшая их обработка

17.04.2015, 12:41. Показов 6702. Ответов 24
Метки нет (Все метки)

И снова здравствуйте! На этот раз я со сложным вопросом.
Мне нужно вывести определенные записи из таблицы MySQL и собрать их в таблицу html с дальнейшей обработкой.
Начну по порядку. По поводу вывода данных в таблицу нашел вот это: Вывести из таблицы MySQL все записи в виде html таблицы, не зная имена и колличество столбцов
Взял оттуда предложенный код, подогнал под себя и получил вот это:
PHP
1
$MySQLRecordSet = mysql_query("SELECT id, wm_date, wm_currency, wm_trade, wm_sum, tg_sum, status, wm_note FROM trades WHERE user_wmid = 300584632018 ORDER BY id DESC LIMIT 1000");
Результат: http://oc.zone-d.org/1.php
Все супер! Работает. Только никакого юзабилити. Нужно условные значения из базы расшифровать для пользователя.
id - (понятно, что автоинкремент) порядковый номер обращения пользователя нужно вписать как "'0000'.$id"
wm_date - дата заявки, выводим как есть, т.е. не будем заморачиваться на переворот из 2015-04-16 в 16.04.2015 или даже 16 апреля 2015, оставим пока как есть, хрен с ним. Главное работает.
wm_currency - это валюта, при значении "1" в таблицу нужно вписать WMZ, при значении "0" - WMK
wm_trade - значение "1" - покупка, знчение "0" - продажа
wm_sum - Сумма выводим без модерации
tg_sum - тоже сумма и тоже без модерации
Теперь самое сложное.
status - статус заявки. ипринимает значения 0,1,2,3,4. Значение "0" ставится автоматом при подаче заявки, значения 1 и 2 устанавливает пользователь в этой таблице. Т.е. выстроилась таблица, пользователь выбрал нужную ему строку (в теории самую верхнюю, а на практике... сами знаете) и предполагаю, сто полем <select> выбирает или подтверждение - значение "1" или отказ - значение "2". Следом меняет значение
wm_note - Примечание к заявке. Текстовое поле ограниченной длины и нажимает "СОХРАНИТЬ".
Тут возникает еще вопрос, это должна быть одна кнопка сохранить на всю таблицу, т.е. пользователь меняет значения на нескольких строках и оптом все сохраняет или же на каждой строке есть кнопка Сохранить и перезаписать указанные значения в базе.

Есть еще фишка для усложнения )))
Если поле status имеет значения 0-1-2, то вывод поля <select> с возможностью перезаписи значения, а если 3 или 4, что означает ответ админа, что заявка принята или обработана, то выводить просто текстом статус заявки. Например просто текст: ОБРАБОТАНО и заявка хранится в истории.

Перечитал свою задачу, самому страшно... Кто чем поможет, кто подсказку на верное направление даст?
Думаю, что надо поэтапно браться за работу. Сперва wm_currency и wm_trade выводить в пользовательском режиме и т.д.

Добавлено через 6 часов 3 минуты
Загрузил, да? 33 просмотра - ни одного ответа. Ну хоть вопросы наводящие задавайте, я хоть пойму куда мне думать. Может быть.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2015, 12:41
Ответы с готовыми решениями:

Вывести из таблицы MySQL все записи в виде html таблицы, не зная имена и колличество столбцов
Всем привет. Подскажите как вывести из таблицы MySQL все записи в виде html таблицы не зная имена...

Массив записей. Вывод в виде таблицы
Сформировать массив записей с указанными полями и вывести его на экран в виде таблицы....

Вывод записей из бд в консоль в виде таблицы
Вывожу все записи из таблицы как написано тут в п.2.3. Подскажите, как сделать, чтобы выводилось в...

Вывод в виде таблицы html
Добрый день, подскажите пожалуйста, как сделать что бы выводилось в виде таблицы, нужно что бы...

24
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
17.04.2015, 13:11 2
Цитата Сообщение от denikos Посмотреть сообщение
wm_currency - это валюта, при значении "1" в таблицу нужно вписать WMZ, при значении "0" - WMK
Что сложного?
PHP
1
<?=$wm_currency ? 'WMZ' : 'WMK'?>
Цитата Сообщение от denikos Посмотреть сообщение
wm_trade - значение "1" - покупка, знчение "0" - продажа
PHP
1
<?=$wm_trade ? 'покупка' : 'продажа'?>
Цитата Сообщение от denikos Посмотреть сообщение
Тут возникает еще вопрос, это должна быть одна кнопка сохранить на всю таблицу, т.е. пользователь меняет значения на нескольких строках и оптом все сохраняет или же на каждой строке есть кнопка Сохранить и перезаписать указанные значения в базе.
Это как Вам больше нравится.
Цитата Сообщение от denikos Посмотреть сообщение
Если поле status имеет значения 0-1-2, то вывод поля <select> с возможностью перезаписи значения, а если 3 или 4, что означает ответ админа, что заявка принята или обработана, то выводить просто текстом статус заявки. Например просто текст: ОБРАБОТАНО и заявка хранится в истории.
PHP/HTML
1
2
3
4
5
6
7
<?php if($status <= 2):?>
<select>
...
</select>
<?php else:?>
Заявка <?=$status==3 ? 'принята' : 'обработана'?>
<?php endif;?>
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
17.04.2015, 14:42  [ТС] 3
Ну мы же с вами уже знакомые! Я же рассказывал, что дальше if-else у меня ступор. Для меня вообще темный лес то, что я с другой темы форума взял. Не говоря уже о том как в вывод целой строки подставлять свои значения.
Буду разбираться, сейчас в голову вообще не лезет. Я пока внешним видом занимался CSS настраивал, чтобы табличка красиво смотрелась.
Буду еще писать сюда по ходу разбирательств. Не покидайте меня ))
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
17.04.2015, 15:40 4
Цитата Сообщение от denikos Посмотреть сообщение
Ну мы же с вами уже знакомые!
Да, действительно. А я смотрю - вроде логин знакомый . Просто многим отвечаю - всех не запоминаю...
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
19.04.2015, 12:07  [ТС] 5
Здравствуйте! Взялся решать эту задачу. Для начал выкинул ненужные мне заголовки и заменил на статику:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<tr>
 
        <td>Номер заявки</td>
        <td>Дата заявки</td>
        <td>Валюта WMZ/WMK</td>
        <td>Вид операции</td>
        <td>Сумма WebMoney</td>
        <td>Сумма тенге</td>
        <td>Статус заявки</td>
        <td>Номер квитанции</td>
        <td>Сохранить</td>
 
    </tr>
Вторым этапом стал разбирать как это выводится, слегка понял принцип работы
PHP
1
foreach($Result as $k => $val)
в примере http://php.net/manual/ru/contr... oreach.php работает как с $k, так и без нее.
Не понял зачем она мне. Не в этом суть.

Идем дальше. Решил внедрить совет Para bellum и сделал вот так:
HTML5
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
<tr>
<?
        foreach($Result as $k => $val)
        {
?>
            <td><? echo $val; ?>
            <?=$wm_currency ? 'WMZ' : 'WMK'?>
            <?=$wm_trade ? 'покупка' : 'продажа'?>
 
            <?php if($status <= 2):?>
            <select>
                <option value="0">Ожидает
                <option value="1">Оплачено
                <option value ="2">Отказ
            </select>
            <?php else:?>
            Заявка <?=$status==3 ? 'Принята' : 'Обработана'?>
            <?php endif;?></td>
            
            
<?                
        }
        
?>      <td>Сохранить</td>
        </tr>
Сохраняем, потираем руки.... О, ужас! )) Смотрите сами: http://oc.zone-d.org/2.php
Зато СОХРАНИТЬ на месте!

Немного думаем... О, я болван! Надо же так!:
HTML5
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
<tr>
<?
        foreach($Result as $k => $val)
        {
?>
            
            
            <td><? echo $val; ?></td>
            
            
<?                
        }
?>      
        <?=$wm_currency ? 'WMZ' : 'WMK'?>
            <?=$wm_trade ? 'покупка' : 'продажа'?>
 
            <?php if($status <= 2):?>
            <select>
                <option value="0">Ожидает
                <option value="1">Оплачено
                <option value ="2">Отказ
            </select>
            <?php else:?>
            Заявка <?=$status==3 ? 'Принята' : 'Обработана'?>
            <?php endif;?>
        <td>Сохранить</td>
        </tr>
Итог. О, ужас №2 http://oc.zone-d.org/4.php

Внимание, вопрос! Как мне поделить это дело? Чтобы только у определенных ячеек значения подставлялись по совету Para bellum
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
19.04.2015, 13:15 6
Откуда Вы берёте переменные $wm_currency, $wm_trade и $status? Значения должны быть разные для всех записей. А у Вас одна переменная для всех. Покажите, как Вы её устанавливаете.
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
19.04.2015, 13:25  [ТС] 7
Цитата Сообщение от Para bellum Посмотреть сообщение
Откуда Вы берёте переменные $wm_currency, $wm_trade и $status?
Беру тут
PHP
1
$MySQLRecordSet = mysql_query("SELECT id, wm_date, wm_currency, wm_trade, wm_sum, tg_sum, status, wm_note FROM trades WHERE user_wmid = 300584632018 ORDER BY id DESC LIMIT 1000")
;
А потом вот это:
PHP
1
2
3
4
5
6
7
    while($Result = mysql_fetch_assoc($MySQLRecordSet))
    {
?>
        <tr>
<?
        foreach($Result as $k => $val)
        {
Цитата Сообщение от Para bellum Посмотреть сообщение
Покажите, как Вы её устанавливаете.
Это не я ее устанавливаю. Это я пример готовый взял, применил и тему эту с этого примера и начал - самое первое сообщение.
А теперь пытаюсь Ваши советы внедрить.
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
19.04.2015, 13:40 8
Зачем foreach в цикле while? foreach в данном случае не нужен.
PHP/HTML
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
<table border="1">
    <tr>
 
        <td>Номер заявки</td>
        <td>Дата заявки</td>
        <td>Валюта WMZ/WMK</td>
        <td>Вид операции</td>
        <td>Сумма WebMoney</td>
        <td>Сумма тенге</td>
        <td>Статус заявки</td>
        <td>Номер квитанции</td>
        <td>Сохранить</td>
 
    </tr>
    <?php while($result = mysql_fetch_assoc($MySQLRecordSet)):?>
    <tr>
        <td><?=$result['id']?></td>
        <td><?=$result['wm_date']?></td>
        <td><?=$result['wm_currency'] ? 'WMZ' : 'WMK'?></td>
        <td><?=$result['wm_trade'] ? 'покупка' : 'продажа'?></td>
        <td><?=$result['wm_sum']?></td>
        <td><?=$result['tg_sum']?></td>
        <td>
            <?php if($result['status'] <= 2):?>
            <select>
                <option value="0">Ожидает
                <option value="1">Оплачено
                <option value ="2">Отказ
            </select>
            <?php else:?>
            Заявка <?=$result['status']==3 ? 'Принята' : 'Обработана'?>
            <?php endif;?>
        </td>
        <td><?=$result['wm_note']?></td>
        <td>Сохранить</td>
    </tr>
    <?php endwhile;?>
</table>
1
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
19.04.2015, 13:52  [ТС] 9
Цитата Сообщение от Para bellum Посмотреть сообщение
Зачем foreach в цикле while? foreach в данном случае не нужен.
Я не знаю, я просто отсюда содрал:
Цитата Сообщение от Sashka Посмотреть сообщение
Если я правильно понял, то вот:
$MySQLConnection = mysql_connect('127.0.0.1', 'root', '');
* * $MySQLSelectedDB = mysql_select_db('db', $MySQLConnection);
* * mysql_query('SET NAMES utf8');
$MySQLRecordSet = mysql_query('SELECT * FROM router');
* * while($Result = mysql_fetch_assoc($MySQLRecordSet))
* * {
* * * * foreach($Result as $k => $val)
* * * * {
* * * * * * echo $k . "[" . $val . "] = " . $val;
* * * * }
* * * * echo "<br>";
* * }
Добавлено через 16 минут
Вот точнее вариант...
Это из этой темы: Вывести из таблицы MySQL все записи в виде html таблицы, не зная имена и колличество столбцов

Para bellum, вы мой спаситель! Внедрил код таблицы, который вы мне готовым сделали, даже ничего не менял: http://oc.zone-d.org/5.php Благодарю Вас!!!
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
19.04.2015, 13:59 10
Цитата Сообщение от denikos Посмотреть сообщение
Внедрил код таблицы, который вы мне готовым сделали, даже ничего не менял: http://oc.zone-d.org/5.php Благодарю Вас!!!
Не за что. Рад был помочь.
1
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
19.04.2015, 14:30  [ТС] 11
Цитата Сообщение от Para bellum Посмотреть сообщение
Не за что. Рад был помочь.
Ответьте мне на вопрос. Почему вы это делаете? Почему отвечаете на вопросы таких как я? Лично я на форум только когда у меня вопросы есть.
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
19.04.2015, 14:39 12
Цитата Сообщение от denikos Посмотреть сообщение
Почему вы это делаете? Почему отвечаете на вопросы таких как я?
Слышал в каком-то фильме такой диалог:
- Получается что, я зря всё это делал?
- Почему зря? За плюсики.

На самом деле сам не знаю. Иногда из интереса отвечаешь, иногда от скуки. Но наверное нравится "Спасибки" получать.
А вообще форум помогает (помогал) обучению. Например, отвечая на чью-то тему, можно и для себя интересное открытие сделать.
1
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
19.04.2015, 14:48  [ТС] 13
Цитата Сообщение от Para bellum Посмотреть сообщение
Но наверное нравится "Спасибки" получать.
Ой, точно! Забыл совсем наставить вам их. Сейчас исправлюсь.
Цитата Сообщение от Para bellum Посмотреть сообщение
Например, отвечая на чью-то тему, можно и для себя интересное открытие сделать.
У одного человека, у одного из моих учителей по жизни(мы их называем по разному обычно, сенсей, куратор, тренер, учитель - люди,которых мы уважаем и прислушиваемся), есть любимый анекдот:
Профессор объясняет лекцию студентам и задает вопрос:
- Поняли?
- Не поняли, - отвечают студенты.
Профессор еще раз по-другому объясняет.
- Поняли?
- Нет, не поняли.
В третий раз лекция.
- Поняли?
- Не поняли!
Профессор: - Ну вы даете, я уже понял, а вы не поняли!
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
19.04.2015, 15:03 14
Цитата Сообщение от denikos Посмотреть сообщение
анекдот

Ну вот и я так (по крайней мере раньше), как в этом анекдоте.
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
20.04.2015, 13:30  [ТС] 15
Вы делаете благое дело.
Я еще вернусь сюда, наверное. А может быть и сам уже с этой задачей справлюсь.
Буду новые темы с новыми вопросами создавать. Мне теперь нужно сделать, чтобы сохранялись новые значения у колонок <td>Статус заявки</td> и <td>Номер квитанции</td>, а потом Админку писать.

Работа идет. И все на так сложно, как мне представлялось ))
Тем более с такой помощью! Еще раз благодарю!

Добавлено через 22 часа 12 минут
Все здравствуйте!
Para bellum, вопрос скорее к вам, т.к. вы ы курсе моего кодинга уже )) Но может кто из ребят подсказать сможет.

Конструкцию в таблице оформил вот так:
HTML5
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
<tr>
    <form method="post">
        <td>000<?=$result['id']?></td>
        <td width="200px"><?=$result['wm_date']?></td>
        <td><?=$result['wm_currency'] ? 'WMZ' : 'WMK'?></td>
        <td><?=$result['wm_trade'] ? 'покупка' : 'продажа'?></td>
        <td><?=$result['wm_sum']?></td>
        <td><?=$result['tg_sum']?></td>
        <td>
            <?php if($result['status'] == 0):?>
            <select name="status_select">
                <option value="0">Ожидает
                <option value="2">Оплачено
                <option value ="1">Отказываюсь
            </select>
            <?php else:?>
            <?=$result['status']==1 ? "<p style='color:red;'>Мой отказ</p>" : ""?>
            <?=$result['status']==2 ? "<p style='color:green;'>Оплачено</p>" : ""?>
            <?=$result['status']==3 ? "<p style='color:#FF9933;'>Принято</p>" : ""?>
            <?=$result['status']==4 ? "<p style='color:green;'>Обработано</p>" : "" ?>
            <?=$result['status']==5 ? "<p style='color:red;'>Отменено</p>" : "" ?>
            <?php endif;?>
        </td>
        <td width="200px">
            <? if (!$result['wm_note']) { ?>
            <input name="user_note" type="text" value="" placeholder="№ квитанции об оплате">
        <? } else {
        echo $result['wm_note'];
        } ?>
        
        </td>
        <td>
            <?php if($result['status'] == 0):?>
                <button name="submit" type="submit"><img src="/images/user_save.png" alt="Сохранить" style="vertical-align: middle" width="22" height="22"></button>
            <?php else:?>
                <img src="/images/user_nosave.png" alt="Сохранить" style="vertical-align: middle" width="22" height="22">
            <?php endif;?>
        </td>
    </form>
    </tr>
Обработчик формы выглядит так:
PHP
1
2
3
4
5
6
7
8
9
if(isset($_POST['submit']))
{
    
    $status_select = $_POST['status_select'];
    
    if(!$_POST['user_note'])
    {
            $user_note = "номер не указан";
    } else  $user_note = $_POST['user_note'];
Потом создаю запрос в базу:
PHP
1
$statusSQL = "UPDATE trades SET status = '$status_select', wm_note = '$user_note' WHERE id = '$result['id']'";
И тут возникает у меня затык. Строчка вызвала ошибку, я даже не отображал ее сразу понял.
$result['id'] у меня для каждой строки разные значения выдают, как мне его выдрать для определенной строки, которую я обрабатываю формой?
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
20.04.2015, 13:52 16
А откуда Вы этот $result['id'] берёте? А, понял. Вы код вывода связываете с кодом обновления? Неправильно.
Добавьте в форму скрытое поле с именем "id". Потом принимайте так в коде обновления:
PHP
1
$id = (int) $_POST['id'];
А обновляйте так:
PHP
1
$statusSQL = "UPDATE trades SET status = '$status_select', wm_note = '$user_note' WHERE id = '$id'";
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
20.04.2015, 14:45  [ТС] 17
Я не совсем понял как это сделать
Цитата Сообщение от Para bellum Посмотреть сообщение
Добавьте в форму скрытое поле с именем "id".
, сделал вот так:
HTML5
1
2
<td>000<?=$result['id']?>
<?$trade_id=$result['id']?></td>
потом вот так:
PHP
1
2
$statusSQL = "UPDATE trades SET status = '$status_select', wm_note = '$user_note' WHERE id = '$trade_id'";
echo $statusSQL;
В результате имею:
SQL
1
UPDATE trades SET STATUS = '2', wm_note = '565566' WHERE id = '1'
id равен 1, а правильно - 9. И так у любой строки id принимает значение 1.
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
20.04.2015, 14:50 18
Цитата Сообщение от denikos Посмотреть сообщение
сделал вот так:
Это что такое? Я же скрытое поле, сказал:
PHP/HTML
1
<input type="hidden" name="id" value="<?=$result['id']?>"/>
Обработчик такой:
PHP
1
2
3
4
5
6
7
8
9
10
if(isset($_POST['submit']))
{
    
    $status_select = $_POST['status_select'];
    $id = (int) $_POST['id'];
    
    if(!$_POST['user_note'])
    {
            $user_note = "номер не указан";
    } else  $user_note = $_POST['user_note'];
0
1 / 1 / 1
Регистрация: 26.03.2015
Сообщений: 46
20.04.2015, 15:04  [ТС] 19
Вот так делаю
HTML5
1
<td>000<?$trade_id=$result['id']; echo $trade_id;   ?></td>
в ячейке получаю правильное число, ниже в коде РНР оно становится единицей

Добавлено через 9 минут
УРРРА!!! До меня дошел смысл ваших слов!
HTML5
1
2
<td><?$trade_id=$result['id']; echo '000'.$trade_id; ?>
<input type="hidden" name="trade_id" value="<? echo $trade_id; ?>"></td>
Все получилось!
0
Эксперт PHP
5172 / 3809 / 1334
Регистрация: 06.01.2011
Сообщений: 10,574
20.04.2015, 15:06 20
Цитата Сообщение от denikos Посмотреть сообщение
До меня дошел смысл ваших слов!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2015, 15:06

Вывод данных из MySQL в виде таблицы
Вобщем нужно вывести на экран данные из таблицы MySQL в виде html- таблички. что-то описанные...

Как вывести данные в html страницу в виде таблицы из mysql. php
Вот так могу &lt;?php require 'scripts/connect.php'; $sql_select = &quot;SELECT * FROM pers&quot;; $result...

Вывод HTML разметки из таблицы mysql
Такая проблема, при выводе статьи из бд на экран выводятся все HTML теги. (Например: из бд вывожу...

Вывод записей первой таблицы, которых нет во второй (таблицы отличаются набором столбцов и строк)
Есть таблица Недвижимость (код недвижимости, город, адрес, кол-во комнат, площадь) и есть таблица...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru