За последние 24 часа нас посетили 20229 программистов и 1724 робота. Сейчас ищут 2097 программистов ...

проблема с include

Тема в разделе "Сделайте за меня", создана пользователем sin313, 9 июн 2014.

  1. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Всем привет. Появилась какая то проблема на пустом месте из ничего. Есть главный файл index.php .
    В нем код:
    <?php
    echo "<!DOCTYPE HTML>";
    include('left_menu_function.php');
    include($_SERVER['DOCUMENT_ROOT'].'/ks/views/layouts/shop.php');
    ?>
    То есть подключаю shop.php .
    Код в файле shop.php:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link href='style/style.css' rel='stylesheet' type='text/css'>
    <link href='style/left_menu.css' rel='stylesheet' type='text/css'>
    <link href='style/assortment_view.css' rel='stylesheet' type='text/css'>
    <title>Документ без названия</title>
    <script src='js/javascript.js'></script>
    </head>
    <body>
    <div class="main_menu"><img src="images/main_menu.gif"></div>
    <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/left_menu/left_menu.php'); ?>
    <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); ?>
    </div>
    </body>
    </html>

    В этом файле shop.php делаю include двух блоков <div> . Даже уже пробовал пустые блоки без содержимого тыкать. Во всех браузерах css куда то съезжает. Блоки отображаются не правильно.

    Но если воткнуть эти два блока <div> в файл shop.php без выноски в отдельный файл напрямую так как в коде ниже, то во всех браузерах ничего не съезжает, отображает все как надо.
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link href='style/style.css' rel='stylesheet' type='text/css'>
    <link href='style/left_menu.css' rel='stylesheet' type='text/css'>
    <link href='style/assortment_view.css' rel='stylesheet' type='text/css'>
    <title>Документ без названия</title>
    <script src='js/javascript.js'></script>
    </head>
    <body>
    <div class="glaw_ramka">
    <div class="main_menu"><img src="images/main_menu.gif"></div>

    <div class="left_menu"></div>
    <div class="assortment_view"></div>

    </div>
    </body>
    </html>
     
  2. immortal.1986

    immortal.1986 Активный пользователь

    С нами с:
    24 сен 2013
    Сообщения:
    257
    Симпатии:
    0
    Код (PHP):
    1. include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php');
    2. Замени на echo($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php');
    3. 100% проблема в путях!
    4.  
     
  3. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Если заменить на echo , то на экран выводятся просто пути :)
    C:/Apache2/htdocs/ks/views/left_menu/left_menu.php
    C:/Apache2/htdocs/ks/views/pages/index.php
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Включаем логику. Если посоветовали вывести пути, то..? Надо скопипастить и проверить, валидные ли они. Далее, в браузере проверь пути у CSS все ли подгрузилось. И так далее. CSS не может "съехать и-за пхп". ПХП никак не связан с браузером. Он отдает не страницу красивую с картинками и стилями, а пачку текста, только и всего. Кривые ссылки, битые пути - все на твоей совести. Пых прописал ровно то, что ты указал.
     
  5. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Проверить в браузере. HTML код страницы просмотреть? Там все нормально, один в один как есть и если все правильно отображается когда без выноски, то уж точно css подключается и работает.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ты можешь трижды быть уверенным в обратном, но это ничего не меняет.
     
  7. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Я уже не могу. Наверное 1000 вариантов перепробовал. Да же <div style ="......"> уже на прямую в блок тыкал. Ну что только не делал. Все доктайпы перепробовал. Не выносишь работает, выносишь не работает. Сам понимаю что php тут ни причем. Не знаю что делать.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Пилите, Шура, пилите.(с)
    [​IMG]
     
  9. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Смотри, есть первый блок из тех двух о которых писал ранее <div class="left_menu"> и в нем еще один блок <div class="left_menu_title"> . Теперь если делаю выноску, почему то внутренний <div> съезжает относительно этого первого блока в котором он находится по высоте на 21px в мозиле , на 20 в опере, хром, ie7 . Без выноски стоит все везде в нулях. Что за блятство? Такое ощущение что при подключении выносных файлов что то теряется, да и откуда эти 20-21px берутся?! Крышняк скоро поедет.
    Вот стили:
    .left_menu {
    float:left;
    position:absolute;
    border-left: 1px solid #CCC;
    border-right: 1px solid #CCC;
    width:202px;
    margin-top:7px;
    }
    .left_menu_title {
    border-top: 1px solid #CCC;
    border-bottom: 1px solid #CCC;
    height:25px;
    width:197px;
    color: #404040;
    font-family: Arial;
    font-size: 11px;
    line-height:26px;
    padding-left:5px;
    background:url(../images/img_title_left_menu_kor.jpg);
    }
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ты ведь в ресурсах страницы проверял все подключаемые файлы, да? С учетом порядка подключения стилей?

    Добавлено спустя 2 минуты 54 секунды:
    И, блин, сравни уже код страницы в браузере БЕЗ выноски и С ВЫНОСКОЙ. Поймешь, что не так. Не саму страницу, не формочки с картинками, а код ее. Не интерпретированный уже браузером, а исходный - это немного разные вещи. В хроме в девтулах, вкладка network, открой ее и обнови свою страницу. Потом выбери строку, содержащую ответ сервера, погляди preview. Вот там чистый нераспарсенный HTMl будет. Либо в ресурсах ищи.
     
  11. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Проверил в хроме с выноской и без. Да есть кое что, но непонятно почему. Показывает красную точку на
    <div class="left_menu_title">КАТЕГОРИЯ ОБУВИ</div> . При этом что с выноской и без - код одинаковый.
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Какую красную точку? О_о
     
  13. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    В хроме если посмотреть код в sources , там напротив тегов слева стоит красная точка. Видимо хром так показывает проблемные места. Без выноски точка пропадает.
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ох, тяжел ты, милчеловек. Сначала изучи инструментарий, а уже потом пользуйся. В сурсах светятся только CSS и JS, либо файлы с вписанными CSS и JS. На верстку он там не ругается. Ругается на что-то, куда она вперлась. Тег со скриптами не закрытый, например, внутри которого эти дивы поперли, хз.

    В консоли браузера есть сообщения об ошибках? На эту красную точку пробовал мышку наводить, чтобы типс почитать?
    И да, говорил же я - что-то ты ломаешь, своей "выноской". Например, строишь конструкцию типа

    <div>
    <table>
    </div>
    </table>

    не выноска ломает, не пхп, а именно ты.
     
  15. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Короче долго Я мучался. Решил с локалки на хостинг перекинуть. Там все заработало и с выноской и без.
    Если интересно, вот часть того с чем Я ебу_сь уже который день: http://kitras.ru/ks/index.php
    Похоже что у меня на локалке в файле конфигурации или еще где что то не дописано. Что посоветуете друзья?
     
  16. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    для начала освой форумные bbcode. чтобы твой код кто-нибудь читал, оформляй его в
    [code=php]тут твой код[/code]
    очень помогает найти общий язык.
     
  17. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Думал проблему решил. Не тут то было.
    Две одинаковые папки (ks и ks1) . Специально сделал, что бы точно описать проблему о которой писал выше с выноской и без.
    С выноской: http://www.kitras.ru/ks/index.php
    Без выноски: http://www.kitras.ru/ks1/index.php

    Проблемное место слева, где КАТЕГОРИЯ ОБУВИ. Если сделать выноску <div> блоков в отдельные файлы и подключить через include, появляется какой то непонятный отступ. Без выноски отступ пропадает. Ну что здесь может быть? Кусок кода ниже с выноской <div> блоков в отдельные файлы.
    Код (PHP):
    1. <div class="glaw_ramka">
    2.          <div class="main_menu"><img src="images/main_menu.gif"></div>    
    3.          <div class='left_menu'>
    4.              <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/left_menu/left_menu.php'); ?>             
    5.          </div>
    6.          <div class="assortment_view">
    7.              <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); ?>
    8.          </div>
    9. </div>
     
  18. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Ребят, вот вы все здесь профессионалы, как Я полагаю, если уж к вам за помощью обращаются. На мой вопрос с непонятным отступом после выноски кода в отдельный файл и подключения этого файла через include, никто никакого решения, кроме того что Я сам напортачил что то в CSS или в других местах кода в целом не предложил. Вся проблема заключалась в том что подключаемые файлы должны сохранятся без BOM. Элементарно. Когда сохраняешь файл, просто снять галочку там где (Включить подпись юникода BOM) и все. Одна галочка и не более. Решение всей проблемы. Ребят, вы конечно молодцы и спасибо за то что пытаетесь помочь, но хотя бы иногда вдавайтесь в суть вопроса, а не банально что php тут ни причем, да что то там с путями, или неправильно таблицы втыкнуты, во общем ищи сам. Я десять раз наверное написал без выноски работает, с выноской нет. Код один и тот же.
     
  19. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    молодец. опыт сын ошибок трудных. никому не пришло в голову, что можно не знать про BOM )))

    а зачем тебе $_SERVER['DOCUMENT_ROOT'] в include? а если захочется приложение не в корне разместить, а начиная с какой-то папки?

    Добавлено спустя 12 минут 10 секунд:
    если написать
    Код (PHP):
    1. include 'path/to/file';
    то указанный путь будет добавляться ко всем сегментам include_path пока не найдется нужный файл

    если написать
    Код (PHP):
    1. include './path/to/file';
    то include_path уже не при чем. путь считается от "точки входа", т.е. от того php файла, с которого началось выполнение скрипта.

    а если написать
    Код (PHP):
    1. include __DIR__.'/path/to/file';
    то очевидно от папки с текущим файлом.
     
  20. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Да ладно. Никому прям таки не пришло в голову. Скажи еще что ник то специально не писал про BOM и все знали изначально о проблеме ))). Насчет зачем $_SERVER['DOCUMENT_ROOT'] в include. Тут понятное дело что можно просто include('views/layouts/shop.php') или если файл в той же папке include('shop.php') , но не суть. Мнений насчет того как лучше много. По одному из мнений с $_SERVER['DOCUMENT_ROOT'] будет легче серверу, поскольку изначально полный путь указан и не надо искать до попадания. По существу для интернет магазина обуви, где может быть куча башмаков экономия времени будет не лишним, хотя на мой взгляд не так уж критично наверное.
     
  21. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Как то не с того места вы начили оптимизацию.
     
  22. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    я только что написал, как оно на самом деле работает, советую перечитать.
     
  23. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Есть обычная ссылка. <a href='index.php>обычная ссылка</a> . Задача при нажатии на эту ссылку вызвать функцию php без формирования какой либо GET переменной через (?) что было бы очень легко. C яваскрипт все понятно онклик и поехали, а с php как быть. Наводятся мысли что без аякс никак, но может всетаки есть решения по проще?
     
  24. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Эмм... на онклик открыть окно, в котором будет вызван php-скрипт? Что-то я не понимаю, в чем проблема. И чем для вас сложен аякс? Вроде специально для таких вещей и придуман
     
  25. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Нашел решение. Видимо вчера ночью уже башка не варила. Короче вот часть кода:
    Код (PHP):
    1. <a class='brend' onclick = 'location.href = "index.php?brand=<?=f_search_brand($mass_brend[$i]);?>" ' ><?=$mass_brend[$i]?></a>
    Мне просто нужно было сформировать через функцию php несколько переменных через запятую, а потом уже через ссылку из них сформировать GET переменные.