Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Помощь с Мускулом
Автор Сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #1
Помощь с Мускулом
Сват нужна твоя помощь.
Вот создают я таблицу запроосом в майсикъэл.

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

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

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #2
RE: Помощь с Мускулом
Должно работать.

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

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

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 01.01.2011 в 21:19, отредактировал пользователь SWAT.)
01.01.2011 21:17
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

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

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #4
RE: Помощь с Мускулом
Охеренеть на него вообще никакие внушения не действуют, пишу PRIMARY KEY id и name все равно добавляет записи с одинаковым именем... охренеть...
01.01.2011 23:27
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #5
RE: Помощь с Мускулом
Первичный ключ может быть только один, но он может быть составным типа:
PHP код:
PRIMARY KEY  (`id`,`user_name`) 
По поводу char и varchar - http://www.weblibrary.biz/mysql/tipy-sto.../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

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 02.01.2011 в 12:29, отредактировал пользователь SWAT.)
02.01.2011 12:28
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #6
RE: Помощь с Мускулом
Спасибо большое.
Вот еще скрипт, никак не хочет работать:

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
(Последний раз сообщение было отредактировано 02.01.2011 в 17:25, отредактировал пользователь Rio.)
02.01.2011 17:18
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #7
RE: Помощь с Мускулом
Так ты указываешь на не существующий индекс в массиве, у тебя же 1 колонка там, поэтому нужно выводить:
PHP код:
echo $r[0]; 

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

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

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 03.01.2011 в 12:13, отредактировал пользователь SWAT.)
02.01.2011 23:02
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #8
RE: Помощь с Мускулом
Уже разобрался с этим... Теперь у меня проблемы с кодировками.

Мне от нее и нужен один столбец. Я использую ее как хранилище данных а не как хранилище.
03.01.2011 13:07
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #9
RE: Помощь с Мускулом
У тебя в этой таблице нет зацепки, как достать нужное название, что в итоге приводит к хардкоду, где тебе необходимо достать все записи и потом в цикле бежать до нужной, это очень позорно Smile

[Изображение: barbers.png]
03.01.2011 16:59
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #10
RE: Помощь с Мускулом
А так не придется бежать? Или мне по столбцу создавать для каждого параметра,при том что он всего один?)
Все равно придется вызывать
PHP код:
mysql_fetch_row($query); 
пока не выберу нужный результат, так что...
Или ты знаешь способ обойти это?

[Изображение: Bl3fXJf2.jpg]
(Последний раз сообщение было отредактировано 03.01.2011 в 22:44, отредактировал пользователь Rio.)
03.01.2011 17:47
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #11
RE: Помощь с Мускулом
Если бы у таблицы describe_forum было бы хотябы поле ID, тебе достаточно было бы указать его в запросе (where id=1) и при первом же (да и единственном) вызове mysql_fetch_row($query); ты бы получил нужную запись.

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

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 03.01.2011 в 19:26, отредактировал пользователь SWAT.)
03.01.2011 19:22
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #12
RE: Помощь с Мускулом
Не смотри, короче:
Мне надо показать напротив форума в таблице ту тему, изменения в которую (в данном форуме) заносились последними. Как это лучше сделать?
Кстати гемморой:
Запрос:
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 - результат фетч_роу от запроса.
(Последний раз сообщение было отредактировано 03.01.2011 в 23:00, отредактировал пользователь Rio.)
03.01.2011 22:42
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #13
RE: Помощь с Мускулом
mysql_fetch_row($q); возвращает индексный массив с полями.
юзай mysql_fetch_assoc($q); и будешь выводить так echo $r['forum_name'], хотя в первом случае у тебя должно быть тоже все просто, типа echo $r[0]; не понимаю откуда у тебя там 18 полей.

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

[Изображение: barbers.png]
04.01.2011 16:09
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #14
RE: Помощь с Мускулом
Так вот оно возвращает мне не целый рядок со значениями а только значение первого рядка одного столбца и чтоб его вывести нужно писать такую вот хрень, ибо без этого выведет только 5 первых символов там и т.п.

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

P.S. не хочу жаловаться но честно уже устал от этого php как-то...
(Последний раз сообщение было отредактировано 04.01.2011 в 22:21, отредактировал пользователь Rio.)
04.01.2011 22:12
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #15
RE: Помощь с Мускулом
Тебе просто нужно взять книжку и почитать обо всем этом, хотябы основы, тогда все станет ясно.

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 

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 05.01.2011 в 10:52, отредактировал пользователь SWAT.)
05.01.2011 10:50
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #16
RE: Помощь с Мускулом
Да уже пройденный этап, спасибо за совет Сват.
Дело не в самих запросах ибо в запросах я вроде неплохо шарю, сложность в самой архитектуре таблиц. Ведь тред - это не только тред сам по себе, к нему же еще и пост какой-нибудь привязан. Т.е. когда создаешь новый тред обязательно нужно кроме названия темы и описания ввести еще какой-нибудь текст... Вот с этим у меня сейчас проблема.

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

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #17
RE: Помощь с Мускулом
Я вообще не понимаю зачем еще айди поста передавать, ведь ты заходишь в тему, где много постов, а значит нужно передавать только айди темы чтобы показать саму тему и ее посты. Как пример щас в адресную строку глянь.
Какие у тебя проблемы при создании то? Ну когда создаешь тему делай еще и пост и привязывай его к теме этой... по моему все элементарно.

[Изображение: barbers.png]
09.01.2011 18:47
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #18
RE: Помощь с Мускулом
Сват не в курсе какие еще есть методы поиска средствами SQL помимо select / like и regexp?
Мне нужно организовать поиск по тексту записей в таблице, не знаю как лучше сделать.
15.05.2012 14:21
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7245
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1218 раз(а) в 765 сообщ.
Сообщение: #19
RE: Помощь с Мускулом
Если ты ищешь мощный инструмент для полнотекстового поиска, то можно посмотреть в сторону Sphinx - http://sphinxsearch.com

[Изображение: barbers.png]
15.05.2012 17:02
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #20
RE: Помощь с Мускулом
Да не мне что-то простое для курсового проекта. Но все равно спасибо.
15.05.2012 17:05
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  Решил создать сайт...Нужна помощь. funt 30 99155 17.12.2006 21:09
Посл. сообщение: funt
  Нужна помощь!!! ILJA 8 29097 29.10.2006 12:27
Посл. сообщение: Michael

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)