использовать переменную PHP в JavaScript - PullRequest
1 голос
/ 02 ноября 2011

Я только что задал еще один вопрос: глобальная переменная и сокращение доступа к базе данных в PHP + MySQL Я использую PHP + MySQL. Страница обращается к базе данных и получает все данные об элементах и ​​перечисляет их. Я планировал открыть новую страницу, но теперь я хочу показать pop div, используя вместо этого javascript. Но я понятия не имею, как использовать переменные PHP в новом div. Вот код:

<html>
</head>
<script type="text/javascript">
function showDiv() {
    document.getElementById('infoDiv').style.visibility='visible';
}
function closeDiv() {
    document.getElementById('infoDiv').style.visibility='hidden';
}
</script>
</head>
<body>
<ul>
<?php foreach ($iteminfos as $iteminfo): ?>
    <li><a href="javascript:showDiv()"><?php echo($iteminfo['c1']); ?></a></li>
<?php endforeach;?>
</ul>
<div id="infoDiv" style="visibility: hidden;">
    <h1><?php echo($c1) ?></h1>
    <p><?php echo($c2) ?></p>
    <p><a href="javascript:closeDiv()">Return</a></p>
</div>
</body>
</html>

"iteminfos" - это результаты из базы данных, каждый $ iteminfo имеет два значения $ c1 и $ c2. В «infoDiv» я хочу показать детали выбранного элемента. Как это сделать?

Спасибо за помощь!

Еще один вопрос: если я хочу использовать, например, $ c1 как текст, $ c2 как img scr, $ c1 также как img alt; или $ c2 как href scr, как это сделать?

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Попробуйте это:

<?php foreach ($iteminfos as $iteminfo): ?>
  <li>
    <a href="javascript:showDiv(<?php echo(json_encode($iteminfo)) ?>)">
      <?php echo($iteminfo['c1']); ?>
    </a>
  </li>
<?php endforeach;?>

Кроме того, измените showDiv, чтобы получить данные строки:

function showDiv(row) {
  document.getElementById('infoDiv').style.visibility='visible';
  document.getElementById('infoDiv').innerHTML = row['c1'];
}

По сути, вы должны учитывать, что javascript запускается в браузере еще долго после завершения выполнения сценариев PHP. Следовательно, вам нужно встраивать все данные, которые могут понадобиться вашему javascript, в веб-сайт или извлекать их во время выполнения (что в этом случае замедлит и усложнит ситуацию).

0 голосов
/ 02 ноября 2011

Хотите ли вы одну информационную область с несколькими элементами, перечисленными на странице, и когда вы щелкаете элемент, информационная область заменяется новым содержимым ??? или вы хотите новую информационную область для каждого элемента ??

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

<?php
//do some php magic and get your results
$sql = 'SELECT title, c1, c2 FROM items';
$res = mysql_query($sql);

$html = '';
while($row = mysql_fetch_assoc($res)) {
    $html .= '<li><a class="toggleMe" href="#">' . $row['title'] . '</a><ul>';
    $html .= '<li>' . $row['c1'] . '</li><li>' . $row['c2'] . '</li></ul>';
    $html .= '</li>'; //i like it when line lengths match up with eachother
}
?>
<html>
</head>
<script type="text/javascript">
window.onload = function(){ 
    var els = document.getElementsByClassName("toggleMe");
    for(var i = 0, l = els.length; i < l; i++) {
        els[i].onclick = function() {
           if(this.style.display != 'none') {
            this.style.display = 'block';
           } else {
            this.style.display = 'none';
           }
        }
    }
}
</script>
</head>
<body>
<ul>
<?php
echo $html;
?>
</ul>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...