Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Открыть новую тему     Написать ответ в эту тему

Mamay



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
myxa0
`id` int(11) NOT NULL auto_increment,
 PRIMARY KEY  (`id`),
гы
на будущее - auto_increment не может повторятся

----------
Даже самый дурацкий замысел можно выполнить мастерски

Всего записей: 1352 | Зарегистр. 03-09-2002 | Отправлено: 17:02 01-04-2008
roddik



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Есть ли в mysql аналог пхпшной ф-и implode? Спасибо!

Всего записей: 233 | Зарегистр. 27-01-2007 | Отправлено: 15:29 20-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
roddik
а что именно имплодить? есть GROUP_CONCAT()

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 15:34 20-04-2008
roddik



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zerkms
например из таблицы
значение
1
2
3
достать '1, 2, 3'  
 
Добавлено:
zerkms
спасибо большое, работает
SELECT GROUP_CONCAT( `name` )
FROM `g_fields`

Всего записей: 233 | Зарегистр. 27-01-2007 | Отправлено: 17:33 20-04-2008
myxa0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно проверить наличае многих значений в БД как можно быстрее?
 
Это нужно для решения следующей задачи:
Есть база данных, в которой есть названия файлов.
Нужно показать все файлы в определенной папке на сервере, которых нет в базе.
Сделано так:
 

Код:
 
$handle=opendir($dir);
 
while ($file = readdir($handle))  
{
 
$res = mysql_query ("SELECT `id` FROM `files` WHERE `file`='".$file."'");
if (mysql_num_rows($res)==0)  
  {
 
     $f["files"][]=$file;
    
  }
}
 

 
Но если  директории файлов более 3000, то скорость генерации страницы примерно равна 22 секунды.
Можно ли как-то увеличить скорость работы скрипта?

Всего записей: 76 | Зарегистр. 02-01-2005 | Отправлено: 08:14 21-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
myxa0
выбрать в массив все файлы, затем искать в базе по NOT IN ()

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 09:49 21-04-2008
myxa0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я сделал наоборот.
Выбрал все записи из базы в массив и далее в цикле по in_array смотрел есть ли файлы в этом массиве.
В общем запросов к базе в тысячи раз меньше в следствии чего страница грузится менее одной секунды против прошлых 24 секунд.
 
Но сразу возникает вопрос: на сколько большой массив можно создать средствами php?
Пока количество записей равно 3389, но их будет в десятки, сотни раз больше.
Потянет ли php? Или дело здесь в серваке?

Всего записей: 76 | Зарегистр. 02-01-2005 | Отправлено: 10:47 21-04-2008 | Исправлено: myxa0, 10:53 21-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
зачем делать наоборот, если в базе у тебя выборка больше, чем список файлов???
тем более что говоришь что в базе число записей увеличится
переделай как я тебе сказал и не парься о производительности
ps: надеюсь что на поле file индекс есть?

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 11:01 21-04-2008
myxa0

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда вопрос: как передать в запрос массив, созданный в php?

Всего записей: 76 | Зарегистр. 02-01-2005 | Отправлено: 02:43 22-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
myxa0

Цитата:
Тогда вопрос: как передать в запрос массив, созданный в php?

вам же указали, что нужно делать.
прочитайте про NOT IN(file1,file2,file3,...)
вот и формируете содержимое в IN(..)
хоть циклом, хоть через join

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:51 22-04-2008
Naezdnik



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 Такой вопрос.  
 MySQL и php.
 Есть БД.
____________________
| ID | Товар | Описание |
=================
 
В БД три поля id, товар и описание.
 
 На страницу выводится таблица с полями ID и Товар.
 
 Как сделать, чтобы выводимые данные в таблице стали ссылками и при переходе по ссылке генерировалась новая страница со всеми полями БД.  
 
  Спасибо за внимание!

Всего записей: 27 | Зарегистр. 18-10-2007 | Отправлено: 15:06 28-04-2008 | Исправлено: Naezdnik, 16:14 28-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Naezdnik

Цитата:
Как сделать, чтобы выводимые данные в таблице стали ссылками и

выводить их как
echo "<a href='script.php?id=".подставляем_переменную_содержащую_id_данного_товара."'>Ссылка</a>";
в script.php делаем что хочется..

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 17:59 28-04-2008
Naezdnik



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
 
$connection = mysql_connect ("localhost", "root", "*******")
       or die (" Ошибка соединения с сервером ");
$my_site = mysql_select_db ("my_site", $connection)
                   or die ("Ошибка при выборе базы данных");
$query = "SELECT * FROM our_tovar";
$result = mysql_query ($query)
       or die ("Ошибка при выполнении запроса: .mysql_error ()");
         
        
        echo "<TABLE BORDER='1'>";
        echo "<TR>";
        echo "<TH> Товар </TH><TH> Цена от: </TH>";
        echo "</TR>";
        while ($row = mysql_fetch_array ($result))
        {
        echo "<TR>";
        echo "<TD>", $row ['tovar'], "</TD><TD>", $row ['price'], "</TD>";
        echo "</TR>";
        }
        echo "</TABLE>";
         
        
        
        mysql_close ($connection);
 

 
       Как сюда прикрутить эту ссылку. И что писать в script.php?

Всего записей: 27 | Зарегистр. 18-10-2007 | Отправлено: 11:22 29-04-2008
Delphi6



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Naezdnik
Очень просто Правда писал наизусть, нужно проверить синтаксис

Код:
...
while ($row = mysql_fetch_array ($result)) {
  echo "<TR>";
  echo "<TD>"<a href=\"script.php?tovar={$row ['tovar']}\">{$row['price']}</a>"</TD><TD></TD>";
  echo "</TR>";
}
...

Всего записей: 2631 | Зарегистр. 06-07-2004 | Отправлено: 23:45 29-04-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Naezdnik

Цитата:
И что писать в script.php?

то, что вы хотите там делать.. или думаете это очевидно из

Цитата:
по ссылке генерировалась новая страница со всеми полями БД



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:53 29-04-2008
Absac

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с mysql запросом, есть такой запрос, только таблиц побольше:
 

Цитата:
SELECT *
FROM book_work_themes
WHERE id_author =18
union
SELECT *
FROM  book_communication_themes
WHERE id_author =18
 
order by data
limit 10

 
 
Можно как-то узнать при обработке запроса из какой таблицы он был сделан?
 
т.е. на php получается обработка этого запроса:
while ($main_array = mysql_fetch_assoc($main_iquery)) {
        // тут нужно узнать из какой бд, а в массиве ничего о таблице нет ...  
       }

Всего записей: 66 | Зарегистр. 05-03-2008 | Отправлено: 06:48 30-04-2008
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SELECT *, 'work' AS `from` ...
UNION
SELECT *, 'communication` AS `from`
 
потом соответственно юзаешь $row['from']

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 09:43 30-04-2008
Naezdnik



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Delphi6
Cheery
 
 Спасибо за участие! Проблема решена!

Всего записей: 27 | Зарегистр. 18-10-2007 | Отправлено: 13:13 30-04-2008
roddik



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет!
есть таблица, к примеру такая
id а б
1 1 1
2 1 2
3 2 2
4 2 1
нужно достать все значения, но с distinct по полю б, select * from `table` where 1 group by `b` но при этом нужно делать order by rand(), select * from `table` where 1 order by rand() group by `b`, проблема в том, что если писать order by перед group by, mysql возвращает ошибку, если писать order by после group by, ошибки нету, но достаются всегда те же значения (id 1 и id 2), меняется только порядок групп. как можно это сделать? спасибо!

Всего записей: 233 | Зарегистр. 27-01-2007 | Отправлено: 17:57 17-05-2008
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
roddik

Цитата:
как можно это сделать?

а можно без sql описать желаемый результат?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:16 18-05-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru