[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передавать ID в DIV
Kukaramba
Сделал админ панель на основе DIV для редактирования материалов, взятых из MySQL. Выглядит это так - есть DIV меню и DIV контейнер, в котором и отображаются страницы выбранные из меню.
При попытке редактирования материала он просто ничего не делает а пересылает на главную страницу. Подозреваю то, что он не видит id, который передается. Есть решение?



Спустя 3 минуты, 14 секунд (13.08.2012 - 09:38) Игорь_Vasinsky написал(а):
а причём здесь id ??? с атрибутами элементов в DOM работает JS

если ты на аяксе или JS, то раздел форума выбран не верно. + всегда можно посмотреть есть ли id или нет: alert(id);

Спустя 14 минут, 57 секунд (13.08.2012 - 09:53) Kukaramba написал(а):
через echo смотрю - в редакторе формы есть id, но редактирования материала не происходит.

Спустя 3 минуты, 30 секунд (13.08.2012 - 09:57) sergeiss написал(а):
Kukaramba - ты, вроде как, уже не первый год на сайте... Должен понять уже давно, что без кода никто ничего толком не скажет, только флудить будут и гадать на кофейной гуще smile.gif Так что показывай свой код, ту часть, где проблемы.

Спустя 4 минуты, 50 секунд (13.08.2012 - 10:01) Kukaramba написал(а):
Виноват) Думал что это простенько и жизненно)

Сама админка. Сделана в дримвивере - готовый вариант.
Свернутый текст


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>
Документ без названия</title>
<style
type="text/css">
<!--
body {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #666666;
margin: 0; /* рекомендуется использовать нулевое значение поля и отступа элемента body, чтобы учесть различные настройки по умолчанию для браузеров. */
padding: 0;
text-align: center; /* выравнивает контейнер по центру в браузерах Internet Explorer 5*. Затем для текста задается по умолчанию выравнивание по левому краю в селекторе #container. */
color: #000000;
}
.twoColHybLtHdr #container {
width: 80%; /* будет создан контейнер размером 80% от ширины окна браузера. */
background: #FFFFFF;
margin: 0 auto; /* автоматические поля (совместно с шириной) выравнивают страницу по центру. */
border: 1px solid #000000;
text-align: left; /* переопределяет свойство text-align: выравнивание элемента body по центру. */
}
.twoColHybLtHdr #header {
background: #DDDDDD;
padding: 0 10px; /* это значение отступа соответствует выравниванию по левому краю элементов в блоках div, расположенных под ним. Если в элементе #header вместо текста используется изображение, отступ можно удалить. */
}
.twoColHybLtHdr #header h1 {
margin: 0; /* нулевое значение поля последнего элемента в #header div позволит избежать сжатия полей, то есть появления необъяснимого пространства между элементами div. Если вокруг элемента div есть граница, нет необходимости устанавливать это значение, поскольку граница также предотвращает сжатие полей. */
padding: 10px 0; /* использование отступа вместо поля позволит сохранить расстояние между элементом и границами div. */
}

/* Советы по элементу sidebar1:
1. Поскольку значения устанавливаются в относительных единицах, не рекомендуется использовать отступ для боковой панели. Он будет добавлен к общей ширине для совместимых со стандартами браузеров, создавая таким образом неизвестную действительную ширину.
2. Поскольку значение боковой панели задается в эмах, ее ширина будет изменяться в зависимости от размеров шрифта, заданных по умолчанию.
3. Пространство между краем блока div и элементами внутри него можно создать путем добавления правого и левого полей к этим элементам, как показано в правиле ".twoColHybLtHdr #sidebar1 p".
*/

.twoColHybLtHdr #sidebar1 {
float: left;
width: 12em; /* поскольку этот элемент является обтекаемым, необходимо задать ширину. */
background: #EBEBEB; /* цвет фона будет отображаться только на отрезке содержимого в колонке, но не дальше. */
padding: 15px 0; /* верхний и нижний отступы создают визуальное пространство в этом элементе div. */
}
.twoColHybLtHdr #sidebar1 h3, .twoColHybLtHdr #sidebar1 p {
margin-left: 10px; /* левое и правое поля нужно задать для каждого элемента, который будет помещен в боковые колонки. */
margin-right: 10px;
}

/* Советы по элементу mainContent:
1. Пространство между элементами mainContent и sidebar1 создается путем добавления левого поля к элементу mainContent div. Пространство этой колонки сохранится, несмотря на объем содержимого элемента sidebar1 div. Это левое поле можно удалить, чтобы текст элемента #mainContent div заполнял пространство #sidebar1, если содержимое элемента #sidebar1 закончится.
2. Помните о возможном выпадении потока (выпадение из боковой панели необтекаемой области mainContent) при помещении в блок mainContent div элемента, который шире этой панели. При использовании гибридного макета (общая ширина в процентах и боковая панель в эмах), возможно, не получится точно вычислить доступную ширину. Если размер шрифта, установленный пользователем, превышает средний размер, элемент sidebar div получится шире, но для элемента mainContent div останется меньше места. Учитывайте это ограничение особенно в том случае, если клиент добавляет содержимое с помощью продукта Contribute.
3. В условном комментарии к Internet Explorer ниже свойство zoom используется для присвоения элементу mainContent значения "hasLayout". Это может предотвратить несколько специфичных для Internet Explorer ошибок.
*/

.twoColHybLtHdr #mainContent {
margin: 0 20px 0 13em; /* размер правого поля можно задать в процентах или пикселах. Данное значение создает пространство с правой стороны страницы. */
}
.twoColHybLtHdr #footer {
padding: 0 10px; /* это значение отступа соответствует выравниванию по левому краю элементов в блоках div, расположенных над ним. */
background:#DDDDDD;
}
.twoColHybLtHdr #footer p {
margin: 0; /* нулевые поля первого элемента в нижнем колонтитуле позволят избежать возможного сжатия полей, то есть появления пространства между элементами div. */
padding: 10px 0; /* добавление отступа к данному элементу создаст пробел (так, как он был бы создан с помощью поля), не вызывая при этом проблемы сжатия полей. */
}

/* Прочие классы для повторного использования */
.fltrt { /* этот класс можно использовать для обтекания элемента справа на странице. Обтекаемый элемент должен предшествовать элементу, рядом с которым он должен размещаться на странице. */
float: right;
margin-left: 8px;
}
.fltlft { /* этот класс можно использовать для обтекания элемента слева на странице. */
float: left;
margin-right: 8px;
}
.clearfloat { /* этот класс нужно применять к элементу div или break; он должен быть последним элементом перед концом контейнера, который должен полностью вмещать поток. */
clear:both;
height:0;
font-size: 1px;
line-height: 0px;
}
-->
</style><!--[if IE]> <style type="text/css"> /* поместите в этом условном комментарии исправления CSS для всех версий браузера Internet Explorer. */ .twoColHybLtHdr #sidebar1 { padding-top: 30px; } .twoColHybLtHdr #mainContent { zoom: 1; padding-top: 15px; } /* указанное выше собственное свойство zoom задает для браузера Internet Explorer значение "hasLayout", которое может понадобиться для предотвращения нескольких ошибок. */ </style> <![endif]--></head>

<body
class="twoColHybLtHdr">

<?php

include '../scripts/admin_menu_script_ajax.php';
?>

<div
id="container">
<div
id="header">
<h1>
Админка</h1>
<!-- end #header --></div>
<div
id="sidebar1">
<h3>
Меню</h3>

<p><a
href="javascript:ajaxpage('article.php', 'mainContent');">Материалы</a></p>
<p>
Группы</p>
<p>
Цвет фона в данном элементе div будет отображаться только на отрезке содержимого. Чтобы вместо этого использовать разделительную линию, установите границу с левой стороны элемента #mainContent div, если в нем всегда будет размещаться больше содержимого, чем в элементе #sidebar1 div. </p>
<p>
 </p>
<!-- end #sidebar1 --></div>
<div
id="mainContent">
<h1>
Основное содержимое </h1>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio. Donec et ipsum et sapien vehicula nonummy. Suspendisse potenti. Fusce varius urna id quam. Sed neque mi, varius eget, tincidunt nec, suscipit id, libero. In eget purus. Vestibulum ut nisl. Donec eu mi sed turpis feugiat feugiat. Integer turpis arcu, pellentesque eget, cursus et, fermentum ut, sapien. Fusce metus mi, eleifend sollicitudin, molestie id, varius et, nibh. Donec nec libero.</p>
<h2>
Заголовок второго уровня </h2>
<p>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio.</p>
<!-- end #mainContent --></div>
<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --> <br class="clearfloat" />
<div
id="footer">
<p>
Нижний колонтитул</p>
<!-- end #footer --></div>
<!-- end #container --></div>
</body>
</html>




Страница 1
Свернутый текст


<html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
title>Список материалов</title>
</
head>
<
body>
<?php
require "db_connect.php";
include '../scripts/admin_menu_script_ajax.php';
$s1='"javascript:ajaxpage(';
$s2='"';
$s3="'";

$query = "SELECT menu.id,material.id,name,material.group_id,menu.title FROM material,menu WHERE material.group_id=menu.id";
$res = mysql_query($query);

echo '<table border=2 width=60% align=center>';
echo '<tr>
<td align=center>id</td>
<td align=center>Название</td>
<td align=center>Группа</td>
</tr>'
;

while($row = mysql_fetch_array($res))
{
echo '<tr>';
echo '<td align=center>';
echo $row['id'];
echo '</td>';
echo '<td align=left>';
echo "<a href=",$s2,"javascript:ajaxpage('edit_art.php?art_id=",$row['id'],"', 'mainContent');",$s2,">",$row['name'],"</a>";
echo '</td>';
echo '<td align=left>';
echo $row['title'];
echo '</td>';

echo '<td align=left>';
echo "<a href=",$s2,"javascript:ajaxpage('edit_art.php?art_id=",$row['id'],"', 'mainContent');",$s2,">Редактировать</a>";
echo '</td>';
echo '<td align=left>';
echo "<a href=edit_art.php?art_id=".$row['id'].">Удалить</a>";
echo '</td>';

echo '</tr>';
}
echo '</table>';
?>

</body>
</
html>



Сама форма редактора_1

Свернутый текст


<!DOCTYPE html>
<
html>
<
head>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<
title>Редактирование статей</title>
<
script type="text/javascript" src="../fckeditor/fckeditor.js"></script>
</
head>
<
body>
<?php
include ('db_conn.php');
$art_id = $_GET['art_id'];

if(isset($_POST['edit_material_save']) && $_POST['edit_material_save']=='go'){
$up_name = addslashes($_POST['name']);
$up_group = addslashes($_POST['group_id']);
$up_video = addslashes($_POST['video_link']);
$up_annotation = addslashes($_POST['annotation']);
$up_contact_info = addslashes($_POST['contact_info']);

$upd = "UPDATE `material` SET
`name` = '
$up_name',
`group_id` = '
$up_group',
`video_link` = '
$up_video',
`annotation` = '
$up_annotation',
`contact_info` = '
$up_contact_info'
WHERE `id`='
$art_id'";
$query = mysql_query($upd);
if(!$query){
echo '<p>Не удалось отредактировать!</p>';
}
else{
echo '<p>Данные успешно отредактированы!</p>';
}
}


echo '<h3>Редактирование материала <b>ID: '.$art_id.'</b></h3>';
$sel = "SELECT * FROM `material` WHERE `id` = '$art_id' LIMIT 1";
$query = mysql_query($sel);
if(!$query){
echo 'Не удалось выбрать данные из таблицы БД...';
}
else{
if(mysql_num_rows($query)>0){
$res = mysql_fetch_array($query);
$name = $res['name'];
$annotation = $res['annotation'];
$contact_info = $res['contact_info'];
$group_id = $res['group_id'];
$video_link = $res['video_link'];
}
}


include ('form_edit_art.php');
?>
</body>
</
html>



Подключаемая форма вывода/редактирования
Свернутый текст


<form action="" method="post">
<
label>Название: <input type="text" name="name" size="30" value="<?php echo $name;?>" /></label><br />

<
label>Видео: <input type="text" name="video_link" size="30" value="<?php echo $video_link;?>" /></label><br />

<
label>Группа
<select name="group_id" id="group_id">

<?php

include ('db_connect.php');
$query = "SELECT group_id,id FROM material WHERE id=$art_id";
$res = mysql_query($query);
while($row = mysql_fetch_array($res))
{
$art_group_id=$row['group_id'];
}
?>

