скрыть в word и активировать кнопку с флажком

#php #html

Вопрос:

Я написал веб-сайт на php/html, и мне нужно добавить на него еще две вещи..

  • Программа не должна отображать дополнительные функции, если пользователь не выбрал ни одну из дополнительных опций задач.
  • Если установлен флажок сохранить эти сведения и нажата кнопка Рассчитать зарплату, сведения (общая зарплата, дополнительные услуги, дата и время) должны храниться в одном файле cookie, срок действия которого истекает через 1 неделю. Этот файл cookie должен иметь возможность хранить историю расчетов заработной платы в одном файле cookie.

и это моя программа:

 lt;htmlgt;  lt;bodygt; lt;?php $none=0; $cookie_name='historyDetails'; $cookie_value='[]'; $message='';  date_default_timezone_set('Asia/Bahrain'); setcookie($cookie_name, $cookie_value, time()   (86400 * 30) , "/"); if ($_SERVER["REQUEST_METHOD"] == "POST") {  if (isset($_POST['calculate_salary']))  {  // get all value of form in post variable  $details=$_POST;  $basic=0;  $extra_tags='';  // if basic salary is not given set zero  if(isset($details['basic'])amp;amp; !empty($details['basic']))  {  $basic=$details['basic'];  }  $extra=[];  // if extra values are unchecked the set as empty else add values  if (isset($details['extra']))  {  foreach ($details['extra'] as $value)  {  // split extra value by hash  $temp=explode("#",$value);  // create associative array for future operations  $extra[(integer)$temp[0]]=$temp[1];  // for printing the list  $extra_tags=$extra_tags.'lt;ligt;'.$temp[1].'lt;/ligt;';  }   }   // set BD according to their material status else zero  $BD=0;  switch($details['ms'])  {  case 'single':  $BD=50;   break;  case 'married':  $BD=100;  }  // calculate total  $total=$basic array_sum(array_keys($extra)) $BD;  // store cookies  $cookie_values=(array)json_decode($_COOKIE[$cookie_name]);  $history_value=['basic'=gt;$basic,'extra_sum'=gt;$extra,'ms'=gt;$BD,'total'=gt;$total,'date'=gt;date("Y-m-d"),'time'=gt; date("h:i:sa")];  array_push($cookie_values,$history_value);  setcookie($cookie_name, json_encode($cookie_values), time()  (86400 * 30), "/");  // Generate html for display   $message='lt;br/gt;lt;br/gt;lt;br/gt;lt;ulgt;  lt;ligt;Salary Details: Total Salary is BD '.(string)$total.'lt;/ligt;  lt;ligt;Extras:lt;/ligt;  lt;olgt;  '.$extra_tags.'  lt;/olgt;  lt;u1gt;';   }   elseif (isset($_POST['view_history'] ))  {   $histories=(array)json_decode($_COOKIE[$cookie_name]);  $history_data='';  foreach ($histories as $history)  {  $history=(array)$history;  $extra_value='';  foreach((array)$history['extra_sum'] as $extra)  {  $extra_value=$extra_value.'lt;ligt;'.$extra.'lt;/ligt;';  }  $history_data=$history_data.'  lt;ligt; Date: '.(string)$history['date'].' Time: '.(string)$history['time'].'lt;br/gt;  lt;ulgt;  lt;ligt;Salary Details: Total Salary is BD lt;bgt;'.(string)$history['total'].'lt;/bgt; lt;/ligt;  lt;ligt;Extras: lt;/ligt;  lt;olgt;  '.$extra_value.'  lt;/olgt;  lt;/ulgt;  lt;/ligt;lt;br/gt;';  }  $message='lt;br/gt;  lt;h3gt;History details of your old salary calculationslt;/h3gt;lt;br/gt;lt;br/gt;  lt;olgt;'.$history_data.'lt;/olgt;';  } } ?gt;  lt;form method='post' action="lt;?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?gt;"gt;  Basic Salary lt;input type='number' name='basic' /gt;lt;br /gt;   Marital Status: lt;br /gt;  lt;input type='radio' name='ms' value='single' checked /gt; Single lt;br /gt;  lt;input type='radio' name='ms' value='married' /gt; Married lt;br /gt;   Extra: lt;br /gt;  lt;input type='checkbox' name="extra[]" value="200#Work on Weekend" /gt; Work on Weekend - BD 200lt;br /gt;  lt;input type='checkbox' name="extra[]" value="100#Work Night Shift" /gt; Work Night Shift - BD 100lt;br /gt;  lt;input type='checkbox' name="extra[]" value="400#Work Abroad" /gt; Work Abroad - BD 400lt;br /gt;    lt;br /gt;lt;br /gt;  lt;input type='checkbox' name="save" value="historyDetails" /gt; save this detailslt;br /gt;  lt;br /gt;    lt;input type='submit' name='calculate_salary' value='Calculate Salary' /gt;   lt;input type='submit' name='view_history' value='View History' /gt;   lt;/formgt;   lt;?php echo($message); ?gt; lt;/bodygt;  lt;/htmlgt; 

Ответ №1:

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

Дополнительные услуги: вы должны просто проверить, присутствуют ли дополнительные услуги или нет, для простого примера проверьте, содержит ли переменная что-либо:

 $history_data = 'lt;ulgt;lt;ligt;...lt;/ligt;'.($extra_value?'lt;ligt;Extras:lt;/ligt; lt;olgt;'.$extra_tags.'lt;/olgt;':'').'lt;/ulgt;';  

или

 $message = 'lt;ulgt;lt;ligt;...lt;/ligt;'.($extra_tags?'lt;ligt;Extras:lt;/ligt;lt;olgt;'.$extra_value.'lt;/olgt;':'').'lt;/ulgt;';  

Файлы cookie: при выводе любого текста заголовок уже был отправлен, поэтому вы больше не можете выполнять какие-либо функции php, которые управляют заголовком, более конкретно: lt;htmlgt;lt;bodygt; это должно быть написано после setcookie . Вы setcookie используете одно и то же имя файла cookie несколько раз, поэтому отправляете его дважды (в случае отправки формы), оно все равно будет работать, но вы должны знать об этом. В строке 10 setcookie абсолютно не нужно, она перезаписывает значение в пустой массив json.

Сохранение файлов cookie при установке флажка «сохранить»: в том месте, где вы // store cookies поставили блок: if(isset($_POST['save'])){ ... setcookie(...); } флажки не отправляются, когда они не установлены, так что этого достаточно.

Еще одна вещь: action="lt;?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?gt;" в этом нет необходимости, действие по умолчанию выполняется самостоятельно по умолчанию, в случае, если вы все еще хотите, чтобы оно было там, поместите туда второй параметр ENT_QUOTES , потому что его значение атрибута html не находится между тегами.