Создать форум бесплатно: ixbb.ru :: Календарь на Март 2024 года: calendar2008.ru/2024/mart/

Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topicStart Poll

php

, база данных
meravaz
Отправлено: Aug 24 2011, 01:11 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



задам глупый вопрос

страница пхп, в начале хочу поставить подключение к БД
далее внизу будут отображаться запросы , всего на странице будет в среднем по 3-4 вывода.

к примеру, по середине посл записи в БД, ниже самые читаемые, с боку самые старые,

может у кого есть пример, если не трудно опубликуйте плиз


--------------------
PMEmail Poster
Top
Матроскин
Отправлено: Aug 25 2011, 11:26 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



QUOTE (meravaz)
к примеру, по середине посл записи в БД

Выбираем, к примеру, 5 записей с сортировкой по ключу в обратном порядке.
QUOTE (meravaz)
ниже самые читаемые

Выбираем 5 записей с сортировкой по количеству просмотров записи.
QUOTE (meravaz)
с боку самые старые

Выбираем 5 записей с сортировкой по ключу в прямом порядке.


--------------------
PMEmail PosterUsers Website
Top
meravaz
Отправлено: Aug 25 2011, 09:09 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



вот таким вот образом подключаю БД

CODE
<?  
       require 'inc/connect.php';

       //htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш

сайт обломались.
       $_GET['id'] = htmlspecialchars($_GET['id']);

       // если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте

вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
       if(empty($_GET['id'])) $_GET['id'] = 1;
       $result = mysql_query("SELECT * FROM lm_content WHERE id = '".$_GET['id']."';", $link);
       $row = mysql_fetch_array($result);
?>


далее, в body в нужном месте поставил следующее

CODE
<?php
if($_GET['id'] == '1') include("news.php");
?>
           <?=stripslashes($row['bodytext']);?>


как вы поняли , при ссылке index?option=content&task=view&id=144

выводим данные из таблицы статью под id номер 144 .

а если попадает id 1 то инклудим файл news.php

1 - а как сделать так что, дать больше условий, скажем при ссылке id 2 id 4 и id89 инклудились файлы соответственно other, last и girls.php ?
2 - и как сделать так что б конце сайта выдавался результат такого вот запроса (запрос взят с моего старого сайта):

CODE

<?php
$db = new db;
$db->query("select * from peoples where sex='boy' and bukva='ц'");
$flag = 0;
while($line=$db->get_row()){
if($flag==0){
echo '<table border="0" width="100%"><tr><td width="50%"><li><a href="'.$line['url'].'">'.$line['name'].'</a></li></td><td>';
$flag = 1;
continue;
}
else{
echo '<li><a href="'.$line['url'].'">'.$line['name'].'</a></li></td></tr></table>';
$flag = 0;
}
}
?>




--------------------
PMEmail Poster
Top
meravaz
Отправлено: Aug 25 2011, 09:17 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



QUOTE (Матроскин @ Aug 25 2011, 11:26 AM)
Выбираем 5 записей с сортировкой по количеству просмотров записи.

а в файл news.php для вывода новостей нужно заново писать код подключения к базе или сразу уже запрос?


--------------------
PMEmail Poster
Top
meravaz
Отправлено: Aug 25 2011, 09:39 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



есть две таблицы в БД table1 и table 2

вроде одинаковые, но что то в них не так все таки,
потому что если файл грузит текст с table1 то все ок, а если с table2 то появляются проблемы с кодировкой

что посоветуете?

п.с. у обоих Сравнение = cp1251_general_ci


--------------------
PMEmail Poster
Top
Матроскин
Отправлено: Aug 26 2011, 10:13 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



QUOTE (meravaz)
1 - а как сделать так что, дать больше условий, скажем при ссылке id 2 id 4 и id89 инклудились файлы соответственно other, last и girls.php

Как вариант, добавить еще условий, аналогичных предыдущему:
CODE
<?php
if($_GET['id'] == '2') include("other.php");
?>

Теперь пара советов по безопасности.
QUOTE (meravaz)
CODE
      //htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш

сайт обломались.
      $_GET['id'] = htmlspecialchars($_GET['id']);

