Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429

Передача результатов запроса из бд в POST

05.03.2017, 18:05. Показов 1059. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! не могу справиться с такой задачей:
вывожу на печать строки из бд и помещаю их в таблицу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 $query="select * from [init].[dbo].[otdel]"; 
  echo '<table border="1"align ="center" class="tableR " cellpadding="4" cellspacing="0" style="border-collapse: collapse; empty-    cells: show">'."\n";
  echo '<tr>';
  echo '<th>Номер</th>';
  echo '<th>Подразделение</th>';
  echo '<th>*</th>';
  echo '</tr>';
  $i=0;
  $result_query = sqlsrv_query($conn,$query,$params,$cursor) or die( print_r( sqlsrv_errors(), true));
  while( $prd = sqlsrv_fetch_array( $result_query, SQLSRV_FETCH_ASSOC)) 
 {
    $i=$i+1;
    echo '<tr>'; 
    echo '<td>'.$i.')'.'</td>';
    echo '<td bgcolor="#FFE3C4">'.'<input type="text" name="fio'.$i.'"   value="'.$prd['otdel_name'].'>'.'</td>'."\n";
    echo '<td>'. '<input type="checkbox" name="check'.$i.'"  class="checkbox"   value="no">'.'</td>';
    echo '</tr>'."\n";
}
echo '</table>'."\n";
в результате печатается таблица с заголовком (как на скрине), а в каждой строчке в одной ячейке помещается порядковый номер записи, поле имя отдела, checkbox. я хочу, чтобы при нажатии на кнопку удалить происходила проверка для каждой записи: если checkbox напротив её отмечен, то удалять её, но не знаю как обратиться к i-му input,к i-му checkbox , или допустим данные из input с определённым номером записать ещё куда-то. понятно, что через POST, но как именно не могу сообразить,подскажите пожалуйста!
Спасибо!
Миниатюры
Передача результатов запроса из бд в POST  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2017, 18:05
Ответы с готовыми решениями:

Передача результатов запроса в переменную
1) Есть запрос вида SELECT COUNT(m_type, id_code, name, first_name, zip_code, area, city, street, building, flat, reg_fld, r_dated) FROM...

Передача результатов запроса полю после нажатия кнопки
Доброе время суток, необходима помощь вот в каком вопросе, есть 3 запроса суммирующие поля в таблице и выводящие конечное число, есть форма...

Передача xml запроса через post
Нужно отправить на сервер xml запрос (отправить переменную содержащую запрос) с помощью post и получить xml ответ от сервера. не могу...

18
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
05.03.2017, 19:18
Цитата Сообщение от Landser Посмотреть сообщение
<input type="checkbox" name="check'.$i.'" *class="checkbox" * value="no">
а почему не сделать
PHP
1
echo '<input type="checkbox" name="check[]" class="checkbox"  value="'.$prd['otdel_name'].'">';
и если название отдела универсальное то удалять вот так
PHP
1
2
3
4
$delet = $_POST['check'];
foreach ($delet as $del) {
mysqli_query($bd, "DELETE FROM table_name WHERE otdel_name='".$del."'"); //тут переделайте под свою БД (т.к. это mySQL)
}
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
05.03.2017, 20:24  [ТС]
Виталюска , спасибо за ответ!
для начала я решил проверить, а пишется ли в массив что нибудь:
PHP
1
2
3
4
5
 $delet = $_POST['check'];
 foreach ($delet as $del) 
 {
  echo $del;
  }
и ничего почему то не выводится..
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
05.03.2017, 20:44
Landser, а что выводит
PHP
1
var_dump($_POST['check']);
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
05.03.2017, 20:50  [ТС]
выводит вроде как надо
PHP
1
array(3) { [0]=> string(8) "1й отдел" [1]=> string(7) "отдел Ы" [2]=> string(4) "какое то значение" }
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
05.03.2017, 21:24
Цитата Сообщение от Landser Посмотреть сообщение
выводит вроде как надо
значит и цикл должен выводить
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
06.03.2017, 20:56  [ТС]
Виталюска, Вы мозг! Вот так работает для MSSQL при нажатии на кнопку удалить:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
...........................
if (isset($_POST['delete'])) 
{
 $delet = $_POST['check'];
 foreach ($delet as $del) 
 {
  $query11="delete from [init].[dbo].[otdel] where [otdel_name]='$del'";
  $result_query11 = sqlsrv_query($conn,$query11,$params,$cursor) or die( print_r( sqlsrv_errors(), true));
  header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); exit();
 
  }
}
Добавлено через 15 часов 28 минут
а как занести в массив данные, которые я ввёл в инпуты уже после печати, я же их печатаю изначально пустыми?
PHP
1
       echo '<input type="text" name="pole[]"  value=" ">';
POST соответственно же пустой

Добавлено через 7 часов 39 минут
Виталюска, разобрался с этой ерундой, но возник другой вопрос, прошу Вашей подсказки:
елси мне надо передать параметры в запрос (insert например) из нескольких инпутов, которые я печатаю, а не из одного:
PHP
1
2
3
4
 
        echo '<td><input type="text" name="init1[]"></td>';
        echo '<td><input type="text" name="init2[]"></td>';
        echo '<td><input type="text" name="init3[]"></td>';
получаю массивы
PHP
1
$i1 = $_POST['init1'];$i2= $_POST['init2'];$i3 = $_POST['init3'];
как потом мне передать сразу все эти значения в sql запрос, а не одно из них, как Вы показали мне в теме?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
06.03.2017, 22:45
Цитата Сообщение от Landser Посмотреть сообщение
получаю массивы
а зачем здесь массивы? если три поля и у каждого свое имя...

если бы было вот так:
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
<html>
<head></head>
<body>
<form action='' name='form' method='POST'>
<input type="text" name="init1[]">
<input type="text" name="init1[]">
<input type="text" name="init1[]">
<input type="text" name="init1[]">
<input type='submit' name='send' value='Send value'>
</form>
</body>
</html>
<?
$out = array();
            for($i = 0; $i < count($_POST["init1"]); $i++)
                {
                    if($_POST["init1"][$i] != "") {
                $out[] = "('".$_POST["init1"][$i]."')";
            }
        }
    if(!empty($out))
            {
               echo  "INSERT INTO `table_name`(`init1`) VALUES ".implode(",", $out).";";
    }
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
06.03.2017, 22:57  [ТС]
Спасибо за ответ.
а зачем здесь массивы? если три поля и у каждого свое имя...
я видимо не совсем так описал свою проблему, инпуты я вывожу в цикле, и я не знаю сколько именно их будет, знаю, что не больше некоторого $num только
PHP
1
2
3
4
5
6
7
8
9
while( $i<=10-$num)  
{     echo '<tr>';
      echo  '<td><input type="text" name="init1[]"></td>';
      echo  '<td><input type="text" name="init2[]"></td>';
      echo  '<td><input type="text" name="init3[]"></td>';
      echo '</tr>';
      $i++; 
}
 ?>
если бы было заранее известное число полей с известными именами, проблемы бы не было.. а тут каждое значение из значений полей init1,init2,init3 мне надо добавить в один запрос..
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
06.03.2017, 23:07
Landser, так каждый раз выводятся n количество полей с такими именами
Цитата Сообщение от Landser Посмотреть сообщение
PHP
1
2
3
echo '<td><input type="text" name="init1[]"></td>';
echo '<td><input type="text" name="init2[]"></td>';
echo '<td><input type="text" name="init3[]"></td>';
если да то делаем по аналогии как показал выше
PHP
1
2
3
4
5
6
7
8
9
10
11
$out = array();
            for($i = 0; $i < count($_POST["init1"]); $i++)
                {
                    if($_POST["init1"][$i] != "") {
                $out[] = "('".$_POST["init1"][$i]."', '".$_POST["init2"][$i]."', '".$_POST["init3"][$i]."')";
            }
        }
    if(!empty($out))
            {
               echo  "INSERT INTO `table_name`(`init1`) VALUES ".implode(",", $out).";";
    }
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
07.03.2017, 22:59  [ТС]
так каждый раз выводятся n количество полей с такими именами
- да, в цикле выводится n строк таблицы , каждая из которых содержит 3 поля ввода, и каждое из этих трёх полей я хочу инсертить в бд. спасибо за совет, завтра буду на компе с бд, попробую, непременно отпишусь. спасибо!

Добавлено через 23 часа 37 минут
Виталюска, спасибо преогромное: работает именно так, как я и хочу. Но понадобилось добавить в запрос помимо инпутов ещё и дату. Пытаюсь так: если соответствующее поле ввода не пустое, то пишем в $out ещё и даты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$out = array();
$dat = array();
 
              for($r = 0; $r < count($_POST["init11"]); $r++)
                {                       
                    if($_POST["init11"][$r] != "") 
            {
              $dat=date("Y-m-d");
                          $out[] = "('".$_POST["init11"][$r]."', '".$_POST["otdel11"][$r]."', '".$_POST["remark11"][$r]."','".$dat"')";
                       } 
                }
    if(!empty($out))
            {
            $query_1="INSERT INTO [init].[dbo].[uchet1]([fio_init],[podr_init],[remark],[add_data]) VALUES ".'<br>'.implode(",", $out).";";
            // $result_query_1=sqlsrv_query($conn,$query_1,$params,$cursor) or die( print_r( sqlsrv_errors(), true));
            echo '<br>'.$query_1;
            }
в результате, если все инпуты пустые, в $out[] всё равно заносится $dat, то есть условие
PHP
1
  if ($_POST["init1"][$i] != "")
не отрабатывается...
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
07.03.2017, 23:10
Цитата Сообщение от Landser Посмотреть сообщение
'".$dat"')";
ошибка
надо '".$dat."')";

Добавлено через 57 секунд
Цитата Сообщение от Landser Посмотреть сообщение
$dat = array();
а зачем тут этот массив?
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
07.03.2017, 23:38  [ТС]
'".$dat"')";
ошибка
надо '".$dat."')";
Да, точно. но всё равно переменной $dat всегда присваивается date("Y-m-d"), даже если поле ввода пустое, дата вставляется в $out, var_dump проверял
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
08.03.2017, 04:59
Все тут проверяется если оставить все поля name="init11[]" то цикл не сработает
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
39
40
41
42
43
44
45
46
47
48
<html>
 
    <head></head>
 
 
<body>
 
    <form action='' name='form' method='POST'>
        <input type="text" name="init11[]" value='test11_1'><br>
        <input type="text" name="init12[]" value='test12_1'><br>
        <input type="text" name="init13[]" value='test13_1'><br>
 
        <input type="text" name="init11[]" value='test11_2'><br>
        <input type="text" name="init12[]" value='test12_2'><br>
        <input type="text" name="init13[]" value='test13_2'><br>
 
        <input type="text" name="init11[]" value='test11_3'><br>
        <input type="text" name="init12[]" value='test12_3'><br>
        <input type="text" name="init13[]" value='test13_3'><br>        
 
<br>
<input type='submit' name='send' value='Send value'>
</form>
</body>
</html>
 
 
<?
 
$out = array();
              for($i = 0; $i < count($_POST["init11"]); $i++)
                {   
            if($_POST["init11"][$i] != "")
                        {
                            $dat = date("Y-m-d");
                            $init11 = $_POST["init11"][$i];
                            $init12 = $_POST["init12"][$i];
                            $init13 = $_POST["init13"][$i];
                            $out[] = "('".$init11."', '".$init12."', '".$init13."', '".$dat."')";
                        }
              
                }
    if(!empty($out))
            {
            $query_1="INSERT INTO [init].[dbo].[uchet1]([fio_init],[podr_init],[remark],[add_data]) VALUES ".'<br>'.implode(",", $out).";";
            // $result_query_1=sqlsrv_query($conn,$query_1,$params,$cursor) or die( print_r( sqlsrv_errors(), true));
            echo '<br>'.$query_1;
            }
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
08.03.2017, 15:55  [ТС]
Виталюска Ваш код, если его поместить в отдельно взятый скрипт работает так, как надо,а у меня какая то ерунда происходит:
стоит условие, что если данные в инпутах не пусты, то формируем массив $out (без даты даже)
PHP
1
2
3
4
if ($_POST["init11"][$r] != "")
  {
   $out[] = "('".$_POST["init11"][$r]."', '".$_POST["otdel11"][$r]."', '".$_POST["remark11"][$r]."')";
  }
потом проверяем, если $out не пустой, то формируем текст зароса
PHP
1
2
3
4
5
6
if(!empty($out))
 {
   $query_1="INSERT INTO [init].[dbo].[uchet1]([fio_init],[podr_init],[remark],[add_data]) VALUES ".implode(",", $out).";";
   // $result_query_1=sqlsrv_query($conn,$query_1,$params,$cursor) or die( print_r( sqlsrv_errors(), true));
    echo '<br>'.$query_1;
  }
Но печатая $query_1 при пустых инпутах получаем
MySQL
1
INSERT INTO [init].[dbo].[uchet1]([fio_init],[podr_init],[remark],[add_data]) VALUES (' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', ''),(' ', ' ', '');
то есть $out пуст, но if не выполняется.
И ещё подскажите пожалуйста, если возможно: когда я кидаю текущую дату в $out
PHP
1
2
3
$dat = date("Y-m-d");
.............
$out[] = "('".$init11."', '".$init12."', '".$init13."', '".$dat."')";
и потом посылаю это в sql запрос, то данные инсертятся в таблицу , а если я $dat присвою
PHP
1
$dat=$_SESSION['parametr']
где сессионная переменная берётся из календаря на html странице (проверял. не пустая), то выскакивает ошибка sql сервера - ошибка преобразования даты, то есть sql не понимает, что моя сессионная переменная-это дата, как её преобразовать в такую дату, чтобы sql её понимал
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.03.2017, 17:24
Добавлено через 1 минуту
Цитата Сообщение от Landser Посмотреть сообщение
VALUES (' ', ' ', '')
у Вас инпут присылает пробел, поэтому он и не пустой как Вы говорите

Цитата Сообщение от Landser Посмотреть сообщение
$dat=$_SESSION['parametr']
а какого формата там дата? для БД нужна дата ГГГГ-ММ-ДД

Цитата Сообщение от Landser Посмотреть сообщение
как её преобразовать в такую дату, чтобы sql её понимал
можно пробовать explode

например дата будет 26.11.1986, а для БД надо 1986-11-26
PHP
1
2
3
$dat = $_SESSION['parametr'];
$dat_e = explode(".", $dat);
$dat_bd = $dat_e[2]."-".$dat_e[1]."-".$dat_e[0];
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
09.03.2017, 21:15  [ТС]
Виталюска, спасибо огромное за ответ!
у Вас инпут присылает пробел, поэтому он и не пустой как Вы говорите
- в точку! у меня стояло при печати инпута
PHP
1
echo '<td><input type="text" name="init11[]"  value="здесь был пробел"></td>';
$dat=$_SESSION['parametr']
а какого формата там дата? для БД нужна дата ГГГГ-ММ-ДД
дата например такая 2017-04-30 - формат вроде правильный. если массив $_SESSION распечатать, то она там будет в правильном формате.
Самое интересное, если я переменной присваиваю
PHP
1
date ("Y-m-d")
, то такая переменная пишется в бд, а если этой же переменной присвоить $_SESSION['parametr'], где сессионная переменная будет в правильном формате, например 2017-04-30, то ругается. Пытался переменной присвоить
PHP
1
$dat='cast'.$_SESSION['parametr'].'as date';
и потом её в массив и в запрос кинуть, но запутался с кавычками..
и ещё маленький вопросик (извините за нахальство, итак Вы уже достаточно мне помогли):
как делать insert с помощью массива Вы мне разъяснили, а вот как делать update аналогичным способом, можно ли?
Пытаюсь так:распечатываю сколько и каких мне надо строк,которые я хочу обновить, в инпуты ввожу новые данные,также печатаю hidden поле,чтобы потом его использовать в качестве условия для update
PHP
1
2
3
4
5
6
7
 while( $prd = sqlsrv_fetch_array( $result_query, SQLSRV_FETCH_ASSOC)) 
  {   echo '<tr  bgcolor="#FFE3C4">'; 
      echo '<input type="hidden" name="id0[]" value="'.$prd['u_id'].'">';
      echo '<td bgcolor="#FFE3C4">'.'<input type="text" name="init0[]"   value="'.$prd['fio_init'].'">'.'</td>'."\n";
      echo '<td bgcolor="#FFE3C4">'.'<textarea name="remark0[]" cols="50" rows="1"'.$vozm.' >'.$prd['remark'].' </textarea> '.'</td>'."\n";
      echo '</tr>';
  }
потом id0,init0,remark0 помещаю в отдельные массивы $out1, $out2,$out3, а потом наверное надо сделать что то вроде:
PHP
1
2
3
$in[$co]=$_POST["init0"][$co];
$id[$co]=$_POST["id0"][$co];
$query="update [init].[dbo].[uchet] set fio_init ='$in[co]' where u_id='$id[$co]'
,вообщем подскажите, можно ли также сделать update, как и insert? спасибо!
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
10.03.2017, 11:12
Цитата Сообщение от Landser Посмотреть сообщение
можно ли также сделать update
можно, также надо задействовать цикл и все будет ОК
1
 Аватар для Landser
57 / 7 / 4
Регистрация: 18.04.2009
Сообщений: 429
10.03.2017, 22:57  [ТС]
Спасибо за совет. Но пока не могу сообразить, как организовать цикл, ведь когда я инсертил, было удобно - все поля в один массив и его в insert into потом. А с update как? Разные поля, которые я планирую использовать в update в один массив или в разные собирать? можете намекнуть немного?

а с датой я так выкрутился - такое выражение sql принимает:
PHP
1
$s= 'cast (\''.$_POST['today'].'\' as date)';
Добавлено через 2 часа 1 минуту
Затупил что то, наверное надо обедать иногда) это же элементарный for. разобрался))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2017, 22:57
Помогаю со студенческими работами здесь

Html и php передача post запроса
Здравствуйте. Скажите пожалуйста корректный и простой способ POST запроса на php c html . Необходимо на определенный адрес, например:...

Вычитание результатов одного запроса из результатов другого
Есть 2 запроса,подскажите возможно ли вычесть одно из второго

Вывод результатов метода POST
Здравствуйте, совсем новичок в php, но вот встала задача вывести результаты опроса сервиса Simpoll.ru на другую страницу.. Читаю мануалы,...

Склейка результатов запроса
Пишу скрипт, который выводит информацию из бд. в бд две таблицы 1) Категории в них где id - номер категории name - называние ...

Сортировка результатов запроса
Здравствуйте, имеется таблица для обменивания сообщениями. Структура: id | to | from | date | attached | status | message. Чтобы получить...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru