Передача переменной из массива PHP в функцию JS
Здравствуйте!
У меня такая простая функция для события onclick="testFun();" кнопки УДАЛИТЬ. function qDelete() { document.location.href = "delete.php?id=<?php echo $row['id']?>"; } Переменная $row это массив полученный в PHP командой mysql_fetch_array из базы mySQL. Не могу понять почему JS его не видит. Допустим эту сроку JS видит(просто переменная $new): document.location.href = "delete.php?id=<?php echo $new?>"; Как быть ? |
Если этот код обрабатывается как подключаемый к исполняемому файлу, то все будут Ок, но при условии, что переменные определены до подключения. Если этот код в не исполняемом файле, то будет как строка.
|
|
И что? Ваш вопрос звучит так - Не могу понять почему JS его не видит, а это значит нет. Но если есть значение, но не то, то чего вы ожидаете? Вы думаете из куска кода вырванного из контекста, в котором трудно понять чего вы делаете, и На этом примере id=16, проходя далее оно уже 29 а в функции принимает значение 8 тоже все объясняет?
Если ресурс sql вернул несколько строк и <?php echo $row['id']?> (можно короче - <?=$row['id']?>) это проходом в цикле, то не та цифра это и есть результат цикла. А если .... что там у вас "если", только вам да богу известно. Пояснять надо. |
Цитата:
Подключаюсь в базе, делаю запрос данных Из запроса создаю Массив. Затем while выбираю все записи Наименование организации ИНН Кнопка Изменить и Удалить(кнопки bootstrap 3) И так 10 раз <?php include_once("db.php"); $limit = 10; $result = mysql_query(" SELECT * FROM reestr ORDER BY id DESC LIMIT $limit "); mysql_close(); while($row = mysql_fetch_array($result)) {?> <!-- Здесь форматируется запись типа Наименование организации ИНН Кнопка Изменить и Удалить И так 10 раз --> <p>Наименование организации: <strong><?php echo $row['orgname']?></strong></p> <p>ИНН организации: <strong><?php echo $row['inn']?></strong></p> <?php echo $row['id']?> <!-- Модаль КНОПКА --> <button class="btn btn-info " data-toggle="modal" data-target="#myModalEdit" >Изменить</button> <!-- Модаль для кнопки РЕДАКТИРОВАТЬ ЗАПИСЬ --> <div class="modal fade" id="myModalEdit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">Редактирование записи !</h4> </div> <div class="modal-body">Внести изменения ? </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Отмена</button> <button type="button" class="btn btn-primary" onclick="return qEdit();">Редактировать <?php echo $row['id']?></button> </div> </div> </div> </div> <!-- Модаль для кнопки РЕДАКТИРОВАТЬ ЗАПИСЬ --> <!--По клику кнопки (строка 39 данного кода) Изменить появляется модальное окно в котором кнопка Pедактировать выполняет скрипт onclick="return qEdit();" --> <script> function qEdit() { //var xxx = "<?php echo $row['id']?>"; //alert(xxx); document.location.href = "edit.php?id=<?php echo $row['id']?>"; } </script> <!--В конце закрываю while --> <?php } ?> Прослеживаю переменную см. строки кода выше: 23 строка - результат который нужен мне допустим 16 (у каждой кнопки разный) 39 строка - равен 29 (как выяснил это id последняя запись, так как запрос в запросе к базе есть сортировка от большего к меньшему). Данный результат у всех 10 кнопка Ну и строки 50,51 если раскоментовать, то рез будет 8 Если строку <?php } ?> поставить перед тегами скрипта то id будет пуст |
Во-первых так делать нельзя, в вы в цикле порождаете 10 функций qEdit(). Во-вторых какого возврата вы ожидаете здесь onclick="return qEdit();", если результат функции переход на новую страницу? Да и кнопке этот возврат пустой звук.
Функцию qEdit() вообще нужно удалить из этого кода, поместив в подключаемый или прописанный вне цикла скрипт. Функция должна принимать аргументом значение $row['id'], которое можно присвоить источникам вызова функции, например, <button id=<?=$row['id']?> type="button" class="btn btn-primary" onclick="qEdit(this.id)"> |
Спасибо понял!
Сделал так. Убрал функцию с цикла Прописал ваши значения для кнопки Сама функция такая <script > function qEdit(id) { var text1 = id; var text2 = 'edit.php?id='; var text0 = text2 + text1; //alert(text2 + text1); document.location.href = text0; } </script> Смешная может быть но JS знаю только неделю))) Про php сокращение знаю. Пишу пока полное, опыт еще не пришел... Если есть желание поясните по функции... может короче можно. И вообще если допустим в теге я напишу onclick="qEdit(this.class)" то она передаст название класса? А внутри функции его нужно присваивать переменной ? |
function qEdit(id) { window.location.href = 'edit.php?id='+id; } Цитата:
<button id="id-<?=$row['id']?>" type="button" class="btn btn-primary" onclick="qEdit(this.id)"> а в функции qEdit(id): window.location.href = "edit.php?"+id.replace("-","="); <?=$var?> - это тоже самое, что и <?php echo $var?>, и в старых версиях работает только если разрешен короткий php_тег (<? без php), в новых версиях это работает не зависимо от такого разрешения. |
Часовой пояс GMT +3, время: 23:26. |