Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Деревья и редактирование данных 
V
    Опции темы
Redstuff
Дата 11.5.2009, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



есть таблица
tree
с полями
id | title | pid
----------------
1  |  a    |  0
2  |  b    |  0
3  |  c    |   0
4  |  a1  |  1
5  |  a2  |  1
6  |  b1  |  2
.....

для вывода всего списка использую:
Код

$result = mysql_query("SELECT * FROM tree ORDER BY title;", $link);
        while($row = mysql_fetch_array($result)){
               echo '<a href="index.php?op=typedoc&id='.$row['id'].'">'.stripslashes($row['title']).'</a>';
        }


для редактирования данных переходим по нужной ссылке, где расположенна форма с текущими данными

Код

<?php 
$result = mysql_query("SELECT * FROM tree WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
?>

<input type="text" name="title" value="<?=htmlspecialchars(stripslashes($row['title']));?>" class="enter" size="79">


тут все порядок, поле title редактируется, но как редактировать правильно поле pid?


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 11.5.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



список select с выборкой источников pid? (родительские страницы, так я понимаю? тогда список всех страниц)
PM MAIL WWW   Вверх
Redstuff
Дата 12.5.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



bars80080, ага делаю список select.  Вся проблема походу в запросе для выборки, активным делает всегда id=1.

Код

<?php
$result = mysql_query("SELECT * FROM tree WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
echo '<select name="pid">';
$result = mysql_query("SELECT id, title, pid FROM tree");
while($row = mysql_fetch_object($result2)) {
   if($row->title == $row['pid']){
      echo "<option selected='selected' value='".$row->id."'>".$row->title."</option>";
   } else {
      echo "<option value='".$row->id."'>".$row->title."</option>";
   }
}
  echo '</select>';
?>



--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 12.5.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



я б на твоём месте посмотрел, что есть в $row->title  и $row['pid']
как я догадываюсь в первом пустая строка, во втором ноль

во-вторых задался бы вопросом, почему к объекту идёт обращение как к массиву. оно видимо прокатывает, но зато путает

а в-третьих, по какому признаку нужно выделить один из пунктов?
PM MAIL WWW   Вверх
Redstuff
Дата 13.5.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



bars80080, вот для простоты без списка

Код

$result = mysql_query("SELECT id, title, pid FROM tree WHERE id= '".$_GET['id']."';", $link);
      $row = mysql_fetch_object($result);
      echo $row->id;         
      echo $row->title;
      echo $row->pid;


Код

6  
b1
2


выделять нужно по pid


т.е. необходимо получить:

поле input: b1
список select:
- _ (пустое, чтобы можно было присваивать значение id=0 для pid)
- a 
- b (selected)
- c
- a1
- a2
- b1
...





--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 13.5.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Если сделать 2 запроса
Код

$result = mysql_query("SELECT id, title, pid FROM tree WHERE id= '".$_GET['id']."';", $link);
$row = mysql_fetch_object($result);
echo $row->id;
echo $row->title;
echo $row->pid;

$result2 = mysql_query("SELECT id, title, pid FROM tree WHERE id = '".$row->pid."';", $link);
$row2 = mysql_fetch_array($result2);
echo $row2['title'];


Код

6  
b1
2
b


но мне кажется это не правильный подход, да и список не получается сделать


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
Redstuff
Дата 13.5.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



список сделал, не знаю только как реализовать пустое поле для того, чтобы присваивать или выводить pid=0
Код

<?php
$sql2 = "SELECT * FROM tree WHERE id = '".$_GET['id']."';";
$result2 = mysql_query($sql2, $link);
$row2 = mysql_fetch_array($result2);

$result3 = mysql_query("SELECT * FROM tree WHERE id = '".$row2['pid']."';", $link);
$row3 = mysql_fetch_array($result3);

echo '<select name="pid">';
$result4 = mysql_query("SELECT id, title, pid FROM tree;");
while($row4 = mysql_fetch_object($result4)){
   if($row3['id'] == $row4->id){
      echo "<option selected='selected' value='".$row3->id."'>".$row3['title']."</option>";
   }
   else{
      echo "<option value='".$row4->id."'>".$row4->title."</option>";
   }
}
echo '</select>';
?>


и хотелось бы код сделать более правильным... 

Это сообщение отредактировал(а) Redstuff - 13.5.2009, 14:08


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 13.5.2009, 14:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



на пути к правильному коду
Код

$sql = 'SELECT id, title, pid FROM tree;';
$r = select_from_db($sql);
$select = formSelect($r, 'pid', array('id','titile'), $row3['id'], 4, true);

echo $select;


/**************************************************************************/
function select_from_db($q, $id = false) {
    $r = mysql_query($q); $n = 0;
    if(!empty($r)) $n = mysql_num_rows($r);
    if($id === true) { for($i = 0; $i < $n; $i++) {
            $a = mysql_fetch_array($r, MYSQL_ASSOC); $s[$a['id']] = $a; }}
    elseif($id) { for($i = 0; $i < $n; $i++) {
            $a = mysql_fetch_array($r, MYSQL_ASSOC); $s[$a[$id]] = $a; }}
    else { for($i = 0; $i < $n; $i++) { $s[$i] = mysql_fetch_array($r, MYSQL_ASSOC); }}
    if(!empty($s)) return $s;
    else return array(); }
function formSelect($itxt, $name = '', $val = array(), $selected = 0, $data = 0, $nullF = false, $atr = '', $optatr = array()) {
    $html = '<select name="'.$name.'" '.$atr.">\r\n";
    if($nullF) { $html .= '<option value="0"> </option>'; }
    if($data == 3) { $start = $itxt; $count = $val[0]; $step = $val[1]; }
    else { $count = count($itxt); }
    for($i = 0; $i < $count; $i++) {
        if($data == 1) { $key = $val[$i]; $txt = $itxt[$i]; }
        elseif($data == 2) { $key = $i; $txt = $itxt[$i]; }
        elseif($data == 3) { $txt = $key = ($start + ($step*$i)); }
        elseif($data == 4) { $key = $itxt[$i][$val[0]]; $txt = $itxt[$i][$val[1]]; }
        else { $key = $txt = $itxt[$i]; }
        if($selected == $key) { $sel = 'selected'; } else { $sel = ''; }
        if(!empty($optatr[$i])) { $opt = $optatr[$i]; } else { $opt = ''; }
        $html .= '<option value="'.$key.'" '.$sel.$opt.'>'.$txt."</option>\r\n";
    }
    $html .= "</select>\r\n";
    return $html;
}

PM MAIL WWW   Вверх
Redstuff
Дата 16.5.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Команда REDSTUFF
**


Профиль
Группа: Участник
Сообщений: 497
Регистрация: 27.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



bars80080, спасибо)


--------------------
ГОСТы, СНиПы, ТУ...
<реклама удалена администрацией форума>
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.