DC-SWAT Forum
Помощь с Мускулом - Версия для печати

+- DC-SWAT Forum (http://www.dc-swat.ru/forum)
+-- Форум: PC (/forum-4.html)
+--- Форум: Programming (/forum-15.html)
+--- Тема: Помощь с Мускулом (/thread-1446.html)

Страниц: 1 2


Помощь с Мускулом - Rio - 01.01.2011 20:23

Сват нужна твоя помощь.
Вот создают я таблицу запроосом в майсикъэл.

CREATE TABLE PIDORS (PIDOR_Name char(15) PRIMARY KEY);

т.е. таблицу "пидоры" с одноим столбцом (row'ом) Пидор_нейм длиной 15 символов и говорю что это у меня будет первичным ключом (хотя это не важно пока).
Вот, оно создаёт таблицу, и пишет, что 0 rows affected каждый раз!
как же это так?
Приходится дополнительно писать alter, insert... Почему так?
Почему оно сразу не может создать мне таблицу с нужными мне полями?
замахался уже...


RE: Помощь с Мускулом - SWAT - 01.01.2011 21:17

Должно работать.

PHP код:
DROP TABLE IF EXISTS `table_name`;
CREATE TABLE `table_name` (
  `
namevarchar(32NOT NULL,
  
PRIMARY KEY  (`name`)
ENGINE=MyISAM

Сообщение вида "0 rows affected" вообще к созданию таблиц в принципе не отностится. Оно выводит какое количество записей в таблице обработано.


RE: Помощь с Мускулом - Rio - 01.01.2011 22:26

Вообще столько вопросов по этому MySql возникло...
Если я создаю таблицу, например users, и в ней хочу:
1. Чтобы поле айди было беззнаковым.
Как это сделать? Или нельзя?
2. Праймари кей. Я делаю поле айди первичным ключом для этой таблицы. Нужно мне тогда еще помимо PRIMARY KEY писать UNIQUE и NOT NULL или это и так подразумевается?
3. Как сделать так, чтобы первичным ключом было не одно поле а сразу два? (и более?)
4. Чем тип char отличается от varchar? (variable char?)
5. Как сделать запрет на добавление записей id которых меньше единицы?
Спасибо.


RE: Помощь с Мускулом - Rio - 01.01.2011 23:27

Охеренеть на него вообще никакие внушения не действуют, пишу PRIMARY KEY id и name все равно добавляет записи с одинаковым именем... охренеть...


RE: Помощь с Мускулом - SWAT - 02.01.2011 12:28

Первичный ключ может быть только один, но он может быть составным типа:
PHP код:
PRIMARY KEY  (`id`,`user_name`) 
По поводу char и varchar - http://www.weblibrary.biz/mysql/tipy-stolbcov/strok-tipy/tipy-char

Беззнаковое поле - unsigned
Поле id инкрементится само, поэтому его не нужно добавлять вручную вовсе, добавляй только user_name.

PHP код:
DROP TABLE IF EXISTS `table_name`;
CREATE TABLE IF NOT EXISTS `table_name` (
  `
idint(11unsigned NOT NULL AUTO_INCREMENT,
  `
user_namevarchar(32NOT NULL,
  
PRIMARY KEY (`id`),
  
UNIQUE KEY `user_name` (`user_name`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1



RE: Помощь с Мускулом - Rio - 02.01.2011 17:18

Спасибо большое.
Вот еще скрипт, никак не хочет работать:

PHP код:
<HTML>
<
HEAD>
<
TITLE>
<?
php
$c
=mysql_connect('localhost','user32','dsfdsf') or die('1'.mysql_error());
$q=mysql_query("use forum") or die('2'.mysql_error());
$q=mysql_query("select * from describe_forum") or die('3'.mysql_error());
$r=mysql_fetch_row($q) or die('4'.mysql_error());
echo 
$r[2];
?>
</TITLE>
</HEAD>
<BODY>

<?  
        
for($i=0$i<10$i++)
        {
            echo 
'<BR>';
        }
        echo 
'<H1>lol</H1>';?>

</BODY>
</HTML> 

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

[Изображение: 6E2KBxcx.gif]
http://s2.ipicture.ru/uploads/20110102/6E2KBxcx.gif


RE: Помощь с Мускулом - SWAT - 02.01.2011 23:02

Так ты указываешь на не существующий индекс в массиве, у тебя же 1 колонка там, поэтому нужно выводить:
PHP код:
echo $r[0]; 

А чтобы добраться до нужного ряда с колонками, вызывай в цикле:
PHP код:
mysql_fetch_row($q); 

...пока не доберешся до нужного. А вообще странная таблица... С одной колонкой таблица = бессмысленная таблица.


RE: Помощь с Мускулом - Rio - 03.01.2011 13:07

Уже разобрался с этим... Теперь у меня проблемы с кодировками.

Мне от нее и нужен один столбец. Я использую ее как хранилище данных а не как хранилище.


RE: Помощь с Мускулом - SWAT - 03.01.2011 16:59

У тебя в этой таблице нет зацепки, как достать нужное название, что в итоге приводит к хардкоду, где тебе необходимо достать все записи и потом в цикле бежать до нужной, это очень позорно Smile


RE: Помощь с Мускулом - Rio - 03.01.2011 17:47

А так не придется бежать? Или мне по столбцу создавать для каждого параметра,при том что он всего один?)
Все равно придется вызывать
PHP код:
mysql_fetch_row($query); 
пока не выберу нужный результат, так что...
Или ты знаешь способ обойти это?

[Изображение: Bl3fXJf2.jpg]


RE: Помощь с Мускулом - SWAT - 03.01.2011 19:22

Если бы у таблицы describe_forum было бы хотябы поле ID, тебе достаточно было бы указать его в запросе (where id=1) и при первом же (да и единственном) вызове mysql_fetch_row($query); ты бы получил нужную запись.

По поводу остального я не понял что ты конкретно хочешь. Вытащить просто список постов из определенной темы?


RE: Помощь с Мускулом - Rio - 03.01.2011 22:42

Не смотри, короче:
Мне надо показать напротив форума в таблице ту тему, изменения в которую (в данном форуме) заносились последними. Как это лучше сделать?
Кстати гемморой:
Запрос:
PHP код:
$q=mysql_query('select forum_name from forums where forum_id='.$forum_id); 

инструкция
PHP код:
echo mysql_fetch_row($q); 
выводит Array,
а для того чтобы вывести текст приходится делать такое извращение:

PHP код:
for($i=0$i<18$i++)
          echo 
$r[$i]; 

где $r - результат фетч_роу от запроса.


RE: Помощь с Мускулом - SWAT - 04.01.2011 16:09

mysql_fetch_row($q); возвращает индексный массив с полями.
юзай mysql_fetch_assoc($q); и будешь выводить так echo $r['forum_name'], хотя в первом случае у тебя должно быть тоже все просто, типа echo $r[0]; не понимаю откуда у тебя там 18 полей.

По поводу вывода темы, т.е. входной параметр это forum_id так?


RE: Помощь с Мускулом - Rio - 04.01.2011 22:12

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

Да, forum_id и только.

P.S. не хочу жаловаться но честно уже устал от этого php как-то...


RE: Помощь с Мускулом - SWAT - 05.01.2011 10:50

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

PHP код:
select p.post_text as postp.timestamp as ts from table_posts as p
left join table_threads 
as t on t.thread_id p.thread_id
where t
.forum_id 1 order by ts desc 

PHP код:
select p.post_text as postp.timestamp as tsf.forum_name as forum from table_posts as p
left join table_threads 
as t on t.thread_id p.thread_id
left join table_forums 
as f on f.forum_id t.forum_id
where t
.forum_id 1 order by ts desc 



RE: Помощь с Мускулом - Rio - 09.01.2011 15:06

Да уже пройденный этап, спасибо за совет Сват.
Дело не в самих запросах ибо в запросах я вроде неплохо шарю, сложность в самой архитектуре таблиц. Ведь тред - это не только тред сам по себе, к нему же еще и пост какой-нибудь привязан. Т.е. когда создаешь новый тред обязательно нужно кроме названия темы и описания ввести еще какой-нибудь текст... Вот с этим у меня сейчас проблема.

И вот еще.
Зачем на многих форумах указывает еще кроме идентификатора поста для Showpost.php еще и его номер относительно темы? Ведь идентификатор глобальный и к треду (сам по себе) никак не привязан (в глобальном контексте). Я так понимаю это создано просто для удобства, ибо никакой смысловой нагрузки для сценария вывода поста не несет, ибо номер поста относительно треда важен только в контексте самой темы, не так ли?


RE: Помощь с Мускулом - SWAT - 09.01.2011 18:47

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


RE: Помощь с Мускулом - Rio - 15.05.2012 14:21

Сват не в курсе какие еще есть методы поиска средствами SQL помимо select / like и regexp?
Мне нужно организовать поиск по тексту записей в таблице, не знаю как лучше сделать.


RE: Помощь с Мускулом - SWAT - 15.05.2012 17:02

Если ты ищешь мощный инструмент для полнотекстового поиска, то можно посмотреть в сторону Sphinx - http://sphinxsearch.com


RE: Помощь с Мускулом - Rio - 15.05.2012 17:05

Да не мне что-то простое для курсового проекта. Но все равно спасибо.