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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> дерево php&mysql, вывод и внесения новых элементов в ветки 
V
    Опции темы
godvinn
Дата 9.7.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



Доброго времени суток.
Есть функция обработки дерева :
Код

function ShowArrayWood($ParentID) {  
    global $array; 
    if(!isset($array[$ParentID])) return; 
    echo "<ul>\n"; 
    foreach($array[$ParentID] as $item) { 

     echo "<li>"; 
        echo $item["title"];
        echo "&nbsp;&nbsp;[******]&nbsp;&nbsp;";
          echo '<a href="createform.php?parentID='.$item["parentID"]."\">CREATE</a>";
            echo "&nbsp;|&nbsp;";
            arrayID = array($item['id']);
            ShowArrayWood($item["id"]); 
        echo "</li>"; 
    } 
    echo("</ul>"); 
} 

$array = array(); 
      echo '<a href="createwoodform.php">CREATE</a>';  //линк для начального заполнения дерева 
$query="SELECT id, parentID, title FROM test ORDER BY parentID"; 
$result=mysql_query($query, $link); 
    while ($row = mysql_fetch_assoc($result)) { 
        $array[$row['parentID']][] = $row; 
    } 
mysql_close($link);  

ShowArrayWood(0);


[/code]
линк для начального заполнения дерева:
Код

<html>
<head>
    <title></title>
</head>
<body>
<form  action="createWood.php" method="get">
<input type="hidden" name="id" />
<input type="text" name="parentID"  />
<input type="text" name="title" size="30" />
<input type="submit" value="SUBMIT" />
</form>
</body>

createWood.php
Код

<?php
include( "db.php" ); 
    
    $id = $_GET['id'];
    $idP = $_GET['parentID'];
    $title = $_GET['title'];    
    mysql_query("SET NAMES cp1251");
    $query = mysql_query("INSERT INTO test VALUES('$id', '$idP', '$title')");

if ($query == true)
{
    header("Location: http://localhost/index.php");
    exit;
}
else
{
    echo "Произошла ошибка при создании дерева <br />";
    echo "<a href='http://localhost/index.php'>Попробуйте перейти по ссылке и попытатся удалить еще раз</a>";
}
?>

когда вношу данные вручную в бд и присваиваю каждому parentID соответствующее значение вывод работает как только начинаю вносить данные через форму вообще  работает, как сделать чтобы в каждый выбранный раздел вносились соответствующее данные через форму  ?* 

Это сообщение отредактировал(а) godvinn - 9.7.2008, 12:23


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



при чем здесь вывод дерева? с ним у тебя проблем, вроде, нет?
когда вносишь данные через форму - работает или нет? и если работает, то в чем вопрос?

задай вопрос еще раз, и более связно.
PM   Вверх
godvinn
Дата 9.7.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



проблема состоит в том чтобы можно было в БД(когда пустая таблица в БД) заполнить данными ее через форму? и потом сделать вывод дерева?
допустим у нас есть дерево 


       Диски
              СD
                  DVD 
              CD-RW
           
       языки программирования
                 С
                     С++
                     php:
                          - php3
                          - php4
                          - php5
как сделать вывод такого дерева, после заполнения через форму*?

если все вручную заполнять то все работает. таблица в бд:

id
parentID
title

сортирую весь вывод дерева по parentID
                    


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



как-как. обычно. 
вывести ты дерево можешь? если не можешь, то отправляйся в топики про деревья, которых на этом форуме куча.
если можешь - выодишь. 
каждую категорию - ссылкой. на форму. в ссылке передаешь ид категории. который пишешь в форме в скрытое поле.
и добавляешь обычным порядком
PM   Вверх
godvinn
Дата 9.7.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



вывести ты дерево можешь?   
                          вывести могу.

 
ссылке передаешь ид категории -  тоесть parentID?

как заполнить  в БД(когда пустая таблица в БД)  данными ее через форму?
<html>
<head>
    <title></title>
</head>
<body>
<form  action="createWood.php" method="get">
<input type="hidden" name="id" />
<input type="text" name="parentID"  />
<input type="text" name="title" size="30" />
<input type="submit" value="SUBMIT" />
</form>
</body>

тоесть надо для каждому PatentID вводить нужное число по которому потом будет обращаться отдельная категория? 



--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



блин. зачем что-то вводить?
Это PARENT id! У новой категоррии есть parent? вот и бери его id

Добавлено через 12 минут и 2 секунды
дя новых корневых категорий, разумеется, должна быть отдельная ссылка, в которой передается ноль
PM   Вверх
godvinn
Дата 9.7.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



все получилось. 
а как сделать чтобы вся ветка удалялась?
   Диски
              СD
               DVD 
              CD-RW
           
   Языки программирования
               С
               С++
                php:
                     - php3
                     - php4
                     - php5
чтобы если мы хотим  удалить каталог php удалялось все с бд. 
а то у меня оно на сайте не отображается а в БД хранится?
ссылка на удаление выглядит вот так: 
echo '<a href="delete.php?ID='.$item["id"]."\">delete</a>";
пробывал по parentID удается все подразделы и каталоги.
скрипт на удаление 
Код


    
     $id = $_GET['ID'];
     
    $query = mysql_query("DELETE FROM test WHERE ID= '$id'", $link);

if ($query == true)
{
    header("Location: http://localhost/index.php");
    exit;
}
else
{
    
    echo "<a href='http://localhost/index.php'>Попробуйте перейти по ссылке и попытаться удалить еще раз</a>";
}









--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



удалять рекурсивно, начиная с детей, и поднимаясь к родителям
то есть, функция, которая делает запрос строк с определенным parent id, и если такие строки есть, вызывает сама себя с их id, а если нет - удаляет текущую.


Это сообщение отредактировал(а) Feldmarschall - 9.7.2008, 15:02
PM   Вверх
godvinn
Дата 9.7.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



"Feldmarschal" - а не подскажешь ресурс какойто по поводу удаления  


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



нет, не подскажу. я не знаю таких. как не знаю, к примеру, отдельных ресурсов по умножению или извлечению квадратного корня.
по поводу удпаления или по поводу рекурсии? любой учебник по программированию.

PM   Вверх
godvinn
Дата 9.7.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



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

то есть должна быть функция которая принимает 2 параметра id и  parennID?

например 

Код

function delete ($id, $parentID)
{
    удалять рекурсивно, начиная с детей, и поднимаясь к родителям?

}



--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



нет. зачем ей принимать parentid?
прочитай еще раз мое сообщение - я все описал.

Добавлено через 1 минуту и 25 секунд
а еще можно сделать по-другому.
так даже будет оптимальнее.
целиком дерево умеешь строить?  а ветку?
берешь запрашиваешь из базы ветку, которую хочешь удалить. а собираешь все id в кулачок. а потом делаешь один запрос на удаление.
PM   Вверх
godvinn
Дата 9.7.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



вот что у меня получилось:
линк по которому обращаюсь чтобы удалить (в самом начале обсуждения полный скрипт)
echo '<a href="delete.php?ID='.$item["id"]."\">delete</a>";

и функция по которой удаляю:
Код

function delete()
{
     include( "db.php" ); 
     $id = $_GET['ID'];
     $sql = "SELECT * FROM test WHERE id = $id";
     $query = mysql_query($sql, $link);
     $row = mysql_fetch_array($query);
     $res = array($row);
     $i = 0;
     foreach ($res as $row) 
     {
         $resdel =  $array[$i]['id'] = $row['id'];
         $query = mysql_query("DELETE FROM test WHERE id= '$resdel'", $link);
         if ($query == true)
         {
            header("Location: http://localhost/index.php");
            exit;
         }
         else
         {
            echo "Произошла ошибка при удалении данных из БД <br />";
            echo "<a href='http://localhost/index.php'>Попробуйте перейти по ссылке и попытатся удалить еще раз</a>";
         }
         $i++;
     }
}

delete();


и все равно только по одному удаляет, наверное потому что id мы только  1 передаем. что надо исправить чтобы удаляло массив  id-в*?  





--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Feldmarschall
Дата 9.7.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



гениальный код. ни убавить, ни прибавить.
исправить здесь можно только одно - забыть все до сих пор полученные знания по пхп, как страшный сон и учиться заново.

PM   Вверх
godvinn
Дата 9.7.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 4.4.2008
Где: possibility of mo ving to Kyiv

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



ну так подскажи не гениальный код чтобы не учить заново php ?*




 


--------------------
Everything happens in life.
user posted image
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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