Запрашивать с проверками и возвращать false при отмене

я разрабатываю веб-приложение PHP. На странице Категории, которая показывает все категории, я хотел бы разместить кнопку редактировать отправить, которая при событии щелчка откроет кнопку подсказки с названием категории, чтобы изменить ее, если пользователь захочет.

Я также хотел бы иметь некоторые проверки в окне подсказки (min-length='5'), и если пользователь нажимает кнопку отмены, чтобы вернуть false (теперь возвращает null) и не отправлять форму, иначе, если проверка в порядке, и нажимает ОК, чтобы отправить форму с категорией id и новое имя категории (значение подсказки) для обновления данных.

Пример кода:

echo "<table>";
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "NO DATA FOUND";
}else{
  while($CatsRow = $strCats->fetch()){
    echo "<tr><td>$CatsRow[catName]</td>
    <td><button type='submit' name='btnEditCategory' value='$CatsRow[catId]' onclick='return prompt(\"Rename category\",\"$CatsRow[catName]\");'>EDIT</button></td></tr>";
  }
}
echo "</table>";
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
105
2

Ответы 2

Вам нужно будет использовать функцию javascript, которая запускается при нажатии кнопки и отправляет значение через ajax.

<script type = "text/javascript">
     function btnEditCategory(catID){
        //edit function with ajax call to edit category
     }
</script>
<input type = "submit" onclick = "return btnEditCategory('1');" value = "Edit">

Передайте идентификатор категории для редактирования в функции редактирования

Я умею это делать. Мои проблемы: 1) запрашивать перед отправкой, но при отмене возвращать false вместо null (это я могу сделать это с помощью функции, которую вы используете) 2) я могу передать идентификатор категории как значение кнопки, но мне нужно передать новый название категории из подсказки

GaLaTaS 22.05.2018 00:22

1) вам нужно добавить return в функцию onclick, поэтому я добавил его как решение. 2) вы можете взять название категории из подсказки, используя подсказку javascript.

rimadsa 22.05.2018 11:31

Наконец я решаю это.

if (isset("cmdEditCategory")){
  $catName = str_replace('"',"`",str_replace("'","`",$_POST['txtCatName']));
  $catId = $_POST['cmdEditCategory'];
  $sqlEditCategory=$con->prepare("UPDATE categories SET catName=? WHERE catId=?");
  $sqlEditCategory->bindParam(1, $catName, PDO::PARAM_STR, 25);
  $sqlEditCategory->bindParam(2, $catId, PDO::PARAM_INT, 11);
  if ($sqlEditCategory->execute()) {
    echo "<script type='text/javascript'>notif ('success','". MSG_SUCCESS ."','". MSG_UPDATED ."');</script>";
  }else{
    echo "<script type='text/javascript'>notif ('error','". MSG_WARNING ."','". MSG_ERROR ."');</script>";
  }
}
$strCats=$con->query("SELECT * FROM categories ORDER BY catName");
$CatsRows=$strCats->rowCount();
if ($CatsRows==0) {
  echo "<div class='alert alert-danger'>". MSG_NO_DATA_FOUND ."</div>";
}else{
  echo "<form action='/..$_SERVER[REQUEST_URI]' method='post'>
    <table>";
    while($CatsRow = $strCats->fetch()){
      echo "<tr><td>$CatsRow[catName]</td>
        <td>
          <button type='submit' name='cmdEditCategory' value='$CatsRow[catId]' onclick='return editCategory(\"$CatsRow[catName]\");'>". EDIT ."</button>
        </td>
      </tr>";
    }
    echo "</table>
    <div style='display:none'>
      <input type='text' id='txtCatName' name='txtCatName' />
    </div>
  </form>
  <script type='text/javascript'>
    function editCategory(catName){
      var msg = prompt('Rename category',catName);
      if (msg != null){
        document.getElementById('txtCatName').value=msg;
        return true;
      }else{
        return false;
      }
    }
  </script>";
}

Если есть другое лучшее решение, пожалуйста, ответьте.

Другие вопросы по теме