html — назначить & quot; div id & quot; значение переменной Переполнение стека

У меня есть div на моей странице .php

<div id="force_id"></div>

Это печатает идентификатор для каждого продукта на странице. Пример: 126500

Как мне присвоить это значение другой переменной PHP (не щелкать, например, при загрузке)

Я использую это здесь:

$limit = ??????   (Value should be the id value here. For example 126500)
$plans = mysql_fetch_array(mysql_query("select * from motors WHERE prod_id = '$limit'"));

Заранее спасибо …

1

Решение

Если вы ищете что-то под нагрузкой, вам нужно использовать Javascript с каким-то вызовом Ajax.

Ваш javascript должен был бы получить идентификатор и затем передать его в .php как переменную POST или GET.

Однако, вероятно, было бы лучше, чтобы вы передали идентификатор вместе с запросом страницы. Так что ваша ссылка на .php будет выглядеть так:

<a href='page.php?id=126500'>Link</a>

Очевидно, вы можете автоматически генерировать их. Тогда в .php вы просто получаете значение из GET:

$limit = $_GET['id']

Затем вы можете использовать его в своем запросе SQL (вы должны посмотреть на PDO вместо mysql_query, чтобы защитить себя от взломов SQL-инъекций).


Еще немного подробнее о опции GET.
Ваш исходный HTML-код для выбора продуктов из меню будет выглядеть следующим образом:

<h1>Select the Product you want to see</h1>
<ul>
<?php
$result = /*  SELECT MY PRODUCT CODES */

foreach($result AS $row){
echo "<li><a href='product.php?id=".$row['id']."'>Product  ".$row['name']."</a></li>";
}
?>
</ul>

Тогда ваш файл product.php будет иметь это:

if(isset($_GET['id'])){
$limit=$_GET['id'];
$plans= /* SELECT FROM MOTORS USING $limit */
foreach($plans AS $row){
echo 'Product name:'.$row['name'];
echo "<img src='".$row['img_path']."' />";
...
}

}else{
echo 'Sorry, unrecognised product';
}

Вы должны выполнить дальнейшую проверку на $ _GET [‘id’]; например, проверьте, что это число и в пределах диапазона, который вы ожидаете для вашего product_id


Более подробно о опции POST с использованием Javascript & JQuery.
Если у вас есть конкретная причина желать сделать POST или по какой-то причине вы хотите опубликовать только идентификационный код на одной странице, вы можете сделать это следующим образом:

В вашем HTML я бы использовал атрибут данных в div:

<div id='product' data-id='12650'></div>

В Javascript (я предполагал, что JQuery, но подход будет таким же, как и в других библиотеках), вы добавили бы к своей функции «onload» (т.е. сделайте это после загрузки страницы):

$('#product').each(function(){
var id=$(this).data('id');
$.ajax({
type: 'POST',
url: 'product_content.php',
data: {'id':id},
success: function(msg){
$(this).html(msg);
},
error: function(msg, status,err){
$(this).html("Product not Found");
}
});
});

Наконец, вам нужна страница, чтобы ответить на вызов Ajax product_content.php:

$limit=$_POST['id'];
/* DO SOME VALIDATION ON $limit HERE OR USE PDO AS PROTECTION */
$plans= /* SELECT FROM MOTORS USING $limit*/
foreach($plans AS $row){
echo 'Product name:'.$row['name'];
echo "<img src='".$row['img_path']."' />";
...
}

Я должен отметить, что я не проверял этот код, поэтому следите за опечатками, если вы копируете его напрямую.

2

Другие решения

Если вы используете форму, вы можете поместить значение div в input[hidden] внутри формы. Что-то вроде этого:

  $('#your_form').on('submit', function(){
your_div = $('#your_div').attr('id');
$('#hidden_field_used_on_form').val(your_div);
return true;
})
0

По вопросам рекламы [email protected]