Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
1

обединить бд

02.09.2011, 11:58. Показов 5696. Ответов 82
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
простой вопрос как соедитить чепочку

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

как сделать так чтоб к каждой новость добавлялись свои фотографии а не все

Добавлено через 12 часов 15 минут
неужеле не знает не кто

помогите пожайлуста(((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2011, 11:58
Ответы с готовыми решениями:

обединить таблицы
извени те что тему создала новую просто запуталась окончательно есть 2е таблицы image состоит...

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

Обединить две функции в одну
Подскажите пжлст, как можно объединить две одинаковые функции в одну? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
82
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
09.09.2011, 22:42  [ТС] 41
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Денис Н. Посмотреть сообщение
ну которая на сайте у тебя. Ты же с нее новости добавляешь, верно?
вот форма я не совсем понала от куда взять значение
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
if(!defined("EDIT"))
  {
    $button = "Добавить";
    $action = "addnews_dm.php";
    $showhide = "checked";
    $chk_filename = "";
    $chk_rename   = "";
    $name = "";
    $body = "";
    $url = "";
    $url_text = "";
    $url_pict = "";
    $date_month = date("m");
    $date_day = date("d");
    $date_year = date("Y");
    $date_hour = date("H");
    $date_minute = date("i");
  }
?>
<table><tr><td>
<p class=boxmenu><a class=menu href="index.php">Вернуться в администрирование новоcтей</a></p>
</td></tr></table>
<form name=form enctype='multipart/form-data' action=<?php echo $action; ?> method=post>
<table cellpadding="0" cellspacing="6">
<tr>
  <td><p class=zag2>Название</td>
  <td></td>
  <td><input class=input size=70 type=text name=name value='<?php echo htmlspecialchars($name); ?>'></td>
</tr>
<tr>
  <td><p class=zag2>Содержание</td>
  <td></td>
  <td><textarea class=input name=body rows=10 cols=60><?php echo htmlspecialchars($body); ?></textarea></td>
</tr>
<tr>
  <td><p class=zag2>Ссылка</td>
  <td></td>
  <td><input class=input size=70 type=text name=url value='<?php echo htmlspecialchars($url); ?>'></td>
</tr>
<tr>
  <td><p class=zag2>Текст для ссылки</td>
  <td></td>
  <td><input class=input size=70 type=text name=url_text value='<?php echo htmlspecialchars($url_text); ?>'></td>
</tr>
<tr>
  <td><p class=zag2>Дата новости</td>
  <td></td>
  <td>
   <?php
     // Выпадающий список для дня
     echo "<select title='День' class=input type=text name='date_day'>";
     for($i = 1; $i <= 31; $i++)
     {
       if($date_day == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>".sprintf("%02d", $i);
     }
     echo "</select>";
     // Выпадающий список для месяца
     echo "<select class=input type=text name='date_month'>";
     for($i = 1; $i <= 12; $i++)
     {
       if($date_month == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>".sprintf("%02d", $i);
     }
     echo "</select>";
     // Выпадающий список для года
     echo "<select class=input type=text name='date_year'>";
     for($i = 2004; $i <= 2017; $i++)
     {
       if($date_year == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>$i";
     }
     echo "</select>";
     // Выпадающий список для часа
     echo "&nbsp;&nbsp;<select class=input type=text name='date_hour'>";
     for($i = 0; $i <= 23; $i++)
     {
       if($date_hour == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>".sprintf("%02d",$i);
     }
     echo "</select>";
     // Выпадающий список для минут
     echo "<select class=input type=text name='date_minute'>";
     for($i = 0; $i <= 59; $i++)
     {
       if($date_minute == $i) $temp = "selected";
       else $temp = "";
       echo "<option value=$i $temp>".sprintf("%02d",$i);
     }
     echo "</select>";
   ?>
</tr>
<tr>
  <td><p class=zag2>Изображение</td>
  <td><input type="checkbox" name="chk_filename" onclick="freeze_filename(this.form)" <?php echo htmlspecialchars($chk_filename); ?>></td>
  <td><input class=input size=70 type=file name=filename></td>
</tr>
<tr>
  <td><p class=zag2>Переименовать</td>
  <td><input type="checkbox" name="chk_rename" onclick="freeze_rename(this.form)" <?php echo htmlspecialchars($chk_rename); ?>></td>
  <td><input class=input1 size=70 type=text name=rename ></td>
</tr>
<?php
  if(defined("EDIT") && !empty($url_pict))
  {
  ?>
<tr>
  <td><p class=zag2>Удалить изображение</td>
  <td><input type="checkbox" name="chk_delete"></td>
  <td></td>
  <?php
  }
?>
</tr>
<tr>
  <td><p class=zag2>Отображать</td>
  <td><input type=checkbox name=hide <?php echo htmlspecialchars($showhide); ?>></td>
  <td><p class=help>если флажок не отмечен, новостная позиция не отображается на страницах сайта</p></td>
</tr>
<tr>
  <td></td>
  <td></td>
  <td><input class=button type=submit value=<?php echo htmlspecialchars($button); ?>></td>
</tr>
<input type=hidden name=id_news value=<?php echo htmlspecialchars($_GET['id_news']); ?>>
<input type=hidden name=start value=<?php echo htmlspecialchars($_GET['start']); ?>>
</table>
</form>
Добавлено через 15 минут
Денис Н.,
ты имееш это ввиду
PHP
1
2
3
4
5
6
7
8
9
 // Формируем и выполняем SQL-запрос на добавление новости
  $query = "INSERT INTO news_dm VALUES (0,
                                     '".$_POST['name']."',
                                     '".$_POST['body']."',
                                     '".$_POST['date_year']."-".$_POST['date_month']."-".$_POST['date_day']." ".sprintf("%02d",$_POST['date_hour']).":".sprintf("%02d",$_POST['date_minute']).":00',
                                     '".$_POST['url']."',
                                     '".$_POST['url_text']."',
                                     '$path',
                                     '$showhide');";
у меня это в upload есть
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
09.09.2011, 22:44 42
ну форма постом на сервер уходит? Значения будут значит $_POST['url_text'] например и т.д. Ты что и форму отправлять не умеешь? Кто же тебя заставил заниматься сайтом-то
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
09.09.2011, 22:59  [ТС] 43
Денис Н.,
даже сама не знаю зачем начала
я блин опять намудрила зде то да?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE PROCEDURE `INSERT_NEWS`(IN `url` VARCHAR(50),
                               IN `body` TEXT
)
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
BEGIN
        INSERT INTO news_dm(`id_news`, `name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) VALUES(0,
$_POST['name'],
$_POST['body'],
                                     $_POST['date_year']-$_POST['date_month']-$_POST['date_day'] sprintf("%02d",$_POST['date_hour']):sprintf("%02d",$_POST['date_minute']):00,
                                     $_POST['url'],
                                     $_POST['url_text'],
                                     $path,
                                     $showhide)
        INSERT INTO image(`id`, `url`, `newsid`) VALUES('$id','$url',(SELECT DISTINCT last_insert_id() 
                              FROM news_dm))       
END
Добавлено через 33 секунды
в 11 строке да?

Добавлено через 1 минуту
Денис Н., не у меня форма добавления новостей работает хорошо
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
09.09.2011, 23:49 44
да намудрила. Так, значит... есть таблицы
SQL
1
2
3
4
5
6
7
foto
CREATE TABLE IF NOT EXISTS `foto` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `url` tinytext NOT NULL,
  `newsid` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=35 ;
SQL
1
2
3
4
5
6
7
8
9
10
11
12
news 
CREATE TABLE IF NOT EXISTS `news` (
  `id_news` INT(11) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL,
  `body` text NOT NULL,
  `putdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `url` tinytext NOT NULL,
  `url_text` tinytext NOT NULL,
  `url_pict` tinytext NOT NULL,
  `hide` enum('show','hide') NOT NULL DEFAULT 'show',
  PRIMARY KEY (`id_news`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
и есть процедура. Поехали:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,
                       IN `name` TINYTEXT,
                               IN `body` TEXT,
                           IN `putdate` DATETIME,
                           IN `news_url` TINYTEXT,
                           IN `url_text` TINYTEXT,
                               IN `url_pict` TINYTEXT,
                           IN `hide` ENUM('show','hide'))
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
  INSERT INTO news_dm(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) 
  VALUES(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`);
  INSERT INTO image(`url`, `newsid`) 
  VALUES(`url`,(SELECT DISTINCT last_insert_id() 
                FROM news_dm));
END
вот такая хранимка у тебя будет. А с тем, что ты в нее напихала, будешь ее из кода вызывать пхпшного
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 00:41  [ТС] 45
Цитата Сообщение от Денис Н. Посмотреть сообщение
да намудрила. Так, значит... есть таблицы
SQL
1
2
3
4
5
6
7
foto
CREATE TABLE IF NOT EXISTS `foto` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `url` tinytext NOT NULL,
  `newsid` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=35 ;
SQL
1
2
3
4
5
6
7
8
9
10
11
12
news 
CREATE TABLE IF NOT EXISTS `news` (
  `id_news` INT(11) NOT NULL AUTO_INCREMENT,
  `name` tinytext NOT NULL,
  `body` text NOT NULL,
  `putdate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `url` tinytext NOT NULL,
  `url_text` tinytext NOT NULL,
  `url_pict` tinytext NOT NULL,
  `hide` enum('show','hide') NOT NULL DEFAULT 'show',
  PRIMARY KEY (`id_news`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
и есть процедура. Поехали:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,
                       IN `name` TINYTEXT,
                               IN `body` TEXT,
                           IN `putdate` DATETIME,
                           IN `news_url` TINYTEXT,
             IN `url_text` TINYTEXT,
                    IN `url_pict` TINYTEXT,
             IN `hide` ENUM('show','hide'))
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
  INSERT INTO news_dm(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) 
  VALUES(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`);
  INSERT INTO image(`url`, `newsid`) 
  VALUES(`url`,(SELECT DISTINCT last_insert_id() 
                FROM news_dm));
END
вот такая хранимка у тебя будет. А с тем, что ты в нее напихала, будешь ее из кода вызывать пхпшного
я так нарисала а он ошибку выдал

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 17

Добавлено через 43 минуты
у меня версия 3.4.3.2 стоит вчем может быть ошибка
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 00:47 46
у меня тоже ошибка есть, но я в упор не вижу где
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 00:54  [ТС] 47
Цитата Сообщение от Денис Н. Посмотреть сообщение
у меня тоже ошибка есть, но я в упор не вижу где

*я вот тут еще исправила
SQL
1
2
3
4
5
6
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,(исправила это на IN `id_news` INT)
                               IN `name` TINYTEXT,
                               IN `body` TEXT,
                               IN `putdate` DATETIME,
                               IN `news_url` TINYTEXT,
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 00:55 48
ошибка где-то в инсертах, но она невидимая какая-то
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 00:57  [ТС] 49
Цитата Сообщение от Денис Н. Посмотреть сообщение
ошибка где-то в инсертах, но она невидимая какая-то
а там не надо id писать или я опять глупости думаю?
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:01 50
нашел.
Попробуй:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DELIMITER $$
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,
                               IN `name` TINYTEXT,
                               IN `body` TEXT,
                               IN `putdate` DATETIME,
                               IN `news_url` TINYTEXT,
                               IN `url_text` TINYTEXT,
                               IN `url_pict` TINYTEXT,
                               IN `hide` ENUM('show','hide'))
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
BEGIN
  INSERT INTO news_dm(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) 
  VALUES(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`);
  INSERT INTO image(`url`, `newsid`) 
  VALUES(`url`,(SELECT DISTINCT last_insert_id() 
                FROM news_dm));
END;
DELIMITER;
0
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 01:11  [ТС] 51
Денис Н.,
получилось так
SQL
1
2
3
4
5
6
DELIMITER $$
CREATE PROCEDURE INSERT_NEWS(IN `url` TINYTEXT,IN `news_id` INT, IN `name` TINYTEXT,IN `body` TEXT,IN `putdate` DATETIME,IN `news_url` TINYTEXT, IN `url_text` TINYTEXT,IN `url_pict` TINYTEXT,IN `hide` ENUM('show','hide')) LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ''
BEGIN INSERT INTO news(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) VALUES(name, body, putdate, url, url_text, url_pict, hide);
  INSERT INTO foto(`url`, `newsid`) VALUES(url, (SELECT DISTINCT last_insert_id() FROM news));
END;
DELIMITER;
выдает #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 5

у меня пятая это
COMMENT ''

Добавлено через 3 минуты
Цитата Сообщение от Денис Н. Посмотреть сообщение
нашел.
Попробуй:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DELIMITER $$
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,
                               IN `name` TINYTEXT,
                               IN `body` TEXT,
                               IN `putdate` DATETIME,
                               IN `news_url` TINYTEXT,
                               IN `url_text` TINYTEXT,
                               IN `url_pict` TINYTEXT,
                               IN `hide` ENUM('show','hide'))
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
BEGIN
  INSERT INTO news_dm(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) 
  VALUES(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`);
  INSERT INTO image(`url`, `newsid`) 
  VALUES(`url`,(SELECT DISTINCT last_insert_id() 
                FROM news_dm));
END;
DELIMITER;
выдает теперь
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 22
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:12 52
у меня создалась=)
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 01:14  [ТС] 53
Цитата Сообщение от Денис Н. Посмотреть сообщение
у меня создалась=)
я сделала так
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DELIMITER $$
CREATE PROCEDURE `INSERT_NEWS`(IN `url` TINYTEXT, 
                               IN `news_id` INT,
                               IN `name` TINYTEXT,
                               IN `body` TEXT,
                               IN `putdate` DATETIME,
                               IN `news_url` TINYTEXT,
                               IN `url_text` TINYTEXT,
                               IN `url_pict` TINYTEXT,
                               IN `hide` ENUM('show','hide'))
        LANGUAGE SQL
        NOT DETERMINISTIC
        CONTAINS SQL
        SQL SECURITY DEFINER
        COMMENT ''
BEGIN
  INSERT INTO news_dm(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`) 
  VALUES(`name`, `body`, `putdate`, `url`, `url_text`, `url_pict`, `hide`);
  INSERT INTO image(`url`, `newsid`) 
  VALUES(`url`,(SELECT DISTINCT last_insert_id() 
                FROM news_dm));
END;
ошибки не выдало но и не чего не создалось не где как проверить?

весь все как и было
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:17 54
у тебя вообще нет никакого клиента, работающего с БД?
Попробуй ее вызвать теперь, хотя бы без параметров:
SQL
1
CALL INSERT_NEWS()
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 01:19  [ТС] 55
пишет что INSERT_NEWS существует
а где она???

Добавлено через 1 минуту
Цитата Сообщение от Денис Н. Посмотреть сообщение
у тебя вообще нет никакого клиента, работающего с БД?
Попробуй ее вызвать теперь, хотя бы без параметров:
SQL
1
CALL INSERT_NEWS()
если так написать выдает
#1318 - Incorrect number of arguments for PROCEDURE pmdcfrunz.INSERT_NEWS; expected 9, got 0
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:21 56
на сервере БД

Добавлено через 23 секунды
значит процедура создалась как надо

Добавлено через 47 секунд
вот терь в своем коде будешь работать только с ней, а она всем будет рулить
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 01:25  [ТС] 57
Денис Н.,

блин огромное приогромнищее спасибо тебе что так выручил
теперь мне надо
PHP
1
mysql_query("CALL INSERT_NEWS(!!!тут всё, что будет вставляться в базу!!!)");
в основной код вставить ведь так
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:28 58
ну, конечно!
Чё опять буит не получаться -- пиши
1
26 / 23 / 9
Регистрация: 12.08.2011
Сообщений: 576
10.09.2011, 01:36  [ТС] 59
Денис Н.,
мне же так написать надо
PHP
1
mysql_query("CALL INSERT_NEWS(id,url) VALUES ('$id','$url')");
или вообще все перечислять?
0
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
10.09.2011, 01:38 60
не, тебе нужно написать
PHP
1
mysql_query("CALL INSERT_NEWS(а вот тут все внимательно перечислять)");
0
10.09.2011, 01:38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru