Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Много разных вопросов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Andruxa
Отправлено: 29 Ноября, 2010 - 18:23:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Всем привет!
Решил самостоятельно написать небольшую СМS и столкнулся со следующими проблемами, и так начнем...
1. Как сделать простенький шаблонизатор (основу СMS)? (Т.е что бы грузился не весь сайт целиком, а подгружалась нужная страница).
Я это реализовал по своему, и наверное очень просто Улыбка но все же ...

В центре где выводится вся информация, я сделал так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. Error_Reporting(E_ALL & ~E_NOTICE);
  3. if ($page=="" )
  4. {
  5. include ("pages/logo.php");
  6. }
  7. else
  8. {
  9. include ("pages/$page.php");
  10. }
  11. ?>

Соответственно ссылки на страницы имеют вид:
http://www[dot]site/?page=login
Подскажите, может есть другой более эффективный способ шаблонизации?
Как реальзовать ЧПУ?

2. Вопрос по скрипту.
есть скрипт загрузки изображения в базу данных, загружает все нормально, таблица имеет следующий вид:
--------------------------------
id | image |
--------------------------------
1 | [BLOB - 79.6 KB] |
-------------------------------- -
Пытаюсь вытащить изображение из таблицы:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ( isset( $_GET['id'] ) )
  3. {
  4.     db_connect();
  5. // Здесь $id номер изображения
  6. $id = (int)$_GET['id'];
  7. if ( $id > 0 )
  8. {
  9. $query = "SELECT `content` FROM `image` WHERE `id`=".$id;
  10. // Выполняем запрос и получаем файл
  11. $res = mysql_query($query);
  12. if ( mysql_num_rows( $res ) == 1 )
  13. {
  14. $image = mysql_fetch_array($res);
  15. // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
  16. header("Content-type: image/*");
  17. // И  передаем сам файл
  18. echo $image['content'];
  19. }
  20. }
  21. }
  22. ?>


Выдает ошибку на строке
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\...

в чем тут дело ?

(Отредактировано автором: 29 Ноября, 2010 - 18:25:53)

 
 Top
OrmaJever Модератор
Отправлено: 29 Ноября, 2010 - 18:59:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




9 строка не верная
Должно быть так
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT `content` FROM `image` WHERE `id`='$id'";

(Добавление)
Andruxa пишет:
Как реальзовать ЧПУ?

создать файл .htaccess в корне сайта и туда вписать следуйщее
CODE (html):
скопировать код в буфер обмена
  1. RewriteEngine On
  2. RewriteRule ^([a-z_]+)$ index.php?page=$1 [L]

затем преходить на http://site[dot]ru/login и должно работать.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 29 Ноября, 2010 - 19:13:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 617 раз(а)




OrmaJever пишет:
9 строка не верная
Должно быть так

Как раз-таки можно и тем методом. Но в этой строке определённо есть ошибка, если это не опечатка при создании топика:
Andruxa пишет:
--------------------------------
id | image |
--------------------------------
1 | [BLOB - 79.6 KB] |

Andruxa пишет:
$query = "SELECT `content` FROM `image` WHERE `id`=".$id;


-----
PostgreSQL DBA
 
 Top
Andruxa
Отправлено: 29 Ноября, 2010 - 19:31:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Мелкий

Я создал таблицу content с полями id и image вот привел ее вид в phpAdmin
Andruxa пишет:
--------------------------------
id | image |
--------------------------------
1 | [BLOB - 79.6 KB] |


Andruxa пишет:
$query = "SELECT `content` FROM `image` WHERE `id`=".$id;


Даже если задаю параметр id =1 выдает ошибку

OrmaJever
Цитата:
$query = "SELECT `content` FROM `image` WHERE `id`='$id'";
- поменял, рузультат тот же Недовольство, огорчение
- за ЧПУ спасибо, все работает Улыбка
 
 Top
KonstantinK
Отправлено: 29 Ноября, 2010 - 19:41:55
Post Id



Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Andruxa начни вот отсюда http://www[dot]irbis-team[dot]com/15/1 тут все подробно описаго
 
 Top
Мелкий Супермодератор
Отправлено: 29 Ноября, 2010 - 19:45:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 617 раз(а)




Andruxa пишет:
Я создал таблицу content с полями id и image вот привел ее вид в phpAdmin

Именно! Перечитайте синтаксис SELECT'a:
select поля from таблица, а не наоборот.

И почитайте мою любимую ссылку: phpfaq.ru/debug

(Отредактировано автором: 29 Ноября, 2010 - 19:45:44)



-----
PostgreSQL DBA
 
 Top
ALEN
Отправлено: 29 Ноября, 2010 - 20:27:43
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Andruxa
Ну начну с того, что тебе сейчас нужен не шаблонизатор, а разделить программный код от шаблона:
1) Это быстрей будет работать чем шаблонизатор
2) На ближайшие несколько лет тебе точно хватит такого вида реализации

P.S. Если есть цель для создания или реально хочешь получить опыт, можешь написать мне в ПМ я тебе расскажу про свои наработки и опыт и если захочешь поучаствуешь в создании удобной системы для разработчика.
(Добавление)
И еще ЧПУ уже не актуально делать таким методом. В будущем выложу наработанные классы для быстрого создания своей CMS - там же и универсальное решение ЧПУ . Данное решение позволит получать тело страницы даже через консоль, чего в бытующем простом варианте не сделать.
 
 Top
Andruxa
Отправлено: 29 Ноября, 2010 - 20:53:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. db_connect();
  2. $query = "SELECT `image` FROM `content` WHERE `id`='1'";
  3. $res = mysql_query($query);
  4. if ( mysql_num_rows( $res ) == 1 )
  5. {
  6. $image = mysql_fetch_array($res);
  7. header("Content-type: image/*");
  8. echo $image['image'];
  9. }


в таком варианте выводит текстовую абру-кадабру и ошибку
Warning: Cannot modify header information - headers already sent by (output started at z:\home\...) Думаю это уже результат Улыбка
 
 Top
OrmaJever Модератор
Отправлено: 29 Ноября, 2010 - 23:08:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




нельзя отправлять текст перед заголовками. Иначе говоря перед функцией header() не должно быть echo или print.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
JustUserR
Отправлено: 30 Ноября, 2010 - 00:24:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Andruxa пишет:
Как сделать простенький шаблонизатор (основу СMS)?
В качестве возможной реализации системы программной обработки пользовательских запросов к URL-пространству имен вашего web-прилоеженя - допустимо использование механизмов alias-инга и действенного перенаправления - позволяющих обеспечивать унифицированую каскадную передачу обработки запроса целевоему CGI-скрипту - в качестве которого возможно использование и PHP-приложения в силу технческой реализации - и осуществления последующего получения целевого отображаемого компонента посредством анализа переменных окружения оригинальным информационных полей HTTP-запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Andruxa
Отправлено: 30 Ноября, 2010 - 10:12:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




OrmaJever пишет:
нельзя отправлять текст перед заголовками. Иначе говоря перед функцией header() не должно быть echo или print.


так у меня нигде перед header() ничего и не выводится.
Помогите, как вывести изображение из базы?

JustUserR - спасибо за ответ, но много непонятных букв Улыбка

(Отредактировано автором: 30 Ноября, 2010 - 10:21:44)

 
 Top
Вездеход
Отправлено: 30 Ноября, 2010 - 10:55:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




Andruxa
вы очень рано начали писать свою CMS
вы хоты бы почитайте что такое буферизирование, ЧПУ, классы, и т.д.

но если конкретнее - лучше работать с буферизацией. проще работы с кешем прикручивать, а так же корректно всегда работаю заголовки.
еще старайтесь пользоваться функцией file_exists, чтобы не было проблем при загрузке файлов


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB