За последние 24 часа нас посетили 18667 программистов и 1689 роботов. Сейчас ищут 1467 программистов ...

Автоподстановка h1 в мета-теги

Тема в разделе "Сделайте за меня", создана пользователем dspmnt, 2 сен 2015.

  1. dspmnt

    dspmnt Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    В общем я написал скрипт, который автоматически подставляет на всех страницах статей, keywords и description, в соответствии с тем, что указано в соответствующих полях input.
    И вот у меня возник вопрос, а как мне теперь сделать так, чтобы текст заголовка h1, автоматически подставлялся в keywords и description? Желательно с возможностью выбрать местоположение, куда именно будет подставляться текст из h1. К примеру если пользователь ввел в поле input description "в этой статье мы рассмотрим" и вместо слов " этой статье", подставлялось значение h1 этой самой статьи.
    Значение h1 для каждой статьи хранится в БД, как и значение текста, который пользователь вводит в поле input.
    Код скрипта:
    Код (PHP):
    1. <?php
    2.     include('session.php');
    3.  
    4. /*Защита от пустых переменных*/
    5. if(isset($_POST['description'])) {$description = $_POST['description']; if($description == '') {unset($description);}}
    6. if(isset($_POST['keywords'])) {$keywords = $_POST['keywords']; if($keywords == '') {unset($keywords);}}
    7.     include('menu.php');
    8.      ?>
    9.         <div class="content">
    10. <p>Здесь автоматическое изменение мета-тегов!</p>
    11. <?php /*Проверяем переменные на существование*/
    12.         if(isset($description) && isset($keywords))
    13. {        /*Занести значения в БД, если переменные существуют*/
    14.     $tags = mysql_query ("UPDATE meta SET description='$description',keywords='$keywords'");
    15.     if($tags == 'true') {echo"<p>Данные обновлены!</p>";}
    16.                 /*Иначе*/
    17.     else{echo"<p>Ошибка!</p>";}
    18.     }
    19.     ?>
    20.  
    21. <form name="form" method="post" action="update.php">
    22.                 <p>
    23.         <label>Задайте шаблон для "keywords"<br>
    24.                 <input type="text" name="keywords" id="keywords">
    25.             </label>
    26.         </p>
    27.         <p>
    28.         <label>Задайте шаблон для "description"<br>
    29.                 <input type="text" name="description" id="description"
    30.                 </label>
    31.                 </p>
    32.                 <p>
    33.                 <label>
    34.                 <input type="submit" name="submit" id="submit" value="Внести в базу для всех статей">
    35.             </label>
    36.         </p>
    37.     </form>
    38.         </div>
    39.         <?php
    40. include('foot.php');
    41.      ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. DDIM

    DDIM Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    25
    Симпатии:
    0
    Попробуй распарсить содержимое тега <h1></h1> в момент подгрузки из БД:
    Код (PHP):
    1. $bd = file_get_contents('bd.txt'); //где $bd - БД
    2.  
    3. mb_ereg("<h1>(.*?)</h1>", $bd, $h); 
    4. $h1 = $h[1]; //и запихнуть в содержимое h1 в переменную $h1
    5.  
     
  3. dspmnt

    dspmnt Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    а этот код куда надо подставить и какой логический смысл он несет? Я просто недавно в веб-разработке, попробуй более доступным языком объяснить) и ещё вопрос, что подставить вместо bd.txt, если у меня БД хранится на сервере БД SQL, захожу в неё через phpmyadmin, название bd = siteofnews, meta = название таблицы, в которой столбцы h1, keywords и description...h1 кстати хранится без тегов <h1> </h1>, а просто как текст, подставляется в html в виде <h1><?echo $myrow['h1']?></h1>
     
  4. DDIM

    DDIM Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    25
    Симпатии:
    0
    Так вот тебе и готовая PHP переменная
    Код (PHP):
    1. $myrow['h1']
    Вставляй $myrow['h1'] до или после $description
    Код (PHP):
    1. $h1 = $myrow['h1']; //преобразовал с более приятную переменную $h1
    2. $tags = mysql_query ("UPDATE meta SET description='$description$h1',keywords='$h1$keywords'"); //подстановка $h1
    главное, точками разделяй переменные + пробел, если нужен для разделения текста
     
  5. dspmnt

    dspmnt Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    ага, вроде чё то начинает получаться) последний вопрос, как в переменную $h1 вытащить массив значений столбца h1 из таблицы и корректно его распределить на каждую статью. Прикол в том, что в этом файле переменной $myrow['h1'] не существует, она подключается совсем в другой файл, в которой вытаскивается из другого с формы методом POST.

    Я сделал так, прописал над проверкой на существование переменных:
    Код (Text):
    1. $h1 = $myrow['$h1'] = mysql_query("SELECT h1 FROM meta");
    ну и в запросе на UPDATE добавил $h1 через точку как ты написал, но он мне почему то вместо значений h1 из базы, подставляет выражение "Resource #id 6", в чем беда ?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можешь просто удалить их - ничего не поменяется
     
  7. dspmnt

    dspmnt Новичок

    С нами с:
    2 сен 2015
    Сообщения:
    4
    Симпатии:
    0
    да это понятно, тут вопрос не в функциональности этих тегов на самом сайте, а как сам "факт" выполнения этого задания

    В общем сделал вот так:
    Код (Text):
    1. <?php
    2.     include('sessions.php');
    3. $res = mysql_query("SELECT h1 FROM meta");
    4. while ($h1 = mysql_fetch_assoc($res)){
    5. $in = $h1 ['h1'];
    6. };
    7. --------------------------------------------------------
    8.   /*Занести значения в БД, если переменные существуют*/
    9.     $tags = mysql_query ("UPDATE meta SET description='$description.$in',keywords='$in.$keywords'");
    10.     if($tags == 'true') {echo"<p>Данные успешно обновлены!</p>";}
    11.                 /*Иначе выполнить*/
    12.     else{echo"<p>Ошибка! Данные не обновлены!</p>";}
    13.     }
    14.     ?>
    15. ----------------------------------------------------------
    Теперь заголовок подставляется, но подставляется ко всем одинаковый, тот, который в столбце h1 самый последний. Как обработать результат запроса к БД, чтобы к каждой статье, добавлялся именно её заголовок ?