Всем привет. Появилась какая то проблема на пустом месте из ничего. Есть главный файл 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>
Код (PHP): include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); Замени на echo($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); 100% проблема в путях!
Если заменить на echo , то на экран выводятся просто пути C:/Apache2/htdocs/ks/views/left_menu/left_menu.php C:/Apache2/htdocs/ks/views/pages/index.php
Включаем логику. Если посоветовали вывести пути, то..? Надо скопипастить и проверить, валидные ли они. Далее, в браузере проверь пути у CSS все ли подгрузилось. И так далее. CSS не может "съехать и-за пхп". ПХП никак не связан с браузером. Он отдает не страницу красивую с картинками и стилями, а пачку текста, только и всего. Кривые ссылки, битые пути - все на твоей совести. Пых прописал ровно то, что ты указал.
Проверить в браузере. HTML код страницы просмотреть? Там все нормально, один в один как есть и если все правильно отображается когда без выноски, то уж точно css подключается и работает.
Я уже не могу. Наверное 1000 вариантов перепробовал. Да же <div style ="......"> уже на прямую в блок тыкал. Ну что только не делал. Все доктайпы перепробовал. Не выносишь работает, выносишь не работает. Сам понимаю что php тут ни причем. Не знаю что делать.
Смотри, есть первый блок из тех двух о которых писал ранее <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); }
Ты ведь в ресурсах страницы проверял все подключаемые файлы, да? С учетом порядка подключения стилей? Добавлено спустя 2 минуты 54 секунды: И, блин, сравни уже код страницы в браузере БЕЗ выноски и С ВЫНОСКОЙ. Поймешь, что не так. Не саму страницу, не формочки с картинками, а код ее. Не интерпретированный уже браузером, а исходный - это немного разные вещи. В хроме в девтулах, вкладка network, открой ее и обнови свою страницу. Потом выбери строку, содержащую ответ сервера, погляди preview. Вот там чистый нераспарсенный HTMl будет. Либо в ресурсах ищи.
Проверил в хроме с выноской и без. Да есть кое что, но непонятно почему. Показывает красную точку на <div class="left_menu_title">КАТЕГОРИЯ ОБУВИ</div> . При этом что с выноской и без - код одинаковый.
В хроме если посмотреть код в sources , там напротив тегов слева стоит красная точка. Видимо хром так показывает проблемные места. Без выноски точка пропадает.
Ох, тяжел ты, милчеловек. Сначала изучи инструментарий, а уже потом пользуйся. В сурсах светятся только CSS и JS, либо файлы с вписанными CSS и JS. На верстку он там не ругается. Ругается на что-то, куда она вперлась. Тег со скриптами не закрытый, например, внутри которого эти дивы поперли, хз. В консоли браузера есть сообщения об ошибках? На эту красную точку пробовал мышку наводить, чтобы типс почитать? И да, говорил же я - что-то ты ломаешь, своей "выноской". Например, строишь конструкцию типа <div> <table> </div> </table> не выноска ломает, не пхп, а именно ты.
Короче долго Я мучался. Решил с локалки на хостинг перекинуть. Там все заработало и с выноской и без. Если интересно, вот часть того с чем Я ебу_сь уже который день: http://kitras.ru/ks/index.php Похоже что у меня на локалке в файле конфигурации или еще где что то не дописано. Что посоветуете друзья?
для начала освой форумные bbcode. чтобы твой код кто-нибудь читал, оформляй его в [code=php]тут твой код[/code] очень помогает найти общий язык.
Думал проблему решил. Не тут то было. Две одинаковые папки (ks и ks1) . Специально сделал, что бы точно описать проблему о которой писал выше с выноской и без. С выноской: http://www.kitras.ru/ks/index.php Без выноски: http://www.kitras.ru/ks1/index.php Проблемное место слева, где КАТЕГОРИЯ ОБУВИ. Если сделать выноску <div> блоков в отдельные файлы и подключить через include, появляется какой то непонятный отступ. Без выноски отступ пропадает. Ну что здесь может быть? Кусок кода ниже с выноской <div> блоков в отдельные файлы. Код (PHP): <div class="glaw_ramka"> <div class="main_menu"><img src="images/main_menu.gif"></div> <div class='left_menu'> <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/left_menu/left_menu.php'); ?> </div> <div class="assortment_view"> <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); ?> </div> </div>
Ребят, вот вы все здесь профессионалы, как Я полагаю, если уж к вам за помощью обращаются. На мой вопрос с непонятным отступом после выноски кода в отдельный файл и подключения этого файла через include, никто никакого решения, кроме того что Я сам напортачил что то в CSS или в других местах кода в целом не предложил. Вся проблема заключалась в том что подключаемые файлы должны сохранятся без BOM. Элементарно. Когда сохраняешь файл, просто снять галочку там где (Включить подпись юникода BOM) и все. Одна галочка и не более. Решение всей проблемы. Ребят, вы конечно молодцы и спасибо за то что пытаетесь помочь, но хотя бы иногда вдавайтесь в суть вопроса, а не банально что php тут ни причем, да что то там с путями, или неправильно таблицы втыкнуты, во общем ищи сам. Я десять раз наверное написал без выноски работает, с выноской нет. Код один и тот же.
молодец. опыт сын ошибок трудных. никому не пришло в голову, что можно не знать про BOM ))) а зачем тебе $_SERVER['DOCUMENT_ROOT'] в include? а если захочется приложение не в корне разместить, а начиная с какой-то папки? Добавлено спустя 12 минут 10 секунд: если написать Код (PHP): include 'path/to/file'; то указанный путь будет добавляться ко всем сегментам include_path пока не найдется нужный файл если написать Код (PHP): include './path/to/file'; то include_path уже не при чем. путь считается от "точки входа", т.е. от того php файла, с которого началось выполнение скрипта. а если написать Код (PHP): include __DIR__.'/path/to/file'; то очевидно от папки с текущим файлом.
Да ладно. Никому прям таки не пришло в голову. Скажи еще что ник то специально не писал про BOM и все знали изначально о проблеме ))). Насчет зачем $_SERVER['DOCUMENT_ROOT'] в include. Тут понятное дело что можно просто include('views/layouts/shop.php') или если файл в той же папке include('shop.php') , но не суть. Мнений насчет того как лучше много. По одному из мнений с $_SERVER['DOCUMENT_ROOT'] будет легче серверу, поскольку изначально полный путь указан и не надо искать до попадания. По существу для интернет магазина обуви, где может быть куча башмаков экономия времени будет не лишним, хотя на мой взгляд не так уж критично наверное.
Есть обычная ссылка. <a href='index.php>обычная ссылка</a> . Задача при нажатии на эту ссылку вызвать функцию php без формирования какой либо GET переменной через (?) что было бы очень легко. C яваскрипт все понятно онклик и поехали, а с php как быть. Наводятся мысли что без аякс никак, но может всетаки есть решения по проще?
Эмм... на онклик открыть окно, в котором будет вызван php-скрипт? Что-то я не понимаю, в чем проблема. И чем для вас сложен аякс? Вроде специально для таких вещей и придуман
Нашел решение. Видимо вчера ночью уже башка не варила. Короче вот часть кода: Код (PHP): <a class='brend' onclick = 'location.href = "index.php?brand=<?=f_search_brand($mass_brend[$i]);?>" ' ><?=$mass_brend[$i]?></a> Мне просто нужно было сформировать через функцию php несколько переменных через запятую, а потом уже через ссылку из них сформировать GET переменные.