Как посчитать количество значений, введенных в элемент ввода html? - PullRequest
2 голосов
/ 25 мая 2019

Я работаю над HTML-формой, присутствующей в php-файле, как показано ниже, в которой я хочу подсчитать введенные html-значения.

Php / HTML Code:

<form method="post" style="display: inline-block; margin-left: auto; margin-right: auto; text-align: left;">

   <div style ="display:flex; align-items: baseline;">
      Articles (EN) &nbsp;
      <input type="text" name="articles_id_en" style="width: 30%;height: 22px;" value="<?php if($data->{"articles_id_en"}<>''){echo $data->{"articles_id_en"};} ?>">
      &nbsp; Articles (FR) &nbsp;
      <input type="text" name="articles_id_fr" style="width: 30%;height: 22px;" value="<?php if($data->{"articles_id_fr"}<>''){echo $data->{"articles_id_fr"};} ?>"><br>
   </div>

   <div style ="display:flex; align-items: baseline;"> 
      Articles Entered (EN) &nbsp;
      <input type="text"style="width: 30%;height: 22px;" value="<?php $values = $_REQUEST['articles_id_en'];  $delimiter = ','; $valuesCount = count(explode($delimiter, $values)); echo "Values Count: " . $valuesCount . "<br>" . PHP_EOL; ?>">
      &nbsp; Articles (FR) &nbsp;
      <input type="text" name="articles_id_fr" style="width: 30%;height: 22px;" value="<?php if($data->{"articles_id_fr"}<>''){echo $data->{"articles_id_fr"};} ?>"><br>
   </div>

   <div>
      <button type="submit">Save</button>
   </div>

</form>

При нажатии сохранить, будет сохранено в формате JSON , как показано ниже со списком введенных значений.На данный момент я ввел 149968, 149939, 149883, 149877, 149876, 149847, 154303 значений, поэтому в JSON его отображение выглядит следующим образом:

{"articles_id_en":"149968, 149939, 149883, 149877, 149876, 149847, 154303"}

Ниже приведен раздел скриншота формыпринадлежащий вышеуказанному html / php-коду:

enter image description here

После ввода значений он отображается следующим образом:

enter image description here

Ниже приведен HTML-код для проверки:

<input type="text" name="articles_id_en" style="width: 30%;height: 22px;" value=" 14996, 14993, 14988, 14987, 14987, 14984, 15430">

Постановка проблемы:

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

Ответы [ 3 ]

1 голос
/ 26 мая 2019
<form method="post">
<input type="text" name="articles_id_en" style="width: 30%;height: 22px;" value=" 14996, 14993, 14988, 14987, 14987, 14984, 15430">
<input type="submit">
</form>

<?php

if(isset($_REQUEST['articles_id_en'])) {
    $values = $_REQUEST['articles_id_en'];
    $delimiter = ',';
    $valuesAsArray = explode($delimiter, $values);
    $valuesCount = count($valuesAsArray);
} else {
    $valuesCount = 0;
}

echo "Values Count: " . $valuesCount . "<br>" . PHP_EOL;
  1. Посмотрите этот пост о получении значений из формы
  2. PHP-функция explode создает массив из строки value = "value1, value2", которую вы получаете с $_GET['articles_id_en'];. Функция разнесения создает массив с одной записью на значение, разделенной символом $delimiter. Обратите внимание, что если значения, введенные во входные данные формы, разделены символом, отличным от ,, решение не будет работать, поскольку explode ищет конкретный символ, чтобы разделить одну строку на несколько, которые он помещает в массив.
  3. count() просто дает целое число элементов, которое у него есть между (), поэтому, если массив, возвращаемый explode(), имеет 5 элементов, он даст целое число = 5.

результат:

enter image description here

и после удара отправьте:

enter image description here

0 голосов
/ 26 мая 2019

Здесь мы также можем попробовать и использовать preg_match_all, который может работать:

Примечания:

  1. Нам необходимо убедиться, что каждая запись состоит из действительных цифр, используят. е. это регулярное выражение /([0-9]+)/m
  2. Однако, это также может быть случай, когда запись содержит нецифровое значение между ними, например 149a93, в этом случае мы должны настроить наше регулярное выражение для преодоленияэта проблема с использованием ограничения слов, например /(\b[0-9]+\b)/m

Тогда наш код может выглядеть следующим образом:

if(isset($_REQUEST['articles_id_en'])) {
    $values = $_REQUEST['articles_id_en'];
    $re = '/(\b[0-9]+\b)/m';
    preg_match_all($re, $values, $matches, PREG_SET_ORDER, 0);
    $count = sizeof($matches);
    echo $count;
}

Демоверсии

0 голосов
/ 26 мая 2019

Сначала преобразуйте ваши значения в массив, используя explode(), а затем посчитайте их, используя count().

   if(isset($_POST['articles_id_en'])){
        $value = $_POST['articles_id_en'];
        $myArray = explode(',', $value);
        echo $count_numbers = count($myArray);
    }else{
        echo "Form not submitted yet";
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...