Здравствуйте...делюсь своим горем...Суть в следующем: Сделал меню, пункты которого находятся в ячейке html-таблицы Код (Text): <td align="center" width="15%" height="30%"> <ul id="vert_menu" align="left"> <li align="left"><a href="menu.php?content=perepiska"><span>Переписка</span></a></li> <li align="left"><a href="menu.php?content=technics"><span>Техника</span></a></li> <li align="left"><a href="menu.php?content=documents"><span>Документы</span></a></li> <li align="left"><a href="menu.php?content=bloknotes"><span>Блокноты</span></a></li> </ul> </td> По нажатии на пункт меню, должен подключаться соответствующий php-скрипт, который содержит( функции, запросы к БД, таблицы и т.п.), результат работы подключенного скрипта должен отображаться в другой ячейке той же таблицы, в этой ячейке соответственно написана следующая конструкция для подключения Код (Text): <td rowspan="2" align="center"> <div style="overflow: scroll; height: 100%;"> <?php switch ($_GET['content']){ case 'documents': include "php/documents.php";break; case 'bloknotes': include "php/bloknotes.php";break; case 'technics' : include "php/technics.php";break; case 'perepiska': include "php/perepiska.php";break; } ?> </div> </td> эти скрипты подключаются, НО в них перестают работать все функции( например редактирования БД, добавления записей), хотя если просто подключать скрипты по очереди Код (Text): include "php/perepiska.php"; без Код (Text): switch ($_GET['content']) все эти функции работают. ниже выкладываю один из скриптов(все они однотипны) посмотрите пожалуйста в чем может быть причина, очень нужно, вся работа остановилась((((( Код (Text): <?php ini_set('display_errors', 1); //для отображения ошибок error_reporting(E_ALL & ~E_NOTICE); include "db_connect.php"; mysql_query("set names cp1251"); if (!isset($_GET["action"])) $_GET["action"] = "showlist"; switch ($_GET["action"]) { case "showlist": // Список всех записей в таблице БД show_list(); break; case "addform": // Форма для добавления новой записи get_add_item_form(); break; //case "searchform": // Форма для поиска // get_search_item_form(); //break; case "add": // Добавить новую запись в таблицу БД add_item(); break; case "editform": // Форма для редактирования записи get_edit_item_form(); break; case "update": // Обновить запись в таблице БД update_item(); break; case "delete": // Удалить запись в таблице БД delete_item(); break; case "s": // Поиск записей в таблице БД search_item(); break; default: show_list(); } function to_excel(){ echo '<form name= "excel" action="' . $_SERVER['PHP_SELF'] . '?act=excel" method="POST">'; echo 'Критерий ( ГГГГ.ММ.ДД )<br>'; echo 'C <input type="text" name="date_one" size="10" value="">'; echo 'ПО <input type="text" name="date_two" size="10" value="">'; echo '<input type="submit" name="submit" value="Отчет">'; echo '<input type="reset" name="reset" value="Очистить">'; echo '</form>'; } function searchform(){ echo '<form name="search" action="' . $_SERVER['PHP_SELF'] . '?act=search" method="POST" align=center>'; echo 'Поиск...<br>'; echo '<input type="text" name="code" size="60" value="Введите критерий поиска...">'; echo '<input type="submit" name="submit" value="Поиск">'; echo '<input type="reset" name="reset" value="Очистить">'; echo '</form>'; } // function show_list() {if (isset($_GET["act"])){ switch ($_GET["act"]) { case "excel":to_excel();break; case "search":searchform();break; }} $query = "SELECT technics.id,name_technics.name_techn,code,number, year_create, start_work,time_work,other FROM technics INNER JOIN name_technics ON technics.id_name_techn=name_technics.id WHERE (code LIKE '%".strtoupper($_POST['code'])."%') OR (time_work LIKE '%".strtoupper($_POST['code'])."%')"; $res = mysql_query($query) or die("Запрос ошибочный"); // if (isset($_POST['code'])) echo '<h2 align="center">Техника</h2>'; echo '<table border="1" cellpadding="2" cellspacing="0" align="center">'; echo '<tr><th>ID</th><th>Наименование техники</th><th>Код</th> <th>Номер</th><th>Год выпуска</th><th>Начало эксплуатации</th><th>Наработка</th><th>Примечание</th><th>Ред.</th><th>Удл.</th></tr>'; while ($item = mysql_fetch_array($res)) { echo '<tr>'; echo '<td>' . $item['id'] . '</td>'; echo '<td>' . $item['name_techn'] . '</td>'; echo '<td>' . $item['code'] . '</td>'; echo '<td>' . $item['number'] . '</td>'; echo '<td>' . $item['year_create'] . '</td>'; echo '<td>' . $item['start_work'] . '</td>'; echo '<td>' . $item['time_work'] . '</td>'; echo '<td>' . $item['other'] . '</td>'; echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=editform&id=' . $item['id'] . '">Ред.</a></td>'; echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=delete&id=' . $item['id'] .'">Удл.</a></td>'; echo '</tr>'; } echo '</table>'; } // Функция формирует форму для добавления записи в таблице БД function get_add_item_form() { echo '<h2>Добавить</h2>'; echo '<form name="addform" action="' . $_SERVER['PHP_SELF'] . '?action=add" method="POST">'; echo '<table border=1>'; echo '<tr>'; echo '<td>Наименование техники:</td>'; echo '<td><input type="text" name="name" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Код:</td>'; echo '<td><input type="text" name="code" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Номер:</td>'; echo '<td><input type="text" name="number" value=""/></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Год выпуска:</td>'; echo '<td><input type="text" name="year_create" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Начало эксплуатации:</td>'; echo '<td><input type="text" name="start_work" value=""/></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Наработка:</td>'; echo '<td><input type="text" name="time_work" value="" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Примечание:</td>'; echo '<td><input type="text" name="other" value=""/></td>'; echo '</tr>'; echo '<td colspan=2><input type="submit" value="Сохранить"></td>'; echo '<td><button type="button" onClick="history.back();">Отменить</button></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; } function add_item() { if (!isset($_POST['addform'])) { $name_techn = mysql_escape_string($_POST['name']); $code = mysql_escape_string($_POST['code']); $number = mysql_escape_string($_POST['number']); $year_create = mysql_escape_string($_POST['year_create']); $start_work = mysql_escape_string($_POST['start_work']); $time_work = mysql_escape_string($_POST['time_work']); $other = mysql_escape_string($_POST['other']); if($name_techn=="Т-802") $id_name_techn="1"; else if($name_techn=="М-704") $id_name_techn="2"; else if($name_techn=="ТТ-822") $id_name_techn="3"; else if($name_techn=="М-922") $id_name_techn="4"; else if($name_techn=="М-345") $id_name_techn="5"; else echo "Наименование документа введено не корректно, повторите попытку"; } if ($id_name_techn == "" or $code == "" or $number == "" or $year_create == "" or $start_work == "" or $time_work == "" or $other=="" ) { echo "Необходимо ввести имя - нажмите кнопку Назад и заполните форму еще раз"; exit; } $id_name_techn = addslashes($id_name_techn); $code = addslashes($code); $number = addslashes($number); $year_create = addslashes($year_create); $start_work = addslashes($start_work); $time_work = addslashes($time_work); $other = addslashes($other); $query = "INSERT INTO technics(id_name_techn, code, number, year_create,start_work,time_work,other) VALUES ('".$id_name_techn."','".$code."','".$number ."','".$year_create."','".$start_work ."','".$time_work ."','".$other ."')"; //mysql_query($query); $res = mysql_query($query) or die("Запрос ошибочный"); //echo $query; header('Location: ' . $_SERVER['PHP_SELF']); die(); } // Функция формирует форму для редактирования записи в таблице БД function get_edit_item_form() { echo '<h2>Редактировать</h2>'; $query = 'SELECT id_name_techn, code, number, year_create,start_work,time_work, other FROM technics WHERE id='.$_GET['id']; $res = mysql_query( $query )or die("Запрос ошибочный"); $item = mysql_fetch_array( $res ); //------------------------------------------------------------------------------------ if( $item['id_name_techn']=="1") $name_techn="Т-802"; else if( $item['id_name_techn']=="2") $name_techn="М-704"; else if( $item['id_name_techn']=="3") $name_techn="ТТ-822"; else if( $item['id_name_techn']=="4") $name_techn="М-922"; else if( $item['id_name_techn']=="5") $name_techn="М-345"; //------------------------------------------------------------------------------------- echo '<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id='.$_GET['id'].'" method="POST">'; echo '<table border=1>'; echo '<tr>'; echo '<td>Наименование техники:</td>'; echo '<td><input type="text" name="name" value="'.$name_techn.'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Код:</td>'; echo '<td><input type="text" name="code" value="'. $item['code'] .'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Номер:</td>'; echo '<td><input type="text" name="number" value="'. $item['number'] .'"/></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Год выпуска:</td>'; echo '<td><input type="text" name="year_create" value="'. $item['year_create'] .'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Начало эксплуатации:</td>'; echo '<td><input type="text" name="start_work" value="'. $item['start_work'] .'"/></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Наработка:</td>'; echo '<td><input type="text" name="time_work" value="'. $item['time_work'] .'" /></td>'; echo '</tr>'; echo '<tr>'; echo '<td>Примечание:</td>'; echo '<td><input type="text" name="other" value="'. $item['other'] .'"/></td>'; echo '</tr>'; echo '<td colspan=2><input type="submit" value="Сохранить"></td>'; echo '<td><button type="button" onClick="history.back();">Отменить</button></td>'; echo '</tr>'; echo '</table>'; echo '</form>'; } // Функция обновляет запись в таблице БД function update_item() { $name_techn = mysql_escape_string($_POST['name']); $code = mysql_escape_string($_POST['code']); $number = mysql_escape_string($_POST['number']); $code = mysql_escape_string($_POST['code']); $year_create = mysql_escape_string($_POST['year_create']); $start_work = mysql_escape_string($_POST['start_work']); $time_work = mysql_escape_string($_POST['time_work']); $other = mysql_escape_string($_POST['other']); if($name_techn=="Т-802") $id_name_techn="1"; else if($name_techn=="М-704") $id_name_techn="2"; else if($name_techn=="ТТ-822") $id_name_techn="3"; else if($name_techn=="М-922") $id_name_techn="4"; else if($name_techn=="М-345") $id_name_techn="5"; else echo "Наименование документа введено не корректно, повторите попытку"; $query = "UPDATE technics SET id_name_techn='".$id_name_techn."', code='".$code."',number='".$number."',year_create='".$year_create."', start_work='".$start_work."', time_work='".$time_work."',other='".$other."' WHERE id=".$_GET['id']; $res = mysql_query( $query )or die("Запрос ошибочный"); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } // Функция удаляет запись в таблице БД function delete_item() { $query = "DELETE FROM technics WHERE id=".$_GET['id']; $res = mysql_query( $query )or die("Запрос ошибочный"); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); } ?>
не должно быть разницы. просто указывай пути от корня сайта include "db_connect.php"; ибо внутри этого скрипта include "php/documents.php" вроде как оно будет искать твой db_connect.php в папке php
Позвольте уточнить Код (Text): db_connect.php находится в папке "php" там же лежат и все мои скрипты которые хочу подключать.Зачем от корня?и вот функция Код (Text): function show_list() {if (isset($_GET["act"])){ switch ($_GET["act"]) { case "excel":to_excel();break; case "search":searchform();break; }} $query = "SELECT technics.id,name_technics.name_techn,code,number, year_create, start_work,time_work,other FROM technics INNER JOIN name_technics ON technics.id_name_techn=name_technics.id WHERE (code LIKE '%".strtoupper($_POST['code'])."%') OR (time_work LIKE '%".strtoupper($_POST['code'])."%')"; $res = mysql_query($query) or die("Запрос ошибочный"); // if (isset($_POST['code'])) echo '<h2 align="center">Техника</h2>'; echo '<table border="1" cellpadding="2" cellspacing="0" align="center">'; echo '<tr><th>ID</th><th>Наименование техники</th><th>Код</th> <th>Номер</th><th>Год выпуска</th><th>Начало эксплуатации</th><th>Наработка</th><th>Примечание</th><th>Ред.</th><th>Удл.</th></tr>'; while ($item = mysql_fetch_array($res)) { echo '<tr>'; echo '<td>' . $item['id'] . '</td>'; echo '<td>' . $item['name_techn'] . '</td>'; echo '<td>' . $item['code'] . '</td>'; echo '<td>' . $item['number'] . '</td>'; echo '<td>' . $item['year_create'] . '</td>'; echo '<td>' . $item['start_work'] . '</td>'; echo '<td>' . $item['time_work'] . '</td>'; echo '<td>' . $item['other'] . '</td>'; echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=editform&id=' . $item['id'] . '">Ред.</a></td>'; echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=delete&id=' . $item['id'] .'">Удл.</a></td>'; echo '</tr>'; } echo '</table>'; } работате работает после подключения скрипта т.е. таблица отображается с данными, косяк вылетает когда например хочу отредактировать запись Код (Text): echo '<td><a href="' . $_SERVER['PHP_SELF'] . '?action=editform&id=' . $item['id'] . '">Ред.</a></td>';
нет. =) какие конфликты? это просто переменные. я всё ж думаю, ты с путями где-то промахиваешься. укажи все полные пути, попробуй
Попробуй вот в этих файлах: Код (Text): php/documents.php php/bloknotes.php php/technics.php php/perepiska.php заменить Код (PHP): include "db_connect.php"; на Код (PHP): include dirname(__FILE__) . "/db_connect.php";
спасибо за попытку помочь...ничего пока не изменилось, по-прежнему в подключаемых скриптах не работают функции кроме Код (Text): function show_list() , возможно именно она работает потому что, в подключаемых скриптах есть данная конструкция Код (Text): if (!isset($_GET["action"])) $_GET["action"] = "showlist"; т.е. даже если Код (Text): $_GET["action"] не установлена ей присваивается значение Код (Text): "showlist"; ....исходя из всего этого мне кажется что все крутится вокруг этой конструкции в подключаемых скриптах Код (Text): if (!isset($_GET["action"])) $_GET["action"] = "showlist"; switch ($_GET["action"]) { case "showlist": // Список всех записей в таблице БД show_list(); break; case "addform": // Форма для добавления новой записи get_add_item_form(); break; case "searchform": // Форма для поиска get_search_item_form(); break; case "add": // Добавить новую запись в таблицу БД add_item(); break; case "editform": // Форма для редактирования записи get_edit_item_form(); break; case "update": // Обновить запись в таблице БД update_item(); break; case "delete": // Удалить запись в таблице БД delete_item(); break; case "search": // Поиск записей в таблице БД search_item(); break; default: show_list(); } получается другие не срабатывают....НО ПОЧЕМУ!!!!!!!вроде все же верно....в адресной строке при выборе , например функции создания формы редактирования Код (Text): case "editform": // Форма для редактирования записи get_edit_item_form(); break; отображается следующее т.е. вроде и выбирается но в браузере не отображается((((((Какие еще есть варианты, поделитесь любыми мыслями по поводу этого не знаю уже, что делать помочь больше некому........
Код (PHP): $action = (isset($_GET["action"])) ? $_GET["action"] : "showlist"; switch ($action){ //.... }
вообще-то в таких вещах помогаю "заглушки".. сделай так Код (Text): echo md5($_GET["action"]); и скопируй тупо из строчки Код (Text): case "showlist": // Список всех записей в таблице БД само значение и вставь его тоже в md5() и ещё попробуй var_dump() и посмотри что и как там и там А вообще давай весь код в архиве прикрепляй... Надоело гадать, легче решить
Не вполне понимаю, зачем инклюдить файлы php через switch/case? А напрямую к ним переходить нельзя? Тогда сразу столько проблем уйдет =)
Смотрю твой код... ))))) Всё у тебя работает, вот только поменяй это Код (PHP): $action = (isset($_GET["content"])) ? $_GET["content"] : include "php/bloknotes.php"; на это Код (PHP): $action = (isset($_GET["content"])) ? $_GET["content"] : 'bloknotes'; это не условие и присвоение, а присвоение при условии... Разницу уловил? Смотрю, только начинаешь изучать PHP, поменяй логику в своих кодах.. сначала PHP потом HTML, т.е. сначала формируешь, потом выводишь. Иначе ты через некоторое время спросишь: "Что делать когда у меня ошибка headers already sent by...."
А менять только в скрипте menu.php или и в тех скриптах которые будут подключаться, потому что функции срабатывают только для скрипта bloknotes.php, даже если в данный момент загружен другой скрипт.
да я фиг знает что менять, у меня работает... Просто не используй глобальные переменные ЭТО и тому подобное Код (PHP): if (isset($_GET["action"])) $_GET["action"] = "showlist"; switch ($_GET["action"]) меняй на подобное Код (PHP): if (isset($_GET["action"])) $action = "showlist"; switch ($action) Добавлено спустя 4 минуты 31 секунду: вот только очень странное условие.. ЕСЛИ существует action ТО оно ДОЛЖНО РОВНЯТЬСЯ showlist Иными словами если будет ...?action=excel.. ..?action=search.. ..?action=editform.. ..?action=delete.. то в любом случае ты присваиваешь значение showlist
У Вас точно работают функции (редактирования записей например) именно для того скрипта, который сейчас загружен? Добавлено спустя 2 минуты 52 секунды: там так Код (Text): if (!isset($_GET["action"])) $_GET["action"] = "showlist"; switch ($_GET["action"])