2015-01-23 3 views
0

Мне было любопытно, можно ли использовать атрибут HTML в качестве переменной SQL-запроса.Использование атрибута HTML в качестве переменной MySQL

Например:

<div class="btn" id="foo" bar="baz"> 
    <? 
     $bar = **something goes here**; 
     $sql = "SELECT * FROM foo WHERE bar = '$bar' ORDER BY barname ASC"; 
     $result = mysql_query($sql); 
    ?> 
</div> 

Так $bar будет равно значению атрибута <div> тега bar. Это возможно? Любой вход оценивается!

+0

Вы имеете в виду использование jquery/javascript для изменения атрибута? Если да, вам нужно ajax для динамического вызова php-скрипта. –

ответ

0

Это?

<? 
$bar = '**something goes here**'; 
?> 
<div class="btn" id="foo" bar="<?=$bar?>"> 
    <? 
     $sql = "SELECT * FROM foo WHERE bar = '$bar' ORDER BY barname ASC"; 
     $result = mysql_query($sql); 
    ?> 
</div> 
+0

Желательно, чтобы переменная была определена в HTML, так как я буду менять ее при загрузке в зависимости от предпочтения пользователя по умолчанию –

+0

нет, вы не можете .. – degr

0

можно использовать буферизацию, чтобы захватить выход вашего PHP программы в то время как она работает, чтобы разобрать частичное HTML документа вы уловили из него, а затем извлечь значение атрибута из него ... но что бы быть безумно сложным.

Этот путь - безумие. Перейти к следующему разделу для разумного подхода к проблеме.

<?php 
ob_start(); 
?> 
<!DOCTYPE HTML> 
<meta charset="utf-8"> 
<title>Experiments in output buffering</title> 
<div class="btn" id="foo" bar="baz"> 

<?php 
$doc = ob_get_contents(); 
$dom = new domDocument; 
$dom->loadHTML($doc); 
$div = $dom->getElementById('foo'); 
$bar = $div->attributes->getNamedItem('bar')->value; 
echo "The value of \$bar is $bar"; 
?> 

</div> 

Если вы хотите использовать часть данных в нескольких местах, а затем сохранить его в переменной (или постоянной), а затем использовать его в разных местах.

<?php 
    $bar = get_user_preference(); 
?> 
<div class="btn" id="foo" bar="<?php echo htmlspecialchars($bar); ?>"> 
<?php 
    $stmt = $db->prepare('SELECT * FROM foo WHERE bar = ? ORDER BY barname ASC'); 
    $stmt->bind_param('s',$bar); 
    $stmt->execute(); 
?> 
</div>