| 
			| 
					
						| DET 
								Гость
 | 
								|  | «  : 20-07-2005 13:04 »  |  | 
 
 После того как немного познакомился с сохранением данных в файлах, хочу познакомиться с бд, вот хочу узнать вопрос. При использовании файлов для каждого раздела создавался свой файл, а при использовании бд также создаётся таблица или при использовании бд нужно обезательно стремиться к уменьшению количества таблиц?У знакомых однозначного вопроса на етот вопрос я не получил, так, что решил спросить здесь.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #1 : 20-07-2005 13:37 »  |  | 
 
 После того как немного познакомился с сохранением данных в файлах, хочу познакомиться с бд, вот хочу узнать вопрос. При использовании файлов для каждого раздела создавался свой файл, а при использовании бд также создаётся таблица или при использовании бд нужно обезательно стремиться к уменьшению количества таблиц?У знакомых однозначного вопроса на етот вопрос я не получил, так, что решил спросить здесь.
 
 Однозначного ответа на этот вопрос быть не может ИМХО. Тут уже как тебе удобнее |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| PantiL 
								Гость
 | 
								|  | « Ответ #2 : 21-07-2005 21:17 »  |  | 
 
 Стремление к уменьшению количества таблиц - нормализация их(таблиц) Это приводит к уменьшению объема памяти, занимаемого БД, и еще это приведет к усложнению запросов к базе и уменьшению работы скрипта. Поэтому если не очень большое приложение не надо стремиться к нормализации-ничего страшного если данные повторяются. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #3 : 25-07-2005 18:54 »  |  | 
 
 Начал я знакомство с бд, но ток чёт на практике не получается.  Вот хотел создать таблицу в бд:  <html> <head>
 <title>Untitled Document</title>
 <meta http-equiv="Ñîäåðæèìîå-Òèï" content="text/html; charset=windows-1251">
 </head>
 <body bgcolor="#dae3eb" text="#000000">
 <?php
 Error_Reporting(E_ALL & ~E_NOTICE);
 $TheFile="data/admin.txt";
 $Open=fopen ($TheFile, "a");
 if ($Open) {
 $kd=$pass;
 fwrite ($Open, "$kd\t$nik\n");
 fclose ($Open);
 print ("Данные записаны в файл<br>");
 $TableRazdInternet="RazdInternet";
 $TableRazdSoft="RazdSoft";
 $TableRazdFAQ="RazdFAQ";
 $Link=mysql_connect ($Host, $User, $Passvord);
 $Query="CREATE table $TableRazdInternet (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,  NazvRazd TEXT)";
 if (mysql_db_query ($DBName, $Query, $Link)) {
 print ("Таблица была создана");
 } else {
 print ("Тоблица не была создана");
 }
 mysql_close ($Link);
 } else {
 }
 ?>
 </body>
 </html>
Подскажите пожалуйста, что я делаю не так?  Или как можно сделать лучше? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #4 : 26-07-2005 05:06 »  |  | 
 
 Хммм... Я бы вот этот кусок <?php$Link=mysql_connect ($Host, $User, $Passvord);
 $Query="CREATE table $TableRazdInternet (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,  NazvRazd TEXT)";
 if (mysql_db_query ($DBName, $Query, $Link)) {
 print ("Таблица была создана");
 } else {
 print ("Тоблица не была создана");
 }
 mysql_close ($Link);
 ?>
 
