За последние 24 часа нас посетил 60671 программист и 1743 робота. Сейчас ищут 907 программистов ...

Помогите..

Тема в разделе "PHP для новичков", создана пользователем ExDragon, 18 дек 2010.

  1. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Помогите мне пожалуйста :D
    я хочу сделать сайт на php и mysql, это будет мая первая серьёзная программа.. прошу помочь заранее спасибо!
    Я хочу сделать супер простой но функциональный сайт - визитку.. в итоги CMS
    В него должен входить шаблон.. Ну шаблон на html в нем например {MENU}, будет хранится в отдельном файле..
    На главной странице новость, а причём на других страницах будет что то другое..
    хочу посмотреть на процесс создания сайт, я смыслю в программировании, читал книги, а сделать целый проект ни как не получается.. Help!
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А чем помочь-то?
     
  3. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Составить сайт с нуля.. как сделать его, я написал что мне нужно сраници, новости и единый шаблон...
     
  4. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Ну я так понимаю нужно начать с шаблона? вот что я сделал..
    HTML:
    1. <title>{TITLE}</title>
    2. </head>
    3. <body bgcolor = #{BGCOLOR}>
    4. <table width = "1024" align = "center">
    5.     <tr>
    6.         <th colspan = "2">
    7.             {HEAD}
    8.         </th>
    9.     </tr>
    10.     <th colspan = "2">
    11.         <table width = "100%" height = "100%">
    12.         <th>
    13.             <td width = "250">
    14.                 {MENU}
    15.             </td>
    16.             <td width = "774">
    17.                 {BODY}
    18.             </td>
    19.         </th>
    20.         </table>
    21.     </th>
    22.     <tr>
    23.         <th colspan = "2">
    24.             {FOOTER}
    25.         </th>
    26.     </tr>
    27. </body>
    28. </html>
     
  5. fluderator

    fluderator Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    3
    Симпатии:
    0
    а скачать готовую CMS не судьба?
     
  6. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Ну нет! я хочу сам сделать!! хочу понять как их делать..
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    ExDragon

    Выключи комп, возьми листик и карандаш и попробуй нарисовать как всё будет работать.
     
  8. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Я уже это сделал! я зная что мне надо но не знаю как это сделать... ну вот я задал конкретный вопрос.. есть шаблон, нужно вынести {MENU} в отдельный файл........
    а вот {BODY} будет зависит от того на какой страници пользователь находиться.. типа index.php?page=3 к стати как это работает?
     
  9. fluderator

    fluderator Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    3
    Симпатии:
    0
    не пробовал разобраться в готовом коде?
     
  10. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Побывал, но толком ни чего не понял..
     
  11. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Я бы дал свою на ковыряние, но она сделана по паттерну MVC с вендорными классами (Twig, DoctrineORM).
    Возми Лёхину Strawberry
     
  12. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    А где её взять =)?
     
  13. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  14. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    А что мне из этого вынести? зачем мне это...
     
  15. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    у меня так примерно, если упростить
    погугли на тему mvc
    PHP:
    1. <?php
    2. class PageController {
    3.     protected $registry;
    4.    
    5.     protected function buildPage($content){
    6.         $this->registry['tpl']->setVars(array(
    7.             'menu'    =>  $this->getMenu(),
    8.             'content' =>  $content
    9.             //еще куча всего
    10.         ),'tpl/index');
    11.     }
    12.    
    13.     protected function getMenu(){
    14.         return 'menu';
    15.     }
    16.    
    17.     public function  __construct($registry) {
    18.         $this->registry = $registry;
    19.          $this->checkAccess();
    20.     }
    21.    
    22.     protected function checkAccess(){
    23.         //блабла
    24.     }
    25. }
    26.  
    27. class UserController extends PageController{
    28.     protected $access = 10;
    29.    
    30.     public function index(){
    31.         $this->buildPage('Добро пожаловать');
    32.         //ну либо с шаблонов или другими методами
    33.     }
    34. }
     
  16. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
  17. RX200

    RX200 Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    56
    Симпатии:
    0
    ExDragon
    Я могу только посоветовать, если с какой то поставленной задачей справится не удаётся, попробуй её разбить на много много(как можно больше), мелких задач и записать их. Я так всегда делаю если что то не получается.
    Кстати меню у меня тоже в отдельных файлах как провела и прикрепляю я их так:
    <?php
    readfile("menu");
    ?>
    А тело страничек разных я бы так сделал:
    <?php
    switch($_GET[body]){
    case 1:readfile("body1");break;
    case 2:readfile("body2");break;
    case 3:readfile("body3");break;
    default:readfile("body")break;
    }
    ?>
    и в ссылках бы писал:
    index.php?body=1
    index.php?body=2
    index.php?body=3
     
  18. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Ну вот я сделал шаблонизатор...
    а вот если я хочу что бы страницы хранились в базе данных,
    RX200
    это то что нужно!
    нужно сделать базу, и запрос... а как их делать?
     
  19. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    или всё токи хранить их в отельном файле?
     
  20. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    Я сделал так но ни чего не работает...
    bufer.php
    PHP:
    1. <?
    2. class Buffer {
    3. var $buffer;
    4.     # инициализация
    5.     function Buffer($filename='') {
    6.     $this->buffer = "";
    7.     if(!empty($filename))
    8.     $this->SendFile($filename);
    9.     }
    10.    
    11.     # очистка буфера
    12.     function Clear() {
    13.     $this->buffer = "";
    14.     }
    15.    
    16.     # заполнение буфера
    17.     function Send($str) {
    18.     $this->buffer .= $str;
    19.     }
    20.    
    21.     # Чтение буфера
    22.     function Read() {
    23.     $tmp = $this->buffer;
    24.     $this->Clear();
    25.     return $tmp;
    26.     }
    27.    
    28.     # выдача буфера
    29.     function Show() {
    30.     print($this->Read());
    31.     }
    32.    
    33.     # шаблонизация или парсинг
    34.     # замена и подстановка переменных
    35.     function Parse() {
    36.    
    37.     # внимание! использование такого подхода НЕ безопасно
    38.     # модифицируйте сами этот метод, для работы с массивами.
    39.     reset($GLOBALS);
    40.    
    41.     while(list($name,$val) = each($GLOBALS)) {
    42.    
    43.             # выбираем только строки и числа
    44.             if(is_string($val) OR is_int($val)) {
    45.             $this->buffer = str_replace('{'.$name.'}',$val,$this->buffer);
    46.             }
    47.         }
    48.     }
    49.    
    50.     # заполнение буфера из файла
    51.     function SendFile($filename) {
    52.    
    53.             if(file_exists($filename)) {
    54.             $this->buffer .= join('',file($filename));
    55.             }
    56.     }
    57. }
    58. ?>
    index.php
    PHP:
    1. <?
    2. include_once('./buffer.php');
    3.  
    4. $TITLE = 'Моя первая страница';
    5.  
    6. switch($_GET[BODY]){
    7. case ProTPL:readfile("./ProTPL.html");break;
    8. case ProDT:readfile("./ProDT.html");break;
    9. case ProSSE:readfile("./ProSSE.html");break;
    10. case About:readfile("./About.html");break;
    11. default:readfile("./News.html")break;
    12.  
    13. // загружаем menu
    14. $MENU = new Buffer('./menu.html');
    15. $MENU->Parse();
    16. $MENU = $MENU->Read();
    17.  
    18. // загружаем body и устанавливаем now
    19. $BODY->Parse();
    20. $BODY = $BODY->Read();
    21.  
    22. // загружаем основной шаблон и выводим его
    23. $HTML = new Buffer('./main.html');
    24. $HTML->Parse();
    25. $HTML->Show();
    26. ?>
    как исправить?
     
  21. ExDragon

    ExDragon Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    76
    Симпатии:
    0
    мне нужно - завися от того на какой странице юзер, отображался заместо {BODY} определённый файл.. а страница вида index.php?body=ProTPL
     
  22. RX200

    RX200 Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    56
    Симпатии:
    0
    Базу и запрос.
    самое простое это, Установи, phpMyAdmin, с начало там в ручную делаешь такой запрос который тебе нужно, и он там отобразится в текстовом виде, копируешь его в:
    mysql_query(сюда);
    И он будет работать.
    Хотя файлы лучше по моему не хранить в базе.

    все
    case ProTPL:readfile("./ProTPL.html");break;
    исправь на
    case "ProTPL":readfile("./ProTPL.html");break;
    так как это строка. её нужно заключить в кавычки.

    переменная $BODY не объявлена как класс.

    и если хочешь с шаблоном, то в switch'e не в страничку вписывай а присваивай переменной имя нужного файла и потом его загружай в буфер.
    пример:
    PHP:
    1.  
    2. switch($_GET[BODY]){
    3.   case "ProTPL":$filname="./ProTPL.html";break;
    4. ........
    5.  
    6.  $BODY = new Buffer();
    7.  $BODY->SendFile($filname);
    8.  $BODY->Parse();
    9.  $BODY->Show();
    10.  
    Вроде так должно заработать.
     
  23. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    RX200
    Давай ты сначала сам поймешь что к чему, а потом будешь только учить других.
     
  24. RX200

    RX200 Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    56
    Симпатии:
    0
    Apple
    Давай ты по факту скажешь что я не так написал? А потом разберёмся вместе что к чему.
     
  25. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    index.php
    PHP:
    1. <?php
    2. header('Content-type: text/html; charset=utf-8');
    3.  
    4. function tpl($vars,$path){
    5.     extract($vars);
    6.     ob_start();
    7.     include($path.'.html');
    8.     return ob_get_clean();
    9. }
    10.  
    11. $auth     = true;
    12.  
    13. $menu = tpl(array(
    14.             'auth'     => $auth
    15.             ),'menu');
    16.  
    17. $friends = array(
    18.     array(
    19.         'id'   => 5,
    20.         'name' => 'Вася',
    21.         'mail' => 'вася@mail.ru'
    22.     ),
    23.     array(
    24.         'id'   => 3,
    25.         'name' => 'Даша',
    26.         'mail' => 'даша@mail.ru'
    27.     ),
    28.     array(
    29.         'id'   => 91,
    30.         'name' => 'Саша',
    31.         'mail' => 'саша@mail.ru'
    32.     )
    33. );
    34.  
    35. $content = tpl(array(
    36.     'friends' => $friends
    37. ),'friends');
    38.  
    39. echo tpl(array(
    40.     'menu'    => $menu,
    41.     'content' => $content
    42. ),'index');
    43.  
    44. ?>
    menu.html
    PHP:
    1. <a href="#">на главную</a>
    2. <?php if($auth): ?>
    3. <a href="#">в кабинет</a>
    4. <?php endif; ?>
    friends.html
    PHP:
    1. <table>
    2. <?php foreach($friends as $friend):?>
    3.     <tr>
    4.         <td>
    5.             <a href="profile.php?id=<?php echo $friend['id'];?>" ><?php echo $friend['name'];?></a>
    6.         </td>
    7.         <td>
    8.             <a href="mailto:<?php echo $friend['mail'];?>" >написать</a>
    9.         </td>
    10.     </tr>
    11. <?php endforeach;?>
    12. </table>
    index.html
    PHP:
    1. <?php echo $menu; ?>
    2. <hr/>
    3. <?php echo $content; ?>
    результат

    HTML:
    1. <a href="#">на главную</a>
    2. <a href="#">в кабинет</a>
    3. <hr/>
    4.     <tr>
    5.         <td>
    6.             <a href="profile.php?id=5" >Вася</a>
    7.         </td>
    8.         <td>
    9.             <a href="mailto:вася@mail.ru" >написать</a>
    10.         </td>
    11.     </tr>
    12.     <tr>
    13.         <td>
    14.             <a href="profile.php?id=3" >Даша</a>
    15.         </td>
    16.         <td>
    17.             <a href="mailto:даша@mail.ru" >написать</a>
    18.         </td>
    19.     </tr>
    20.     <tr>
    21.         <td>
    22.             <a href="profile.php?id=91" >Саша</a>
    23.         </td>
    24.         <td>
    25.             <a href="mailto:саша@mail.ru" >написать</a>
    26.         </td>
    27.     </tr>
    28. </table>