Форум Рідного Міста

Питання до PHP програмістів

Ihor Byra - 9-10-2003 у 11:21

Попросили мене зробити один сайт в PHP. А крім цього вони ще захотіли щоб сторінки відображалися таким способом: http://www.моя.адреса.com/index.php?action=Guestbook

Я ніби все роблю правильно, але тільки коли переходити на іншу сторінку меню не міняється, а просто добавляється під меню сторінки index.php. :(

Якщо хтось з вас би міг - то напишіть мені правильний PHP код.

Тільки це не повинно бути в класах, бо там занадто багато інформації, щоб на кожну робити свій клас. :(

marco - 9-10-2003 у 13:56

Наскільки я зрозумів питання, то в файлі index.php треба зробити обробку змінної action і в саму сторінку включати відповідний контент.

fish - 9-10-2003 у 15:13

не дуже добре зрозуміла запитання... Якщо тобі треба десь отакого типу, як тут http://www.zsu.zp.ua/99/sh/main.php?item=news то, може, зумію допомогти.

marco - 9-10-2003 у 19:42

Цитата:
Першим відправив користувач Iggorini
Попросили мене зробити один сайт в PHP. А крім цього вони ще захотіли щоб сторінки відображалися таким способом: http://www.моя.адреса.com/index.php?action=Guestbook

Якщо хтось з вас би міг - то напишіть мені правильний PHP код.


OK. Код найпростішого варіанту:

на початку файлу index.php
<?php
// Define content
switch ($action) {
case 'about': $content="./about.php"; $title="About us"; break;
case 'services': $content="./services.php"; $title="Our servicesї"; break;
case 'guestbook': $content="./guestbook.php"; $title="Sign our Guestbook"; break;
case 'contact': $content="./contact.php"; $title="Contact"; break;
default: $content="./main.php"; $title="www.моя.адреса.com"; break;
?>
в тому місці дефолтного темплейту сайту, де має бути змінний контент вставляємо його через include

<!--begin content column-->
<?php include $content; ?>
<!--end content column-->

Або зовсім простий, але менш коректний і гнучкий варіант:
<?php
if (isset($action)) {
$content=$action.'.php' }
else {
$content='main.php';}

include $content;
?>

А взагалі-то, як вже згадувалось тут на форумі урл index.php?action=Guestbook не є гарним з огляду на індексацію сайту пошуковими машинами. Значно краще робити це в такий спосіб
http://www.моя.адреса.com/guestbook
http://www.моя.адреса.com/services
http://www.моя.адреса.com/contact
а тих що "так захотіли" треба переконати, що вони неправі.

так можна зробити і описаним вище способом. Як? Це на домашнє завдання ;)

Андрій Пелещишин - 9-10-2003 у 20:09

Цитата:
Першим відправив користувач marco

так можна зробити і описаним вище способом. Як? Це на домашнє завдання ;)


А є така магічна штука, як RewriteEngine

marco - 9-10-2003 у 20:53

Цитата:
Першим відправив користувач Андрій Пелещишин
А є така магічна штука, як RewriteEngine


Так, але тут можна обійтися і без rewrite.
Окрім того, не всі хостинг провайдери дозволяють локальний .hatccess

Андрій Пелещишин - 9-10-2003 у 23:05

2 marco
Можна, чого ж ні. Можна і 404 оборобляти. І дефолтну сторінку визначати. Але і так і так потрібен htaccess. А може
ще щось, підкажіть як без htaccess.

А ну його, хостера без htaccess

Але РеврітеЕнжина - найелегантніше

Ihor Byra - 10-10-2003 у 11:33

to fish

--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Якщо тобі треба десь отакого типу, як тут http://www.zsu.zp.ua/99/sh/main.php?item=news то, може, зумію допомогти.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

Так саме так мені треба і зробити

Ihor Byra - 10-10-2003 у 11:38

Всім дякую за допомогу. Буду пробувати всі варіанти, які ви мені порадили

fish - 10-10-2003 у 12:13

ну то влаштоване просто. Робиться файл-шаблон index.php де змінюватиметься тільки текстова частина. І робиться кілька текстових (або htm-) файликів з назвами news.txt, foto.txt Посилання так і прописуються: index.php?item=news index.php?item=foto а в місці, де має відображатися інформаційний блок просто вставляється <?php include('$item.txt' ) ?>

Може круті майстри то й мудріше роблять, я початківець...

Ihor Byra - 10-10-2003 у 12:29

to fish

Та ні це мені не підходить. Одна функція include() не зможе зробити цього всього.
Та всеодно дякую за пораду

fish - 10-10-2003 у 12:35

то я ж і питала, чи тобі треба так, як там і чи того досить.