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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 11:17   #11
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от HDMI Посмотреть сообщение
Пусто name=' '. Как же тогда?
Вам мой пример кода хорошо видно?
Там же показано как...
Подставьте только вместо $row['id'] свою переменную - и всё:
PHP код:
<input type='Radio' name='status[<?=$row['id'];?>]' value='5'>5
PS: в вашем первом примере кода - написано непонятно что, уж никак не в echo выводится <input /> ваш.

Последний раз редактировалось Andkorol; 02.04.2012 в 11:20. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 02.04.2012, 11:21   #12
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Вам мой пример кода хорошо видно?
Там же показано как...
Подставьте только вместо $row['id'] свою переменную - и всё:
PHP код:
<input type='Radio' name='status[<?=$row['id'];?>]' value='5'>5
PS: в вашем первом примере кода - написано непонятно что, уж никак не в echo выводится <input /> ваш.
Вот это я и не пойму, чему конкретно $row будет присваиваться? id - берется из базы


Первый пример с ошибкой, согласен. Вот так выглядит это:

PHP код:
$query "SELECT predmet.name_pr, zadania.name_z, upload.name, upload.directory, upload.id_upload FROM predmet,zadania,upload WHERE predmet.id_users='{$_SESSION['user_id']}' AND predmet.id_predmet=zadania.id_predmet AND zadania.id_zadania=upload.id_zadania";  
$result mysql_query($query);  