переписал бы вот так : <?php$Link=mysql_connect ($Host, $User, $Passvord) or die("Unable to connect to server : ". mysql_error());
 mysql_select_db($DBName, $Link)   or die("Unable to select required database : ". mysql_error());
 $Query="CREATE table $TableRazdInternet (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,  NazvRazd TEXT)";
 $result = mysql_query($Query);
 if (!$result) {
 print mysql_error();
 } else {
 print ("Тоблица была создана");
 }
 mysql_close ($Link);
 ?>
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #5 : 27-07-2005 06:56 »  |  | 
 
 А вот ещё вопрос, вот если делать например возможность на сайте создания новых разделов, то тогда, нужна генерация уникального имени для таблица создаваемой для нового раздела. Как это делается? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #6 : 27-07-2005 09:11 »  |  | 
 
 DET, пиши по-русски! Учти, какой вопрос задаешь, такой же мало полезный и ответ получишь.
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #7 : 27-07-2005 09:14 »  |  | 
 
 А вот ещё вопрос, вот если делать например возможность на сайте создания новых разделов, то тогда, нужна генерация уникального имени для таблица создаваемой для нового раздела. Как это делается?
 Чего чего ? DET, пиши по-русски! Учти, какой вопрос задаешь, такой же мало полезный и ответ получишь.
 100% |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #8 : 27-07-2005 10:30 »  |  | 
 
 Хочу, для пробы знакомства с бд, сделать возможность добавления ссылок на сайт, как чуть ранее я пробовал с помощью файлов ток теперь с помощью этих самых бд.Вот например хочу я сделать, возможность группировать ссылки на сайты по разделам: игровые, спортивные, новостные и тд. И хочу чтоб я эти разделы создавал не спомощью кода (те сам делал странички, с помощью кода), а разделы создавались сами (я ввёл название, нажал кнопочку создать и готово). Так вот в чём вопрос для каждого раздела, помоему в этом случае нужно создать таблицу, чтобы данные о сайтах в данном разделе хранились в этой таблице. Так? Так вот в чём вопрос Название у каждой таблицы должно быть разное. Как сделать, чтобы для таблицы автоматически подбиралось имя и как проверить не была ли создана ранее, таблица с таким именем?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #9 : 27-07-2005 11:07 »  |  | 
 
 вопросик околотемный, если у меня используется база данных, как её на хост перенести ? если например я одбц конект использую, это же получается хозяин серва должен путь к моей базе данных у себя прописать в операционке ? или как там это всё делается ? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #10 : 27-07-2005 11:11 »  |  | 
 
 Хочу, для пробы знакомства с бд, сделать возможность добавления ссылок на сайт, как чуть ранее я пробовал с помощью файлов ток теперь с помощью этих самых бд.Вот например хочу я сделать, возможность группировать ссылки на сайты по разделам: игровые, спортивные, новостные и тд. И хочу чтоб я эти разделы создавал не спомощью кода (те сам делал странички, с помощью кода), а разделы создавались сами (я ввёл название, нажал кнопочку создать и готово).
 Ну без помощи кода ты вообще ничего не сделаеш   Так вот в чём вопрос для каждого раздела, помоему в этом случае нужно создать таблицу, чтобы данные о сайтах в данном разделе хранились в этой таблице. Так? Так вот в чём вопрос Название у каждой таблицы должно быть разное.  А вот это совсем не обязательно   Как сделать, чтобы для таблицы автоматически подбиралось имя и как проверить не была ли создана ранее, таблица с таким именем?
 Для того чтобы автоматически, ну например напиши генератор стринговых значений и пусть у тебя сгенерированый стринг и будет названием таблицы раз ты так хочеш. Ну а для проверки создана уже или нет, можно проверку написать. А вообще при попытке создать таблицу с уже существующим именем в одной и той же базе данных, ты элементарно получиш только ошибку и всё. |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #11 :  27-07-2005 11:17 »   |  | 
 
 вопросик околотемный, если у меня используется база данных, как её на хост перенести ? если например я одбц конект использую, это же получается хозяин серва должен путь к моей базе данных у себя прописать в операционке ? или как там это всё делается ?
 Какую базу данных ты используеш ? Вообще-то практически с любой базой можно выполнить процедуру дампирования а на хосте уже этот дамп запустить на хостинговой базе, либо программно из скрипта |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #12 : 27-07-2005 16:12 »  |  | 
 
 DET, есть решение попроще и, по моему, правильнее: одно из полей должно идентифицировать раздел сайта. CREATE TABLE section (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
 descr VARCHAR(255) NOT NULL
 )
 
 CREATE TABLE links (
 section_id INT NOT NULL,
 descr VARCHAR(255) NOT NULL,
 url VARCHAR(255) NOT NULL
 )
 
 Создание раздела:
 INSERT INTO section (descr) VALUES ("название раздела - чисто информационное поле для вывода в браузер")
 Потом через mysql_insert_id() получи id созданного раздела.
 
 Добавление ссылки в раздел:
 INSERT INTO links VALUES (id_раздела, "описание ссылки", "url")
 
 Получение списка ссылок по заданному разделу:
 SELECT * FROM links WHERE section_id=id_раздела
 
Если ввести уникальное поле в links, то можно будет выборочно адресовать и ссылки (для изменения и удаления). Пример дан для MySQL. |  
						| 
								|  |  
								| « Последнее редактирование: 27-07-2005 16:15 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| schnibbl 
								Гость
 | 
								|  | « Ответ #13 : 28-07-2005 09:23 »  |  | 
 
 тау у меня как раз в том и проблема, в выборе базы данных   , я сначала неподумавши всё навалял в акцесе через одбц (в учебных целях), а терь вот задумался и думаю а как делать для сайтов, которые потом будеш выкладывать на хосты, причем не на свои? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #14 : 28-07-2005 14:00 »  |  | 
 
 schnibbl, обычно на хостинге используется MySQL, намного реже - MS SQL (только на win-серверах). Прочие базы встречаются реже.
 MySQL может работать через ODBC, но лучше применять родной интерфейс. Он реализован для кучи языков.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #15 : 29-07-2005 14:01 »  |  | 
 
 RXL, спасибо за предложенный вариант, буду пробовать. Тут у меня опять проблема появилась теперь со считыванием данных из таблицы. <?phpError_Reporting(E_ALL & ~E_NOTICE);
 require_once("host.php");
 $Table="1";
 $Link=mysql_connect ($Host, $User, $Passvord) or die ("Unableto connect to server: ". mysql_error());
 mysql_select_db ($DBName, $Link) or die ("Unable to select required database: ".  mysql_error());
 $Query="Select * from $Table";
 $result=mysql_db_query ($DBName,$Query, $Link);
 $Rows=1;
 while ($Rows=mysql_fetch_row ($result)) {
 $Rows++;
 }
 ?>
 
Выдаёт: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in k:\home\localhost\www\xxx.php on line 17 а 17-я это: while ($Rows=mysql_fetch_row ($result)) { Что я опять не так делаю, или может, нужно тоже другой способ использовать. Проверял при помощи: Denwer. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #16 : 29-07-2005 14:22 »  |  | 
 
 <?php$Rows=1;
 while ($Rows=mysql_fetch_row ($result)) {
 $Rows++;
 }
 ?>
 
А что ты вообще хочеш этим куском кода сделать ? Где вообще ты такое выкопал ? |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #17 : 29-07-2005 18:03 »  |  | 
 
 <?php$Rows=1;
 while ($Rows=mysql_fetch_row ($result)) {
 $Rows++;
 }
 ?>
 
А что ты вообще хочеш этим куском кода сделать ? Где вообще ты такое выкопал ?Ну типа как с файлами, извлеч, строки, те. в переменную $Rows поместить массив состоящий из первой строки. $Rows++; - эт я глупость написал, просто нипойму почему не получается. А в общем я хочу научиться данные из таблицы помещать в переменную, чтобы можно было ту вывести на экран и тд, как  я ранее это делал с файлами. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #18 : 29-07-2005 20:39 »  |  | 
 
 DET, проверь права доступа к базе и строку запроса. Я обычно, если не работает, проверяю это вручную через консльный клиент. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #19 : 29-07-2005 20:41 »  |  | 
 
 $result=mysql_db_query ($DBName,$Query, $Link); Смотри ман! Откуда тут DBName? |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #20 : 30-07-2005 09:12 »  |  | 
 
 $result=mysql_db_query ($DBName,$Query, $Link); Смотри ман! Откуда тут DBName?Синтаксис : int mysql_db_query(string database, string query [,int link_identifier]) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #21 : 30-07-2005 09:23 »  |  | 
 
 Извини, я _db не разглядел. Базу лучше выбрать сразу после подключения - контроль ошибок доступа будет проще. В то же время mysql_select_db() присутствует - зачем тогда такая форма? Используй mysql_query(). Если подключение к базе у тебя одно, то и link_id не обязательно указывать. Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in .... Вроде бы ясно: в $result совсем не то, что нужно. След., см. запрос. Например такой таблицы нет - след. и результата не будет совсем. Если бы была пустая таблица, то результат был бы, но пустой. Проверь права на таблицу и ее существование. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #22 : 30-07-2005 13:39 »  |  | 
 
 Учтите, что эта функция НЕ переключает соединение обратно к предыдущей базе данных. Другими словами, вы не можете использовать эту функцию, чтобы временно переключиться на другую базу данных и выполнить запрос. Переключиться обратно вам придётся вручную. Крайне рекомендуется использовать синтаксис database.table в SQL-запросах, вместо использования этой функции.  Это отрывок из описания на mysql_db_query(), а посему не вижу в твоём случае смысла её использовать. Ты же не тянеш данные из разных баз. Поэтому советую пользоваться  mysql_query() Ну типа как с файлами Типо это далеко не одно и тоже : файлы и база данных. , извлеч, строки, те. в переменную $Rows поместить массив состоящий из первой строки .  Странное желание    И как-то мне не совсем ясно что ты тут имел ввиду   $Rows++; - эт я глупость написал, просто нипойму почему не получается.А в общем я хочу научиться данные из таблицы помещать в переменную, чтобы можно было ту вывести на экран и тд, как я ранее это делал с файлами.
 Ну исходя из того что я понял, вот тебе пример того как я получил бы в какую-то переменную что то из базы : <?php/* Предположим что в таблице users есть поля id, uname, upass */
 $sql = "SELECT *  FROM users WHEER id = '12'";
 $res = mysql_query($sql);
 if(!$res) { die(mysql_eror()); } else {
 while($row = mysql_fetch_array($res))
 {
 $id = "{$row['id']}"; // в переменную $id получаем id юзера
 print "ID пользователя : ".$id.";\nИмя пользователя : {$row['uname']};\nПароль пользователя : {$row['upass']};\n";
 }
 }
 ?>
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 03-12-2007 20:34 от Алексей1153++ » |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #23 : 30-07-2005 14:38 »  |  | 
 
 MOPO3, что-то пример у иебя перегруженный. По логике у тебя выбирается 1 или 0 строк, а ты делаешь цикл. Тогда уж для наглядности можно было бы WHERE id=12 убрать.В mysql_fetch_array() рекомендую добавлять второй параметер, определяющий тип индекса возвращаемого массива. В некоторых версиях php по умолчанию были только цифровые индексы.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| MOPO3 
								Ай да дэдушка! Вах...Команда клуба    Offline 
								Пол:   
								Холадна аднака!
								
								
								
								
								
								   | 
								|  | « Ответ #24 : 30-07-2005 18:13 »  |  | 
 
 MOPO3, что-то пример у иебя перегруженный. По логике у тебя выбирается 1 или 0 строк, а ты делаешь цикл. Тогда уж для наглядности можно было бы WHERE id=12 убрать. огласен    как-то автоматом написал не думая   В mysql_fetch_array() рекомендую добавлять второй параметер, определяющий тип индекса возвращаемого массива. В некоторых версиях php по умолчанию были только цифровые индексы. Ну это тоже верно, хотя я редко добавляю   |  
						| 
								|  |  
								|  |  Записан | 
 
 MCP, MCAD, MCTS:Win, MCTS:Web |  |  | 
	|  |