Это разве что для того, чтобы "будем считать" smile.gif Функция htmlspecialchars() предназначена для того, чтобы обрабатывать вывод данных из БД, но никак не для обработки входящих данных. Существует 2 простых правила:
1) данные числового типа приводим к явному числовому типу, например, вот так - неправильно делать:
QUOTE (meravaz)
CODE

      $_GET['id'] = htmlspecialchars($_GET['id']);

Поскольку здесь ожидаются данные числового типа - правильно будет привести их к целочисленному типу и тогда можно не "считать", а спать спокойно... правильно здесь так:
CODE

      $id = (int) $_GET['id'];

Далее, вот здесь:
QUOTE (meravaz)
CODE

      // если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте

вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
      if(empty($_GET['id'])) $_GET['id'] = 1;
     

А если запрашивают страницу, которой нет в БД, тогда что будет грузиться? К примеру, если я введу [B]id=-1[B] tongue.gif
2) данные строкового типа обрабатываем функцией mysql_real_escape_string(), перед этим не забыв отключить директиву magic_quotes_gpc(), чтобы данные в БД попадали в корректном виде. Судя по обработке вывода функцией stripslashes(), у Вас на сервере эта директива не отключена... лучше, чем ничего, но все равно - не совсем правильно.
QUOTE (meravaz)
а в файл news.php для вывода новостей нужно заново писать код подключения к базе или сразу уже запрос?

Нет, если подключение к БД уже есть на странице до подключения файла news.php... лучше подключение поместить в конфигурационный файл, который затем подключать в самом верху всех файлов, где необходимо соединение с БД.
QUOTE (meravaz)
потому что если файл грузит текст с table1 то все ок, а если с table2 то появляются проблемы с кодировкой

После подключения к серверу БД отправляем запрос, которым указываем нужную кодировку соединения с БД:
CODE
mysql_query("SET NAMES 'cp1251'") or die("Can't set charset");


--------------------
PMEmail PosterUsers Website
Top
meravaz
Отправлено: Aug 27 2011, 07:23 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



а как быть если index.php берет статьи с одной таблицы
а news.php с другой таблицы?


--------------------
PMEmail Poster
Top
meravaz
Отправлено: Aug 27 2011, 06:11 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



а вот такой вопрос, насколько возможно скопировать таблицу в БД ?
внутри БД скопировать таблицу для этого же БД, то есть из одной таблицы сделать две идентичные только названия разные?


--------------------
PMEmail Poster
Top
meravaz
Отправлено: Aug 27 2011, 07:26 PM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 266
Пользователь №: 1600
Регистрация:
22-May 08



QUOTE (Матроскин @ Aug 26 2011, 10:13 AM)
После подключения к серверу БД отправляем запрос, которым указываем нужную кодировку соединения с БД:
CODE
mysql_query("SET NAMES 'cp1251'") or die("Can't set charset");

эмммм , а куда именно его вписать в моем случае? ((


--------------------
PMEmail Poster
Top
Матроскин
Отправлено: Aug 28 2011, 10:54 AM
Quote Post


  Генерал
*

Группа: Members
Сообщений: 245
Пользователь №: 2581
Регистрация:
9-June 09



QUOTE (meravaz)
а как быть если index.php берет статьи с одной таблицы
а news.php с другой таблицы?

В index.php формировать запрос к одной таблице, а в news.php - к другой.
QUOTE (meravaz)
внутри БД скопировать таблицу для этого же БД, то есть из одной таблицы сделать две идентичные только названия разные?

Посредством phpMyAdmin делается экспорт нужной таблицы, далее таблица переименовывается и делается импорт экспортированной на предыдущем шаге таблицы... если я правильно понял суть вопроса.
QUOTE (meravaz)
эмммм , а куда именно его вписать в моем случае? ((

Я же написал, что после подключения к серверу БД. Какой функцией осуществляется подключение к серверу БД? Правильно - mysql_connect(). Вот после установления подключения и выбора БД функцией mysql_select_db() и следует отправить запрос, устанавливающий кодировку соединения.


--------------------
PMEmail PosterUsers Website
Top

Topic OptionsСтраницы: (2) [1] 2  Reply to this topicStart new topicStart Poll

 



[ Script Execution time: 0.0311 ]   [ 10 queries used ]   [ GZIP выключен ]