Не знаю, как решить (между Php и Javascript)

Я не знаю, как решить переменную $ cat следующим сценарием.

« текстовая » переменная из формы в javascript и передать функции php как $ Categories_name и быть $ cat .

Я уже тестирую переменную $ cat , это не «String», это «объект», я не понимаю.

Но мне нужно, чтобы $ cat был «String».

когда Test = «Это кошка» (3 слова),

Я тестирую $ cat по php str_word_count, а результат равен 1 (мне нужно исправить ответ 3);

Я тестирую $ cat php var_dump и не выводит (мне нужно исправить ответ «String»).


<p id="CaTable"></p> <script> function CaFunction() { var text = document.getElementById("CategorySelect").value; document.getElementById("CaTable").innerHTML = "<?php php_catable('" + text + "'); ?>"; } </script> <!-- Generate Table by php and MySQL--> <?php function php_catable($Categories_name) { $cat = $Categories_name; ................. ................. $sql = "select * from table where xyz = '" .$cat. "'"; } ?> 

Вы путаете код на стороне сервера и код на стороне клиента. Ваш php-код живет на сервере и может выполняться только на сервере. И ваш javascript находится в браузере вашего клиента и не знает о сервере (помните, php генерирует текстовый файл, и только этот текстовый файл отправляется в браузер). если вы хотите использовать php_catable() у своего клиента, вам нужно будет позвонить AJAX или перепроектировать вашу страницу, чтобы отправить форму (как и то, что предлагает Стив ).

Ваша первая страница: Предполагая, что CategorySelect является выпадающим списком выбора, создайте скрипт для события onChange и создайте форму method="post" post, со скрытым входом, который отправляется на «generate_table.php».

  <input type="hidden" name="ca_table" id="ca_table" /> 

Вы делаете ca_table скрытым вводом, поэтому php будет получать значение от него, когда эта страница будет отправлена ​​на вторую страницу, где вы можете создать свою таблицу, используя функцию php.

  <script language="javascript" type=text/javascript> function CaFunction(){ documentGetElementById('ca_table').value = documentGetElementById('CategorySelect').value; submit(); } </script> 

добавьте это в раскрывающийся список выберите:

  onChange="CaFunction();" 

Ваша получающая страница. Таким образом, ваша страница получения «generate_table.php» будет иметь

  <?php function php_catable($Categories_name) { $cat = $Categories_name; ................. ................. $sql = "select * from table where xyz = '" .$cat. "'"; } $category_name = $_POST['ca_table']; // cleaned up at least with suitable preg_replace etc // and call your catable function php_catable($category_name); ?> 

Таким образом, ваш результат будет отправлен обратно на сервер в соответствии с комментариями о стороне клиента / стороне сервера @Fluinc и ответом на @litelite . Чтобы заставить его делать что-то, что выглядит как innerHTML, который изменяет часть страницы, не отправляя всю страницу, вам понадобится AJAX, опять же в ответ на @litelite .

Может быть отмечено, что он зависит от JavaScript, но предназначен в основном для разъяснения клиента v сервера.

Если вы хотите избежать зависимостей JavaScript от этого скрипта, вы можете полностью исключить onChange и добавить кнопку отправки, а затем собрать $_POST['CategorySelect']; предполагая, что это его имя – убедитесь, что оно имеет name="CategorySelect" для php, а также его идентификатор для вашего css / javascript. Php получает свою переменную от имени элемента.

Чтобы получить что-то похожее на эффект AJAX визуально (хотя страница по-прежнему отправлена), вы можете отправить страницу себе, используя action="<?php echo $_SERVER['PHP_SELF']; ?>" В форме и весь код на одной странице. Вы можете поместить код генерации таблицы в div, где вы хотите, чтобы таблица отображалась – для этого, конечно, потребуется набор состояний по умолчанию.

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