Помогите с PHP и БД, похоже код не нравиться поисковикам

12
alexus777
На сайте с 13.07.2010
Offline
71
717

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

Для каждой страницы сайта код такой:

<?php
$title ='название страницы';
$kind='mono';
include($_SERVER["DOCUMENT_ROOT"].'/modules/1one.php');
include($_SERVER["DOCUMENT_ROOT"].'/modules/2two.php');
?>

файл 1one.php

<?php 
include($_SERVER["DOCUMENT_ROOT"].'/modules/callbase.php;
?>

<!DOCTYPE html>
<html>
<head>
<title><?php echo $title;?></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="keywords" content="<?php echo $keys;?>" />
<meta name="description" content="<?php echo $description;?>" />

<link rel="stylesheet" type="text/css" href="/style.css">
<link rel="stylesheet" type="text/css" href="/smenu.css">

<script src="/scripts/rotator.js"></script>

</head>

<body>

<div id="base">

<div id="header">
<center><a class="head_link" href="/index.php">…. </a></center>
</div>

<div id="platforms">
<span>Меню:</span>
<a class="platforms_link" href="#"><img class="img_platforms" src="/images/platforms/pc.png" alt="PC"> PC</a> …
<a class="platforms_link" href="#"><img class="img_platforms" src="/images/platforms/facebook.png" alt="Игры для Facebook"> Facebook</a>
</div>
………
и т.п., а в файле 2two.php заключительные теги HTML кода.

Файл callbase.php: его смысл в том, что бы из базы вытащить по названию title нужную статью: описание, ключевые слова, различные теги и сам текст статьи, article – это HTML-текст статьи. Привожу полный код:

<?php
if ($db = @mysql_connect("localhost", "xxxxxxx", "password")) {
mysql_select_db("xxxxxxx");
mysql_query("SET NAMES utf8");
$res = mysql_query('SELECT * FROM `content` ORDER BY `content`.`title` DESC LIMIT 0, 30 ');
$count = mysql_num_rows($res);

for ($i=0; $i<$count; $i++) {
$title1 = mysql_result($res, $i, "title");
$keys = mysql_result($res, $i, "keys");
$description = mysql_result($res, $i, "description");
$article = mysql_result($res, $i, "article");
$platform = mysql_result($res, $i, "platform");
$genre = mysql_result($res, $i, "genre");
$rating = mysql_result($res, $i, "rating");

if ($title==$title1) {
break;
}
}
mysql_close($db);
}
else {
echo "Unable to connect to database";
}
?>

Что же здесь не нравиться поисковикам?

Olldman
На сайте с 21.04.2010
Offline
79
#1

Проблемы в любом случае не в php, и уж тем более не в БД. ПС фиолетово каким макаром вы собираете страницы, php-машинка это, или какой-другой серверный язык, они видят исходный код со всем его содержимым.

Есть в коде синтаксические ошибки, но чтобы они влияли на вылет страниц - такого не замечено.

maldivec
На сайте с 04.11.2008
Offline
160
#2

Поисковики понятия не имеют, что там у вас в php и как работает ваша БД.

Они видят только готовый html.

Причина выпадения явно не в этом.

alexus777
На сайте с 13.07.2010
Offline
71
#3

Забыл упомянуть, что в Google Webmaster было сообщение о долгом соединении с БД (не помню точно как было сформулировано), вот почему подозрение бросилось на то, что соединение с БД написано как-то неправильно. Возможно проблемы в хостинге, но он не из дешевых.

maldivec
На сайте с 04.11.2008
Offline
160
#4

А где вы научились так данные из БД доставать?

Я про цикл for ($i=0; $i<$count; $i++) {...}

Обычно делается через

while ($data = mysql_fetch_row($res)) {...} (ну или mysql_fetch_array())

а вы каждый цикл дергаете по 7 раз mysql_result.

Может в этом причина долгой загрузки страниц, но я не уверен.

J
На сайте с 21.08.2011
Offline
78
#5
alexus777:
Возможно проблемы в хостинге, но он не из дешевых.

Дороговизна ни о чем не говорит. Абсолютно.

alexus777:
абыл упомянуть, что в Google Webmaster было сообщение о долгом соединении с БД (не помню точно как было сформулировано), вот почему подозрение бросилось на то, что соединение с БД написано как-то неправильно.

Гугл и другие не могут знать о "скорости соединения с БД" -- вам же выше ответили, что во внешнюю среду уходит готовый HTML, который ваш сервер "собирает" c помощью языка PHP и баз данных.

Однако, да, скорость формирования и загрузки страниц может служить поводом для понижения в выдаче.

alexus777
На сайте с 13.07.2010
Offline
71
#6
maldivec:
А где вы научились так данные из БД доставать?

Знаю, что код не идеальный, это видимо был экспромт.

maldivec:

Может в этом причина долгой загрузки страниц, но я не уверен.

Вот я к этому и склоняюсь, возможно слишком много операций с БД. Единственное, что еще могло не понравиться поисковикам это пустые ссылки (href="#").

IL
На сайте с 20.04.2007
Offline
435
#7
alexus777:
Знаю, что код не идеальный, это видимо был экспромт.

Нет-нет, этот код по-другому зовётся.. хотя, есть и синоним созвучный с экс...т

  $res = mysql_query('SELECT * FROM `content` ORDER BY `content`.`title` DESC LIMIT 0, 30 ');

тут что, 30 строк из таблицы Content достаются? Отсортированные по title?

И чуть ниже в цикле после получения всех столбцов, в цикле проверяется условие

     if ($title==$title1) { 
break;
}

o_O

---------- Post added 25-10-2013 at 20:00 ----------

Даже если вытаскивать по title (что по сути не совсем верно, т.к. title, если это заголовок, может совпадать у нескольких статей.) - часто используется либо id, либо slug, он же alias итд (транслит от URL-адреса), то правильнее использовать

WHERE `content`.`title` = :title

':title' => $title

Если использовать функции mysql_ - не забывать про экранирование (mysql_real_escape_string или просто addslashes)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
AR
На сайте с 01.04.2012
Offline
78
#8
...PHP и БД, похоже код не нравится поисковикам...Сам код работает прекрасно, но для поисковиков он явно дефектный...

alexus777
На сайте с 13.07.2010
Offline
71
#9

ivan-lev, спасибо за конструктивную критику

ivan-lev:

Даже если вытаскивать по title (что по сути не совсем верно, т.к. title, если это заголовок, может совпадать у нескольких статей.) - часто используется либо id, либо slug, он же alias итд (транслит от URL-адреса), то правильнее использовать

WHERE `content`.`title` = :title':title' => $title

Если использовать функции mysql_ - не забывать про экранирование (mysql_real_escape_string или просто addslashes)

Сортировать действительно лучше по ID, а в базе у меня было два title, один выводился в названии браузера, а другой как раз и играл роль уникального ключа. Но это все мелочи, код всегда можно оптимизировать, обидно что сайт попал под фильтр.

---------- Добавлено 25.10.2013 в 20:15 ----------

And-rey:
Я прекрасно знаю, что браузеры получают HTML код и не видят PHP, но вопрос был совсем в другом! Я впервые использовал БД и сразу получил вылет страниц и очень похоже, что дело именно в БД, уже другой вопрос мои ли это кривые руки или это сервер хостинга тормозит и бывает не доступен поисковому роботу.
AR
На сайте с 01.04.2012
Offline
78
#10

=))

Что сам код PHP... +своевременные include, минимальные запросы к БД, кеширование на РНР, что сама структура таблиц БД - всё это влияет на скорость генерации html-страниц, отдаваемые клиенту. Наличие графики в шаблоне (фон, шапка, футер) и скорость хостера - аналогично влияет на скорость загрузки.

Но если выпали страницы из ПС - то это уже seo... недокрученная под требования ПС-ов внутренняя оптимизация или копипаст контента, что там еще - самое последнее АГС-фильтры на домен) Прогоните через мерилки скорости загрузки сайтов ,если сами шлёпаете "движок".

П.С. Я пару лет назад убил полгода для написания типа-движка на связке PHP+MySQL.. лайт-вариант для сайтов-визиток. Бросил это дело, как ни крути а доля правды есть: "Зачем изобретать велосипед (WP и Джумла)", если он уже есть и отточен до более чем желаемого функционала и поддержки )

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий