PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (37): В начало « ... 7 8 9 10 [11] 12 13 14 15 ... » В конец

> Найдено сообщений: 542
event Отправлено: 06 Мая, 2014 - 10:07:58 • Тема: Запрос MySQL • Форум: Вопросы новичков

Ответов: 5
Просмотров: 1440
Короче говоря, есть таблица MySQL portfolio:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `portfolio` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `cat` int(10) NOT NULL DEFAULT '0',
  4.   `name` varchar(255) NOT NULL DEFAULT '',
  5.   `link` varchar(255) NOT NULL DEFAULT '',
  6.   `video` varchar(255) NOT NULL DEFAULT '',
  7.   `description` text NOT NULL,
  8.   `image1` varchar(255) NOT NULL DEFAULT '',
  9.   `image2` varchar(255) NOT NULL DEFAULT '',
  10.   `price` varchar(255) NOT NULL DEFAULT '',
  11.   `time` varchar(255) NOT NULL DEFAULT '',
  12.   `added` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  13.   `userid` int(10) UNSIGNED NOT NULL DEFAULT '0',
  14.   PRIMARY KEY (`id`)
  15. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;


И есть такой запрос:

PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT * FROM portfolio");


Мне нужно добавить к этому запросу 2 пункта, чтобы он вытаскивал из таблицы CATEGORIES имя категории:

Таблица CATEGORIES:

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `categories` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `parent_id` int(10) NOT NULL DEFAULT '0',
  4.   `name` varchar(255) NOT NULL DEFAULT '',
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=71 ;
  7.  


А теперь в запрос надо добавить:
1. Чтобы вытаскивать поле name из таблицы categories, где WHERE id = полю cat в таблице portfolio
2. Чтобы вытаскивать поле name из таблицы categories, WHERE id = полю cat в таблице portfolio AND parent_id (в таблице portfolio) = 0
event Отправлено: 05 Мая, 2014 - 22:23:43 • Тема: Запрос MySQL • Форум: Вопросы новичков

Ответов: 5
Просмотров: 1440
3d_killer, cat_name - название раздела, а то что я хочу сделать еще это подкатегория этого раздела.

Там у меня в таблице дерево:
id parent_id name
event Отправлено: 05 Мая, 2014 - 20:54:55 • Тема: Запрос MySQL • Форум: Вопросы новичков

Ответов: 5
Просмотров: 1440
Привет.
Есть у меня такой запрос:

PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT p.id, p.cat, p.name, p.link, p.video, p.description, p.image1, p.image2, p.price, p.time, p.added, c.name AS cat_name FROM portfolio as p LEFT JOIN categories AS c ON p.cat = c.id")


Он работает, но мне нужно добавить к нему еще одну штуку, наверное еще один left join, нужно чтобы он вытаскивал с таблицы categories ячейку name, где WHERE id = p.cat AND parent_id = '0'.

Как это можно осуществить, а то как не пробую ничего не получается.

Заранее спасибо.
event Отправлено: 04 Мая, 2014 - 12:22:40 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, хорошо, сорри что задолбал)

Но никак решить это не могу, и тот последний вариант, тож корявит)

Ладно, спасибо =) Подмигивание
event Отправлено: 04 Мая, 2014 - 10:58:45 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Помогите пожалуйста. Растерялся
event Отправлено: 04 Мая, 2014 - 01:05:08 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, в таком случае оно вот так получается: Огорчение Огорчение Огорчение

event Отправлено: 03 Мая, 2014 - 22:38:05 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, как раз, то что мне надо, описано в первом случае. Как можно это по правильному сделать, а то у меня чего-то не получается, криво выходит.
(Добавление)
Пробую вот так:
PHP:
скопировать код в буфер обмена
  1.     function build_tree($cats,$parent_id,$only_parent = false){
  2.         if(is_array($cats) and isset($cats[$parent_id])){
  3.             $tree = '';
  4.             if($only_parent==false){
  5.                 foreach($cats[$parent_id] as $cat){
  6.                     $tree .= '<optgroup label="' . $cat['name'] .'"><option>'.$cat['name'];
  7.                     $tree .=  build_tree($cats,$cat['id']);
  8.                     $tree .= '</option>  </optgroup>';
  9.                 }
  10.             }elseif(is_numeric($only_parent)){
  11.                 $cat = $cats[$parent_id][$only_parent];
  12.                 $tree .= '<option>'.$cat['name'].' #'.$cat['id'];
  13.                 $tree .=  build_tree($cats,$cat['id']);
  14.                 $tree .= '</option>';
  15.             }
  16.         }
  17.         else return null;
  18.         return $tree;
  19.     }
  20.     echo '<select>';
  21.     echo build_tree($cats, 0);
  22.     echo '</select>';




Но как видите, коряво выходит... Однако Однако Однако
event Отправлено: 03 Мая, 2014 - 19:50:51 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, спасибо.

А как еще просить к option - style="font-weight: bold;", но только к тем у кого parent_id = 0

А то я пробую прописывать, а он всем подряд прописывает его.

Заранее спасибо!
event Отправлено: 03 Мая, 2014 - 18:03:39 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, извините попутал, но и этот li заменил на option.

Вот такой код:
PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT * FROM categories_old");
  2. //Если в базе данных есть записи, формируем массив
  3. if   ($result->num_rows > 0){
  4.     $cats = array();
  5. //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
  6.     while($cat =  $result->fetch_assoc()){
  7.         $cats_ID[$cat['id']][] = $cat;
  8.         $cats[$cat['parent_id']][$cat['id']] =  $cat;
  9.     }
  10. }
  11.  
  12. function build_tree($cats,$parent_id,$only_parent = false){
  13.     if(is_array($cats) and isset($cats[$parent_id])){
  14.         $tree = '<select>';
  15.         if($only_parent==false){
  16.             foreach($cats[$parent_id] as $cat){
  17.                 $tree .= '<option>'.$cat['name'].' #'.$cat['id'];
  18.                 $tree .=  build_tree($cats,$cat['id']);
  19.                 $tree .= '</option>';
  20.             }
  21.         }elseif(is_numeric($only_parent)){
  22.             $cat = $cats[$parent_id][$only_parent];
  23.             $tree .= '<option>'.$cat['name'].' #'.$cat['id'];
  24.             $tree .=  build_tree($cats,$cat['id']);
  25.             $tree .= '</option>';
  26.         }
  27.         $tree .= '</select>';
  28.     }
  29.     else return null;
  30.     return $tree;
  31. }
  32.  
  33. echo build_tree($cats,0);


Вот такой результат:

А должно быть все в одном открывающем списке.
(Добавление)
Помогите пожалуйста. Ниндзя
event Отправлено: 03 Мая, 2014 - 16:26:12 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Panoptik, вы думаете я не пробовал? Радость

Пробовал, вот так:
PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT * FROM categories_old");
  2. //Если в базе данных есть записи, формируем массив
  3. if   ($result->num_rows > 0){
  4.     $cats = array();
  5. //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
  6.     while($cat =  $result->fetch_assoc()){
  7.         $cats_ID[$cat['id']][] = $cat;
  8.         $cats[$cat['parent_id']][$cat['id']] =  $cat;
  9.     }
  10. }
  11.  
  12. function build_tree($cats,$parent_id,$only_parent = false){
  13.     if(is_array($cats) and isset($cats[$parent_id])){
  14.         $tree = '<select>';
  15.         if($only_parent==false){
  16.             foreach($cats[$parent_id] as $cat){
  17.                 $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
  18.                 $tree .=  build_tree($cats,$cat['id']);
  19.                 $tree .= '</li>';
  20.             }
  21.         }elseif(is_numeric($only_parent)){
  22.             $cat = $cats[$parent_id][$only_parent];
  23.             $tree .= '<option>'.$cat['name'].' #'.$cat['id'];
  24.             $tree .=  build_tree($cats,$cat['id']);
  25.             $tree .= '</option>';
  26.         }
  27.         $tree .= '</select>';
  28.     }
  29.     else return null;
  30.     return $tree;
  31. }
  32.  
  33. echo build_tree($cats,0);


Результат, корявый:

event Отправлено: 03 Мая, 2014 - 15:57:38 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Короче, сделано, но не совсем так как нужно:

PHP:
скопировать код в буфер обмена
  1. $result = $mysqli->query("SELECT * FROM categories");
  2. //Если в базе данных есть записи, формируем массив
  3. if   ($result->num_rows > 0){
  4.     $cats = array();
  5. //В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
  6.     while($cat =  $result->fetch_assoc()){
  7.         $cats_ID[$cat['id']][] = $cat;
  8.         $cats[$cat['parent_id']][$cat['id']] =  $cat;
  9.     }
  10. }
  11.  
  12. function build_tree($cats,$parent_id,$only_parent = false){
  13.     if(is_array($cats) and isset($cats[$parent_id])){
  14.         $tree = '<ul>';
  15.         if($only_parent==false){
  16.             foreach($cats[$parent_id] as $cat){
  17.                 $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
  18.                 $tree .=  build_tree($cats,$cat['id']);
  19.                 $tree .= '</li>';
  20.             }
  21.         }elseif(is_numeric($only_parent)){
  22.             $cat = $cats[$parent_id][$only_parent];
  23.             $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
  24.             $tree .=  build_tree($cats,$cat['id']);
  25.             $tree .= '</li>';
  26.         }
  27.         $tree .= '</ul>';
  28.     }
  29.     else return null;
  30.     return $tree;
  31. }
  32.  
  33. echo build_tree($cats,0);


В результате получаю список через <ul>, <li>. А как это переделать под выпадающий список (select, option)? А то пробую, но коряво получается.

Заранее спасибо.
event Отправлено: 01 Мая, 2014 - 11:36:06 • Тема: Выпадающий список • Форум: Вопросы новичков

Ответов: 15
Просмотров: 566
Всем привет.

Есть такая таблица MYSQL:

-- phpMyAdmin SQL Dump
-- version 3.4.8
-- http://www.phpmyadmin[dot]net
--
-- Хост: localhost
-- Время создания: Май 01 2014 г., 11:33
-- Версия сервера: 5.1.52
-- Версия PHP: 5.3.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `fldb`
--

-- -------------------------------- ------------------------

--
-- Структура таблицы `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sort` int(10) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=71 ;

--
-- Дамп данных таблицы `categories`
--

INSERT INTO `categories` (`id`, `sort`, `name`) VALUES
(1, 0, 'Администрирование'),
(2, 0, 'Айдентика/Полиграфия'),
(12, 1, 'Системное администрирование'),
(13, 1, 'Служба поддержки'),
(15, 2, 'Верстка/Допечатная подготовка'),
(16, 2, 'Дизайн продукции/упаковки');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Нужно из этой таблицы вывести запрос и сделать цикл (условие) чтобы построить этот список:

В итоге должно получится так:

Администрирование
--- Системное администрирование
--- Служба поддержки

Айдентика/Полиграфия
--- Верстка/Допечатная подготовка'
--- Дизайн продукции/упаковки

Какие будут предложения?
event Отправлено: 18 Апреля, 2014 - 15:17:47 • Тема: Регулярка • Форум: Вопросы новичков

Ответов: 4
Просмотров: 130
strip_tags канает, все ок.

Но есть одно, но... Мне все таки нужен preg_match_ALL, а не preg_match, а потом все это в цикл кинуть и потом работать)
event Отправлено: 18 Апреля, 2014 - 15:06:28 • Тема: Регулярка • Форум: Вопросы новичков

Ответов: 4
Просмотров: 130
Привет.

Есть такой кусок:

CODE (html):
скопировать код в буфер обмена
  1.                 <div class="entry-content post_content">
  2.                 <p>ТЕКСТ, который нужно спарсить</p>
  3.                         </div><!-- .entry-content -->


надо из этого куса спарсить текст, пробую вот так:
PHP:
скопировать код в буфер обмена
  1. preg_match('/<div class=\"entry-content post_content\">(.*)<\/div>/s', $page, $test);


Парсит, но к тому еще парсит другой мусор, который не нужен. Как решить? Закатив глазки
event Отправлено: 17 Марта, 2014 - 23:03:21 • Тема: Запрос MySQL • Форум: Вопросы новичков

Ответов: 3
Просмотров: 121
Пробую вот так:

CODE (SQL):
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT group_concat(DISTINCT `some_id` separator ','), count(*) FROM `users` GROUP BY `family`, `name`, `middle`, `birthday` HAVING count(`some_id`) > 1") OR die(mysql_error());


Получаю:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Unknown column 'some_id' in 'field list'

Страниц (37): В начало « ... 7 8 9 10 [11] 12 13 14 15 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB