Вывод контента страниц из БД

Тема в разделе "PHP", создана пользователем rasandrey, 6 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Помогите, плиз, разобратьс в таком вопросе:
    есть БД с 1 таблицей, в которой 3 поля: "id,name,content" - ИД записи, название пункта меню и содержание пункта меню.

    Тепрь у меня есть код:

    Код:
    <?php
    require ("config.php");
    
    mysql_connect(DB_HOST, DB_USER, DB_PASS) or die (mysql_error());
    mysql_select_db(DB_NAME) or die (mysql_error());
    
    
    $q = mysql_query("select * from pages");
    echo "<ul><li><a href=\"/\">Главная</li>";
    for ($i = 0; $i<mysql_num_rows($q); $i++)
    
    {
    $q2 = mysql_fetch_array($q);
    echo "<li><a href=\"index.php?id=".$q2[id]."\">".$q2[name]."</a></li>";
    }
    echo "</ul>";
    
    
    ?>
    
    Который выводит из БД все поля и формирует ссылку по типу
    Код:
    <a href="index.php?id=Ид нашего пунта меню">Имя пункта меню</a>
    По нажатию на определенный пункт меню мне нужно отображать содержание соответствующей записи content из БД, но не соображу как. :nezn:
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    <?php
    require ("config.php");
    $content_id = isset($_GET['id'])?$_GET['id']:0;
    $content "";

    mysql_connect(DB_HOSTDB_USERDB_PASS) or die (mysql_error());
    mysql_select_db(DB_NAME) or die (mysql_error());

    $res mysql_query("select * from pages");
    echo 
    "<ul><li><a href=\"/\">Главная</li>";
    while (
    $row mysql_fetch_assoc($res)) {
        echo 
    "<li><a href=\"index.php?id=".$row['id']."\">".$row['name']."</a></li>";
        if (
    $content_id == $row['id']) {
            
    $content $row['content'];
        }
    }
    echo 
    "</ul>";

    if (
    strlen($content)) {
        echo 
    $content;
    }

    ?>
     
    rasandrey нравится это.
  3. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    спасибо, все ок, а можете объяснить несколько моментов?

    1) какое значение формирует эта строка или она просто получает текущий id страницы?
    $content_id = isset($_GET['id'])?$_GET['id']:0;

    почему не так: $content_id = $_GET['id']; ?

    2) зачем идет проверка?
    if (strlen($content))
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    $content_id = isset($_GET['id'])?$_GET['id']:0;
    isset($_GET['id']) проверяет существование значения в массиве $_GET с идексом 'id', если такое значение существует, то мы присваиваем его переменной, в противном случае инициализируем переменную со значением 0. если использовать предложеную вами конструкцию
    PHP:
    $content_id $_GET['id'];
    тогда скрипт будет выдавать предпреждение, что переменной $_GET['id'] не существует, пока в строке запроса не будет передан параметр 'id'.

    PHP:
    if (strlen($content))
    проверка сделана для определения, стоит ли нам выводить значение переменной или нет :)
     
    rasandrey нравится это.
  5. Ins1ne

    Ins1ne Постоялец

    Регистр.:
    26 авг 2009
    Сообщения:
    89
    Симпатии:
    25
    1) это тоже самое что и
    PHP:
    if(isset($_GET['id']))
    {
        
    $content_id $_GET['id'];
    }
    else
    {
        
    $content_id 0;
    }
    2) это видимо для проверки есть ли что-то в переменной $content,
    хотя можно проверить на пустоту можно и так:
    PHP:
    if(!empty($content))
     
    rasandrey нравится это.
Статус темы:
Закрыта.