За последние 24 часа нас посетили 16163 программиста и 1545 роботов. Сейчас ищут 924 программиста ...

Помогите с занесеним разделов и подкатегорий в базу

Тема в разделе "PHP для новичков", создана пользователем vl25, 14 мар 2010.

Статус темы:
Закрыта.
  1. vl25

    vl25 Активный пользователь

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Всем привет, перейдем сразу к делу:

    при добавлении новости меется форма (представлю ее часть):

    PHP:
    1. <select name="category">';
    2. echo '<option value="99">-Выберите категорию-</option>'."\n";
    3. while($razwi = mysql_fetch_assoc($razdel))
    4. {
    5.     echo '<option value="'.$razwi['id'].'">'.$razwi['category'].'</option>'."\n";
    6.     $racat = $razwi['id'];
    7.     $cat = mysql_query("SELECT id,parent,category FROM categories WHERE parent='$racat'");
    8.     while($catwi = mysql_fetch_assoc($cat))
    9.        
    10.     {
    11.         echo '<option value="'.$catwi['id'].'">-'.$catwi['category'].'</option>'."\n";
    12.         }
    13.    
    14.     }
    15.  
    16. echo '</select>
    тут выводятся категории в древовидном порядке, далее, есть обработчик формы:

    PHP:
    1. <?
    2. if(empty($_POST["title"])) {echo '<div id="space">&nbsp;</div><div id="block2">Вы не указали название.</div>';}
    3. elseif(empty($_POST["text"])) {echo '<div id="space">&nbsp;</div><div id="block2">Вы не указали текст новости.</div>';}
    4. elseif($_POST['category'] == 99) {echo '<div id="space">&nbsp;</div><div id="block2">СВы не выбрали категорию.</div>';}
    5. elseif(empty($_FILES["filename1"]["name"])) {echo '<div id="space">&nbsp;</div><div id="block2">Вы не выбрали файл.</div>';}
    6. elseif(empty($_FILES["filename2"]["name"])) {echo '<div id="space">&nbsp;</div><div id="block2">Вы не выбрали изображение.</div>';}
    7. elseif($_FILES["filename1"]["error"] !== 0 ) {echo '<div id="space">&nbsp;</div><div id="block2">Возникла проблема с загрузкой файла.</div>';}
    8. elseif($_FILES["filename2"]["error"] !== 0 ) {echo '<div id="space">&nbsp;</div><div id="block2">Возникла проблема с загрузкой изображения.</div>';}
    9. elseif($_FILES["filename1"]["size"] > 1024*7*1024  ) {echo '<div id="space">&nbsp;</div><div id="block2">Файл больше 7Mb.</div>';}
    10. elseif($_FILES["filename2"]["size"] > 1024*2*1024  ) {echo '<div id="space">&nbsp;</div><div id="block2">Картинка больше 2Mb.</div>';}
    11. elseif($_FILES["filename2"]["type"] !== "image/jpeg" ) {echo '<div id="space">&nbsp;</div><div id="block2">Формат картинки не поддерживается.</div>';}
    12. else {
    13. $title = htmlspecialchars($_POST['title']);
    14. $date = htmlspecialchars($_POST['date']);
    15. $author = htmlspecialchars($_POST['author']);
    16. $text = htmlspecialchars($_POST['text']);
    17. $category = $_POST['category'];
    18.  
    19. $file = $_FILES["filename1"]["tmp_name"];
    20. $file_name = $_FILES["filename1"]["name"];
    21. $file_size =  $_FILES["filename1"]["size"];
    22. $file_type = $_FILES["filename1"]["type"];
    23. $file_error = $_FILES["filename1"]["error"];
    24.  
    25. $img = $_FILES["filename2"]["tmp_name"];
    26. $img_name = $_FILES["filename2"]["name"];
    27. $img_size =  $_FILES["filename2"]["size"];
    28. $img_type = $_FILES["filename2"]["type"];
    29. $img_error = $_FILES["filename2"]["error"];
    30.  
    31. # Тут пытаюсь расфасовать получаемые значения из формы
    32. function get_main_cat_from_subcat($subcatid){
    33.     $gcn=mysql_query("SELECT parent FROM categories WHERE id='$subcatid'");
    34.     $gcn_r=mysql_fetch_assoc($gcn);
    35.     return $gcn_r['parent'];
    36.     }
    37.    
    38. $parent = mysql_query("SELECT id FROM categories WHERE parent='0'");
    39. while($parent_array = mysql_fetch_assoc($parent)){
    40. if($category == $parent_array['id'])
    41.     {$razdel = get_main_cat_from_subcat($category);}
    42. else
    43. {
    44. $subcat= $category;
    45.  
    46. }
    47. }
    48.  
    49.  
    50. $copy_file = copy($file,$_SERVER['DOCUMENT_ROOT']."/upload/files/".$file_name);
    51. if(isset($copy_file)) {$filedir ="/upload/files/".$file_name;$filesize = $file_size;
    52. $copy_img = copy($img,$_SERVER['DOCUMENT_ROOT']."/upload/img/".$img_name);
    53. $imgdir ="/upload/img/".$img_name;
    54. $res = mysql_query ("INSERT INTO news (title,text,date,author,category,filename,img,size,type,sub) VALUES ('$title','$text','$date','$author','$razdel','$filedir','$imgdir','$filesize','$file_type','$subcat')");
    55. echo 'Файл удачно загружен и добавлен в базу.';
    56. } else {echo 'Файл не загружен.';}
    57. }
    58.  
    59.    
    60. ?>
    собственно строение таблицы с категориями:

    [​IMG]

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

    долго ломаю голову, помогите кто чем может :)
     
  2. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    а что тогда разделы если на скрине категории? =)

    проэктируя такого рода скрипт как заполнение форм для новостей или форумы (самые упрощенные) надо зарание продумать какая в нем структура. пусть категоря будет определятся неким id в таблице в новостями а раздел текстовой информацией скажем раздел категории карты топографические аэрофотоснимки обозначать как topografhic aerophoto и выбирать их таким же выпадающим списком.
     
  3. vl25

    vl25 Активный пользователь

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Всем спс, сделал так:

    PHP:
    1. $parent = mysql_query("SELECT id FROM categories WHERE parent='0'");
    2. while($parent_array = mysql_fetch_assoc($parent)) {
    3. if($category==$parent_array['id']){$razdel=$parent_array['id'];}
    4. }
    5. $parent1 = mysql_query("SELECT id,parent FROM categories WHERE parent<>'0'");
    6. while($parent_array1 = mysql_fetch_assoc($parent1)) {
    7. if($category==$parent_array1['id']) {$subcat = $parent_array1['id'];$razdel = $parent_array1['parent'];}
    8. }
    )) тему можно закрыть
     
Статус темы:
Закрыта.