Как передать name переключателя (radio)

Скрипты PHP, PERL и т.п. помогающие управлять сетью

Как передать name переключателя (radio)

Сообщение dimondack » 17 сен 2016, 02:11

Здравствуйте

На закреплённой области имеется кнопка по нажатию которой необходимо передать name переключателя (radio) для дальнейшей обработки,

дело в том что radiobuton-ы
также находятся на закреплённой области,

в пределах закреплённой области есть реакция на нажатые button-ы

Код: Выделить всё
<div class="menu"><h3>
<label><input type="radio"
 onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
 name="Info" value="Info">Info</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Notice" value="Notice">Notice</label>
<br>
-button-ы
.....
....
 if(isset($_POST["Notice"])) echo 'Выбран Notice';
 else  echo 'Не выбрано';
</h3></div>





А вот дальше реакции уже нет

Можно что нибудь подсказать.....


Далее,за закреплённой областью работает PHP , где происходит запрос в базу

и хорошо бы нажатые button-ы

$notice= 5;
$error=3;
$info=6;
$warning=4;
$debug=7;


передать в запрос,
но это уже можно придумать как


Вот весь скрипт
377.php
Код: Выделить всё
<?php header('Content-type: text/html; charset=utf-8');?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<title>Объект</title>
<style>
   .menu {
    position: fixed;
    right: 7.3px;
   left: 7.3px;
    top: 0%;
    padding: 10px;
    background: #d3edf0;
    border: 1px solid #333;
   }
   .text {
    height: 45px;
   }
     
  }
 
  .button {
    width: 218px;
   height:25px;
   float: right;
   color: #323232;
   font-weight: bold;
   padding: 0;
   
    margin: -15px 0 0;
}
.button:hover{
text-shadow:1px 1px 1px white,1px 1px 1px white,1px 1px 1px white;
color: #a52727;
}


#centerLayer {
      position: absolute;   /* Абсолютное позиционирование */
    width: 180px; /* Ширина слоя в пикселах */
    height: 97px; /* Высота слоя в пикселах */
    left: 95%; /* Положение слоя от левого края */
    top: 10%; /* Положение слоя от верхнего края */
    margin-left: -170px; /* Отступ слева, включает padding и border */
    margin-top: -10px;   /* Отступ сверху */
    background: #fc0; /* Цвет фона */
    border: solid 1px black; /* Параметры рамки вокруг */
    padding: 10px; /* Поля вокруг текста */
     /* overflow: auto;Добавление полосы прокрутки */
   
   }
  </style>


 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="keywords" content="">
<meta name="description" content="">

</head>

<body>

<div class="menu"><h3>
<form action="377.php" method="post" id="form1"> - Здесь по нажатию кнопки " ЗАПРОС" вызываю сам себя что бы обновить страницу
<?php
/*Эти инструкции для того чтобы отобразить время и проверить соединение с базой
надо было чем то заполнить закреплённую область
*/
echo '<strong>';
echo 'Дата:  ';
$d= date("Y-m-d");
echo $d;
echo '<br>';
$t= date("H:i:s");
echo 'Время:  ';
echo $t;
echo '</strong>';
echo '<br>';
$link = mysql_connect("localhost", "root", "12345")
        or die("Could not connect : " . mysql_error());
         print "Connected successfully";
         mysql_close($link);
?>


<input class="button" type="submit"  name="submit1" value=" ЗАПРОС">

<div id="centerLayer">
 
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
 name="All" value="All" checked>All</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Error" value="Error" >Error</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Warning" value="Warning">Warning</label>
<br>
 <label><input type="radio"
 onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
 name="Info" value="Info">Info</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Notice" value="Notice">Notice</label>
<br>



<?php
//Здесь это работает
if(isset($_POST["Notice"])) echo 'Выбран Notice';
 else  echo 'Не выбрано';
//, но мне нужно не здесь,
// а дальше
// не в закреплённой области
?>
                     

  </div>

 </h3></div>

 
<div class="text"></div>


 

<?php
/* А вот здесь уже не работает
 Вопрос как передать сюда ...... */
/*Мне нужно передать нажатые radiobutton  передать сюда*/
/* Проверяем radiobutton*/
if(isset($_POST["Notice"])) echo 'Выбран Notice';
 else  echo 'Не выбрано';
/* Проверяем radiobutton*/
/*
В конечном итоге  необходимо  нажатые radiobutton
$notice= 5;
$error=3;
$info=6;
$warning=4;
$debug=7;
 обработать и разместить в этот  запрос
$query = "SELECT DeviceReportedTime, Priority, Message FROM SystemEvents WHERE FromHost = $nm AND DeviceReportedTime >= $nd  AND Priority in ( 3, 4, 5, 6, 7) ORDER BY DeviceReportedTime DESC ";

Вопрос как передать сюда ......

*/

$d= date("Y-m-d");
$nd= "'".$d." "."00:00:00"."'";
$nm="'hostname.ru'";
echo '<br>';
echo '<br>';
    /* Соединяемся, выбираем базу данных */
    $connection = mysql_connect("localhost", "root", "12345")
        or die("Could not connect : " . mysql_error());
  //  print "Connected successfully";
   echo '<br>';
    mysql_select_db("Syslog") or die("Could not select database");



    /* Выполняем SQL-запрос */
    $query = "SELECT DeviceReportedTime, Priority, Message FROM SystemEvents WHERE FromHost = $nm AND DeviceReportedTime >= $nd  AND Priority in ( 3, 4, 5, 6, 7) ORDER BY DeviceReportedTime DESC ";
   $result = mysql_query($query) or die("Query failed : " . mysql_error());


  echo '<br>';
   /* Выводим результаты в html */
    print '<table border="1" cellpadding="7" cellspacing="0">';
   
  while ($db1 = mysql_fetch_array($result, MYSQL_ASSOC)) {
       
      
      print '<tr>';
      $dvt=$db1['DeviceReportedTime'];
      print '<td bgcolor="#D3EDF6"  valign="top" align="left">'.$dvt.'</td>';
      
       $mhost=$db1['Message'];
      print '<td width="90%" valign="top">'.$mhost.'</td>'; 
   
   }
   
   print '</table>';
   
     
 
    /* Освобождаем память от результата */
    mysql_free_result($result);
   

    /* Закрываем соединение */
    mysql_close($connection);
   
?>

</body>

</html>
Вложения
1.jpg
Для просмотра логов
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

Re: Как передать name переключателя (radio)

Сообщение root » 17 сен 2016, 10:36

Не совсем понимаю, что вы назвали "закрепленной областью", но скрипту php абсолютно все равно в какой части скрипта вы проверяете существование/значение переменной в $_POST.
Судя по всему вы считаете что это не работает по той причине что вы не видите текста "Не выбрано" или "Выбрано" на экране. Да ?
Ну так понятное дело, т.к. этот текст находится ЗА вашим div menu. Уберите из вашего CSS из .menu position: fixed и текст сразу появится ;)
http://subnets.ru/tmp/dimondack.php

P.S. radio я бы на checkbox заменил, т.к. они более подходят для множественного выбора.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1872
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Как передать name переключателя (radio)

Сообщение dimondack » 17 сен 2016, 21:12

:D :D
Спасибо, сдвинулся с места
Просто без отладчика непривычно , ну как ещё в переменную заглянуть.....
вот и начал на консоль выводить для проверки


оставил radiobutton-ы , что то они мне больше нравяться
вот что получилось
Код: Выделить всё
<?php
$fullstr='1'.','.' '.'2'.','.' '.'3'.','.' '.'4'.','.' '.'5'.','.' '.'6'.','.' '.'7';
$str=$fullstr;

    $str='1'.','.' '.'2';
    if(isset($_POST["Error"]))$str= $str.','.' '.'3';
    if(isset($_POST["Info"]))$str= $str.','.' '.'6';
    if(isset($_POST["Notice"]))$str= $str.','.' '.'5';
    if(isset($_POST["Debug"]))$str= $str.','.' '.'7';
    if(isset($_POST["Warning"]))$str= $str.','.' '.'4';
 
 if($str=='1'.','.' '.'2')$str=$fullstr;

    /* Выполняем SQL-запрос */
    $query = "SELECT DeviceReportedTime, Priority, Message FROM SystemEvents WHERE FromHost = $nm AND DeviceReportedTime >= $nd  AND Priority in ( $str ) ORDER BY DeviceReportedTime DESC ";
   


что вы назвали "закрепленной областью"


Под этой областью подразумеваю часть экрана свободное от прокрутки,
ну как в Excel где закрепляют верхнюю строку, ставят фильтры ...

сообщений из базы , как правило, много и приходится прокручивать, что бы посмотреть
а верх неподвижен

например на mail - телепрограмма так построена

а у меня это
Код: Выделить всё
   .menu {
   position: fixed;
    right: 7.3px;
   left: 7.3px;
    top: 0%;
    padding: 10px;
    background: #d3edf0;
    border: 1px solid #333;
   }
   .text {
    height: 45px;
   }
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

Re: Как передать name переключателя (radio)

Сообщение root » 18 сен 2016, 10:07

А, ясно, осознал теперь.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1872
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Как передать name переключателя (radio)

Сообщение dimondack » 18 сен 2016, 17:19

Задумал что бы при обновлении/загрузки страницы сохранялся выбор и визуально было видно, что нажимал radiobutton,
что бы не забыть чего выбирал :D :D

Нашёл похожий пример вот здесь http://phpforum.su/index.php?showtopic=51905
в этом примере при обновлении/загрузки страницы происходит случайный выбор radiobutton
Код: Выделить всё
<?php
$checked = array (
                      'checked',
                      ''
                     );

 function check()
 {
    global $checked;
    return $checked[randChecked($checked)];
 }
 
   
 function randChecked($arr)
 {
    return rand(0, count($arr) - 1);
 }
?>
<input type="radio"  value="Milk" <?php echo check(); ?> > Milk<br>
<input type="radio"  value="Butter" <?php echo check(); ?> > Butter<br>
<input type="radio"  value="Apple" <?php echo check(); ?> > Apple<br>
<input type="radio"  value="Car" <?php echo check(); ?> > Car<br>
<input type="radio"  value="Cheese" <?php echo check(); ?> > Cheese


и это пример работает

по этому принципу построил свой вариант
,а вот моё творчество никак не хочет работать
Код: Выделить всё
<?php
    /*
   $mserror = $_POST["Error"];
   $msinfo = $_POST["Info"];
   $msnotice = $_POST["Notice"];
   $msdebug = $_POST["Debug"];
   $mswarning = $_POST["Warning"];
   */
$checked = array ('checked','');

 function check($p)
 {
   global $checked;
//   echo $p;
 
   if(isset($_POST["$p"]))return  $checked[0];
   else return $checked[1];
   
 }
 
   echo check('Error');
 
    /*
 if(isset($_POST["Error"]))$che= 'checked' ;
      else $che= 'unchecked';
    if(isset($_POST["Info"]))$chi= $checked[0];
       else $chi= $checked[1];   
    if(isset($_POST["Notice"]))$chn= $checked[0];
      else $chn= $checked[1];
    if(isset($_POST["Debug"]))$chd= $checked[0];
      else $chd= $checked[1];
    if(isset($_POST["Warning"]))$chw= $checked[0];    
       else $chw= $checked[1];
   */

?>

<input type="radio" onMouseDown="this.isChecked=this.checked;" onClick="this.checked=!this.isChecked;" value="Error"
<?php echo  check("Error"); ?>
> Error<br>
<input type="radio" onMouseDown="this.isChecked=this.checked;" onClick="this.checked=!this.isChecked;" value="Warning"
<?php echo  check("Warning"); ?>
> Warning<br>
<input type="radio" onMouseDown="this.isChecked=this.checked;" onClick="this.checked=!this.isChecked;" value="Info"
<?php echo  check("Info"); ?>
> Info<br>
<input type="radio" onMouseDown="this.isChecked=this.checked;" onClick="this.checked=!this.isChecked;" value="Notice"
<?php echo  check("Notice"); ?> 
> Notice<br>
<input type="radio" onMouseDown="this.isChecked=this.checked;" onClick="this.checked=!this.isChecked;" value="Debug"
<?php echo  check("Debug"); ?>
> Debug<br>
 
   


разные варианты пробовал и через if else пробовал,
наконец через функцию, на мой взгляд оптимальный вариант,
ведь просто нужно проверить isset
и в результате в нужном месте тега input приложить атрибут checked или ни чего не приложить

Может чего неправильно делаю
Может кто поделиться опытом
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

Re: Как передать name переключателя (radio)

Сообщение root » 19 сен 2016, 09:34

dimondack писал(а):Задумал что бы при обновлении/загрузки страницы сохранялся выбор и визуально было видно, что нажимал radiobutton

Для это лучше использовать или COOKIE или SESSION.

dimondack писал(а):а вот моё творчество никак не хочет работать

Я бы делал по другому. Объявите массив с возможными значениями и с него и кнопки рисуйте и там же проверяйте set или не set. Примерно вот так:
Код: Выделить всё
<?php
if(session_status() == 1){
    session_start();
}
$variants=array("Notice","Warning","Error","All");
if (count($_POST)>0){
    $_SESSION=$_POST;
}
foreach ($variants as $v){
    if (!isset($_POST[$v])){unset($_SESSION[$v]);}
    printf("<label><input type=\"radio\" id=\"%s\" name=\"%s\" value=\"%s\"%s>%s</label><BR>",$v,$v,$v,isset($_SESSION[$v]) ? " checked" : "",$v);
}
var_dump($_SESSION);
?>


P.S. PHP должен быть собран с поддержкой сессий.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1872
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Как передать name переключателя (radio)

Сообщение dimondack » 21 сен 2016, 20:12

Заработало !!!

Код: Выделить всё
<div id="centerLayer">

<?php
 
 function check($p)
 {
   global $checked;
//   echo $p;
 
   if(isset($_POST[$p]))return  'checked';
   else return '';
   
 }
 
?>

<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Error" value="Error"  <?php echo check("Error"); ?>>Error</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Warning" value="Warning" <?php echo check("Warning"); ?>>Warning</label>
<br>
 <label><input type="radio"
 onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
 name="Info" value="Info" <?php echo check("Info"); ?>>Info</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Notice" value="Notice" <?php echo check("Notice"); ?>>Notice</label>
<br>
<label><input type="radio"
onMouseDown="this.isChecked=this.checked;"
  onClick="this.checked=!this.isChecked;"
name="Debug" value="Debug" <?php echo check("Debug"); ?>>Debug</label>
<br>
  </div>
====================================================================
 while ($db1 = mysql_fetch_array($result, MYSQL_ASSOC)) {
       
      
      
      print '<tr>';
      $dvt=$db1['DeviceReportedTime'];
      print '<td bgcolor="#D3EDF6" width="10%" valign="top" align="left">'.$dvt.'</td>';
      
       $mhost=$db1['Message'];
      print '<td width="85%" valign="top">'.$mhost.'</td>'; 
/*   */   
        $pr=$db1['Priority'];
      switch($pr)
      {
  case 3:
        print '<td  bgcolor="#FF0000" width="5%" valign="center">Error</td>';
      print '</tr>';
   break;
 
  case 4:
        print '<td  bgcolor="#FFFF00" width="5%" valign="center">Warning</td>';
      print '</tr>';
   break;
 
  case 5:
        print '<td  bgcolor="#FF7F50" width="5%" valign="center">Notice</td>';
      print '</tr>';
   break;
 
  case 6:
        print '<td  bgcolor="#6495ED" width="5%" valign="center">Info</td>';
      print '</tr>';
   break;
 
 case 7:
        print '<td  bgcolor="#00FF00" width="5%" valign="center">Debug</td>';
      print '</tr>';
 break;
 
 default:
         print '<td  bgcolor="#FFFAFA" width="5%" valign="center"></td>';
       print '</tr>';
    
         
      }
   }






Для это лучше использовать или COOKIE или SESSION.


Это интересная тема
Для меня это пока слишком...
И до этого тоже доберусь :)
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

Re: Как передать name переключателя (radio)

Сообщение root » 22 сен 2016, 08:58

Поздравляю.

Там нет ничего сложного. Пример работы с SESSION я уже привел выше, с COOKIE не сложнее.

P.S. пользуй ф-цию mysql_fetch_assoc
P.S.S. mysql деприкейтнули, рекомендую переходить на mysqli или PDO, чтобы потом, после обновления php, если вдруг, все продолжало работать.
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1872
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: Как передать name переключателя (radio)

Сообщение dimondack » 22 сен 2016, 10:42

P.S. пользуй ф-цию mysql_fetch_assoc.




$db1 = mysql_fetch_assoc($result);
быстрее ? чем
$db1 = mysql_fetch_array($result, MYSQL_ASSOC);

или синтаксис проще ?


P.S.S. mysql деприкейтнули, рекомендую переходить на mysqli или PDO, чтобы потом, после обновления php, если вдруг, все продолжало работать

mysqli или PDO

А что лучше ?



"Однако с появлением PHP 5 и MySQL 4.1 все изменилось"http://phpclub.ru/detail/article/mysqli

У меня
mysql Ver 14.14 Distrib 5.5.47, for debian-linux-gnu (i686) using readline 6.3

mysql> select version();
+-------------------------+
| version() |
+-------------------------+
| 5.5.47-0ubuntu0.14.04.1 |
+-------------------------+
1 row in set (0.00 sec)

mysqli - значит версия выше ??
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

Re: Как передать name переключателя (radio)

Сообщение dimondack » 22 сен 2016, 13:48

понял
вот он mysqli

в действии
Код: Выделить всё
<?php

/* Подключение к серверу MySQL */
$link = mysqli_connect(
            'localhost',  /* Хост, к которому мы подключаемся */
            'user',       /* Имя пользователя */
            'password',   /* Используемый пароль */
            'world');     /* База данных для запросов по умолчанию */

if (!$link) {
   printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error());
   exit;
}

/* Посылаем запрос серверу */
if ($result = mysqli_query($link, 'SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5')) {

    print("Очень крупные города:\n");

    /* Выборка результатов запроса */
    while( $row = mysqli_fetch_assoc($result) ){
        printf("%s (%s)\n", $row['Name'], $row['Population']);
    }

    /* Освобождаем используемую память */
    mysqli_free_result($result);
}

/* Закрываем соединение */
mysqli_close($link);
?>
Нас определяет то, что мы делаем.
Аватара пользователя
dimondack
новичок
 
Сообщения: 87
Зарегистрирован: 21 янв 2015, 13:00

След.

Вернуться в Программинг и сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2