глобальная переменная и уменьшить доступ к базе данных в PHP + MySQL - PullRequest
0 голосов
/ 01 ноября 2011

Я новичок в PHP + MySQL и последовал примеру создания веб-страницы.

По сути, моя первая страница читает базы данных, извлекает все элементы и списки на странице. Каждый элемент имеет ссылку на новую страницу с подробным описанием.

страница списка:

//itemlist.html.php
<html><body>
<ul>
<?php foreach ($items as $item): ?>
    <li><a href="?C1=<?php echo($item['c1']); ?>">
    <?php echo($item['c1']); ?></a></li>
<?php endforeach; ?>
</ul>
</body></html>

страница товара:

//itemeach.html.php
<html><body>
<h1><?php echo($c1) ?></h1>
<p><?php echo($c2) ?></p>
</body></html>

страница указателя:

<?php
if (isset($_GET['C1']))
{
    /*
    I want to reuse $iteminfos and get value for $c1 and $c2
    */
    include 'itemeach.html.php';
    exit();
}
$result = mysqli_query($link, 'SELECT * FROM TB');
while ($row = mysqli_fetch_array($result))
{
    $items[] = array('c1' => $row['c1'], 'c2' => $row['c2']);
}
include 'itemlist.html.php';
?>

Я удалил ненужный код. Поскольку при первой загрузке index.php извлекается $ infos. Я хочу избежать повторного доступа к базе данных, чтобы получить один конкретный элемент, поэтому я подумываю повторно использовать информацию Но он становится нулевым, когда я запускаю «С1». Можно ли сохранить $ items в качестве глобальной переменной? или есть другой способ сделать это?

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

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

Просто переместите запрос и цикл while выше строки if (isset ($ _ GET ['C1'])), это сделает $ items доступными для сценария itemeach.html.php.Если бы вы могли опубликовать содержимое itemeach.html.php, мы можем помочь вам в дальнейшем.

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

Вы можете сохранить полученный набор строк в суперглобальном элементе $ _SESSION.Как:

if (empty($_SESSION['items']) {
    $result = mysqli_query($link, 'SELECT * FROM TB');
    while ($row = mysqli_fetch_array($result)) {
        $rowData[] = array('c1' => $row['c1'], 'c2' => $row['c2']);
    }

    $_SESSION['items'] = $rowData;
}

$items = $_SESSION['items'];

Но да, Дагон сказал, что это правда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...