echo 
"<form action='proverka.php' method='POST'>";
while(
$query_data mysql_fetch_array($result))   
{  
$name_pr $query_data["name_pr"]; 
$name_z $query_data["name_z"];
$name $query_data["name"];
$directory $query_data["directory"];
$id $query_data["id_upload"];

echo 
"<br><a href='./upload/$directory/$name.pdf' type='application/pdf' target='_blank'>$name_pr - $name_z <img src='img/download.png' width='35' height='30' /></a>";
echo 
"<br>

<input type='hidden' name='name' value='
$name'>
<input type='Radio' name='
$id' value='5'>5
<input type='Radio' name='
$row[id]' value='4'>4
<input type='Radio' name='
$row[id]' value='3'>3
<input type='Radio' name='
$row[id]' value='2'>2
<input type='Radio' name='
$row[id]' value='1'>Вернуть на доработку<br>
<input type='text' name='komment' placeholder='ваш комментарий' size='50'><br>
<input type='submit' value='Оценить'>

"


Допустим я сделаю вот так:

PHP код:
$id $query_data["id_upload"];
$row[id] = $query_data["id_upload"]; 
Будет массив в котором индексы равны значениям. Как мне в обработчике поймать это значение?

Последний раз редактировалось HDMI; 02.04.2012 в 11:31.
HDMI вне форума Ответить с цитированием
Старый 02.04.2012, 11:31   #13
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от HDMI Посмотреть сообщение
Вот это я и не пойму, чему конкретно $row будет присваиваться? id - берется из базы
PHP код:
echo "<br> 
<input type='hidden' name='name' value='
$name'> 
<input type='Radio' name='status[" 
$id "]' value='5'>5 
<input type='Radio' name='status[" 
$id "]' value='4'>4 
<input type='Radio' name='status[" 
$id "]' value='3'>3 
<input type='Radio' name='status[" 
$id "]' value='2'>2 
<input type='Radio' name='status[" 
$id "]' value='1'>Вернуть на доработку<br> 
<input type='text' name='komment' placeholder='ваш комментарий' size='50'><br> 
<input type='submit' value='Оценить'>"

$row - это классическое название переменной в примерах обработки результатов запросов, в мануале по РНР.
Приводится просто для примеров - а вы уже заменяйте на свое название переменной с ID записи.
PS:
Цитата:
Как мне в обработчике поймать это значение?
$_POST['status']

Последний раз редактировалось Andkorol; 02.04.2012 в 11:35. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 02.04.2012, 11:36   #14
HDMI
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 48
По умолчанию

PHP код:
if(!empty($_POST['status'])){ 
    foreach(
$_POST['status'] as $id => $row_value ){ 
    
         
$status $row_value;
         echo 
"Статус: $status";
    } 

Здесь я правильно принимаю значение переменной?

Как быть со скрытым полем (или полем ввода), которое передает $name ? Ведь если таким же образом обработать, то придет сразу 3 значения, что не верно, нужно только 1

Вот эта проблема:

PHP код:
if(!empty($_POST['status'])){ 
    foreach(
$_POST['status'] as $id => $row_value ){ 
    
         
$status $row_value;
 
         
$query "UPDATE upload SET `status`='{$status}' WHERE id_upload = '$id'";    
    
         
$sql mysql_query($query) or die(mysql_error());
         
         if(!empty(
$_POST['komment'])){
         foreach(
$_POST['komment'] as $id => $row_value )
         { 
    
         
$komment $row_value;
         
         
$query "UPDATE upload SET `komment` = '{$komment}' WHERE id_upload = '$id'";    
    
         
$sql mysql_query($query) or die(mysql_error());
         
         }

         }
     
    } 
Данный код обновляет поле komment по очереди везде. Если переменная пустая, он просто затирает поле. Как исправлять только то, что ввел пользователь?

Последний раз редактировалось HDMI; 02.04.2012 в 12:15.
HDMI вне форума Ответить с цитированием
Старый 02.04.2012, 12:18   #15
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от HDMI Посмотреть сообщение
Здесь я правильно принимаю значение переменной?
Да:
$id - это у вас ID записи в БД, к которой относится этот статус
$row_value - это, собственно, само выбранное значение статуса.

Цитата:
Сообщение от HDMI Посмотреть сообщение
Как быть со скрытым полем (или полем ввода), которое передает $name ? Ведь если таким же образом обработать, то придет сразу 3 значения, что не верно, нужно только 1
Оно вам больше не нужно - если вы теперь для идентификации записи используете ID.

И с полями komment вам нужно сделать то же самое:
PHP код:
echo "...
<input type='text' name='komment[" 
$id "]' placeholder='ваш комментарий' size='50'>
...."

В обработчике вам нужно просто проверить, есть ли значение у такого элемента массива:
PHP код:
if(!empty($_POST['status'])){  
    foreach(
$_POST['status'] as $id => $row_value ){  
         
$comment = (!empty($_POST['komment'][$id])) ? $_POST['komment'][$id] : '';
         
$status $row_value
         echo 
"Статус: $status <br/>Комментарий: $comment"
    }  

Andkorol вне форума Ответить с цитированием
Старый 02.04.2012, 12:27   #16
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от HDMI Посмотреть сообщение
Как исправлять только то, что ввел пользователь?
Если переменная $_POST['komment'][$id] пустая - не включать обновление этого поля в запрос:
PHP код:
if(!empty($_POST['status'])){   
  foreach(
$_POST['status'] as $id => $row_value ){   
    
$comment = (!empty($_POST['komment'][$id])) ? ", `komment` = '" mysql_real_escape_string($_POST['komment'][$id]) . "' " ""
    
$status $row_value;  
    
//echo "Статус: $status <br/>Комментарий: $comment"; 
    
$query "UPDATE upload 
    SET `status`='" 
. (int)$status "' " $comment 
    WHERE id_upload = '" 
. (int)$id "'";     
    
$sql mysql_query($query) or die(mysql_error());
  }   

Andkorol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое изменение размера формы в соответствии с размером экрана ru3000 Microsoft Office Excel 18 08.11.2021 10:16
Автоматическое открытие формы. Artiomtb C# (си шарп) 1 09.01.2012 21:14
Автоматическое удаление формы или запроса s8259 Microsoft Office Access 8 21.12.2010 23:52
Автоматическое создание макроса lavrentiyy Microsoft Office Excel 16 14.10.2010 00:07
Автоматическое формирование нескольких отчётов по данным из формы Kerguru Microsoft Office Access 1 20.04.2010 20:20