Я не знаю, как решить переменную $ 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 также жизненно необходимо для предотвращения атаки – убедитесь, что вы очистили его, прежде чем использовать его!