<?php

$query = "SELECT id,title FROM menu";
$res = mysql_query($query);
while($row = mysql_fetch_array($res))
{
if ($row['id']==$art_group_id) {
echo "<option value=".$row['id']." selected>".$row['title']."</option>";
}else{
echo "<option value=".$row['id'].">".$row['title']."</option>"; }
}

?>
</select>
</
label><br />


<
label>Аннотация: </label>
<?php
include_once('../fckeditor/fckeditor.php');
$oFCKeditor = new FCKeditor('annotation');
$oFCKeditor->Value = $annotation;
$oFCKeditor->Width = '60%';
$oFCKeditor->Height = '200';
$oFCKeditor->ToolbarSet= 'Default';
$oFCKeditor->Create();
?>
<label>Контактная информация: </label>
<?php
include_once('../fckeditor/fckeditor.php');
$oFCKeditor = new FCKeditor('contact_info');
$oFCKeditor->Value = $contact_info;
$oFCKeditor->Width = '60%';
$oFCKeditor->Height = '200';
$oFCKeditor->ToolbarSet= 'Default';
$oFCKeditor->Create();
?>
<input type="hidden" name="edit_material_save" value="go" />
<
input type="submit" value="Сохранить" />
</
form>




Спустя 49 секунд (13.08.2012 - 10:02) Kukaramba написал(а):
Выдаю все) Так как сталкиваюсь с проектированием админки впервые и хотелось все не на фреймах построить а на дивах. Строго не судите)
Суть такова - загружается административная страница. Слева меню, справа - область контейнера. Нажимаю на материалы - он ставит в контейнер страницу 1. В ней выбираем из списка статью для редактирования и нас бросает на форму редактирования с подключаемой к ней внешней формой. Вот как то так. Интересно что на третьем шаге, при редактировании в форме - он пишет id материала. Но по нажатию кнопки Сохранить - уходит обратно на страницу админки ничего не сохраняя.

Спустя 7 минут, 8 секунд (13.08.2012 - 10:09) Игорь_Vasinsky написал(а):
очень рад что проект на на 100500 страниц.


достаточно показать проблемный участок + откомментировать что работает не так как надо.

Спустя 8 минут, 2 секунды (13.08.2012 - 10:17) Kukaramba написал(а):
Вот в том то и проблема что не пойму где этот участок проблемный. Выше описал что происходит. Уже по 10 кругу все пересмотрел. Не могу углядеть в чем проблема.

Спустя 2 минуты, 41 секунда (13.08.2012 - 10:20) Игорь_Vasinsky написал(а):
где то div с id нужным?

и как проверяешь этот id?

сдается мне что

а причём здесь id ??? с атрибутами элементов в DOM работает JS

если ты на аяксе или JS, то раздел форума выбран не верно. + всегда можно посмотреть есть ли id или нет: alert(id);

Спустя 29 минут, 26 секунд (13.08.2012 - 10:50) Kukaramba написал(а):
Похоже что на форме - кнопка сохранить отправляет форму не туда, куда нужно.

Спустя 3 минуты, 40 секунд (13.08.2012 - 10:53) johniek_comp написал(а):
Цитата
Сделал админку на основе div


дальше не читал...

Спустя 49 минут, 42 секунды (13.08.2012 - 11:43) Kukaramba написал(а):
Как я могу на кнопку Сохранить назначить адрес этой же страницы для обработки?

Спустя 11 минут, 7 секунд (13.08.2012 - 11:54) Игорь_Vasinsky написал(а):
привязать обработчик к name submit

и потом

if(isset($_POST['name_of_submit']))
{
//обрабатываешь
}

Спустя 1 час, 41 минута, 57 секунд (13.08.2012 - 13:36) Kukaramba написал(а):
Спасибо. Думал обработать форму по ссылке на нее же с данными, но не получилось. Видимо действительно нужно поднять тему на jscript.

Спустя 1 день, 1 час, 41 минута, 1 секунда (14.08.2012 - 15:17) Kukaramba написал(а):
Попытался. В итоге плюнул на все и сделал все через фреймы. Все теперь замечательно работает, хоть и не так красиво.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.