Передача переменной из массива 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, время: 01:00. |