PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (13): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец

> Найдено сообщений: 191
gheka Отправлено: 18 Ноября, 2012 - 19:36:43 • Тема: Выборка из БД по 2 таблицам с без повторов записей. • Форум: Работа с СУБД

Ответов: 13
Просмотров: 2466
LIME пишет:
по другому?
легко


Давай реализуй Радость

Повторюсь потому что может ты не понял меня. Запись в базе времени и SID
Время - нужно для проверки кто сейчас на сайте
SID - это идентификатор текущей сессии и пользователя
gheka Отправлено: 18 Ноября, 2012 - 19:18:02 • Тема: Выборка из БД по 2 таблицам с без повторов записей. • Форум: Работа с СУБД

Ответов: 13
Просмотров: 2466
LIME пишет:
время хранения сессии в htaccess настраивается


Это да но как я уже писал запись вы базе данных нужна для получения информации кто находится сейчас на сайте,

поля
start_time время открытия сессии
last_time последнее время активности
Если время между start_time и last_time больше 20 минут ( или сколько я установлю ) то человек считается уже не онлайн, и сессия из базы удаляется.
По другому это не как не реализуешь.
gheka Отправлено: 18 Ноября, 2012 - 18:03:31 • Тема: Выборка из БД по 2 таблицам с без повторов записей. • Форум: Работа с СУБД

Ответов: 13
Просмотров: 2466
LIME пишет:
время хранения сессии по дефолту 20 мин
не надо ничего чистить
а при авторизации просто переписывать сид в таблице
и время писать не придется и более 1 юзера не зайдет под одной учеткой
и сложных запросов писать не надо
(Добавление)
мид писать в таблицу юхнов
и таблицу сессий выбросить


Тут у меня не совсем так сделано я продумал так чтобы время сессии была настраиваемая, можно сделать и 20 минут и 40 и т.д для удобности. Так что время писать нужно и чистка в БД сессий нужна. Для Оптимизации базы данных.

Поводу обновления сессии за это спасибо, будет правильно сделать так, хотя и придётся дописать проверку на доступность сессии и если она есть в БД то обновить а если нет то записать новую.
Но опять же хочется узнать как сделать и выборку из БД без повторов на будущее чтобы потом не создавать новую тему.
gheka Отправлено: 18 Ноября, 2012 - 17:31:26 • Тема: Выборка из БД по 2 таблицам с без повторов записей. • Форум: Работа с СУБД

Ответов: 13
Просмотров: 2466
LIME пишет:
встречный вопрос
почему повторная авторизация инсертит вместо апдейта?

Вопрос правильный, У меня есть функция удаления старых сессии из БД у которых время простоя больше 20 минут. Правильно будет и на страницу авторизации дописать скрипт удаления предыдущей сессии. Это я пожалуй и сделаю но всё же хотел бы узнать и по выборке.
gheka Отправлено: 18 Ноября, 2012 - 17:09:50 • Тема: Выборка из БД по 2 таблицам с без повторов записей. • Форум: Работа с СУБД

Ответов: 13
Просмотров: 2466
Здравствуйте есть запрос который выводит пользователей который находятся на сайте

Так вот есть 2 таблицы
USERS
Поля id, name, ip_input, date и т.д
и
SESSIONS
поля id, id_user, sid, start_time, last_time

Запрос
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $t = "SELECT count(*) AS `count` FROM `" . DB_PREFIX . "users` JOIN `" . DB_PREFIX . "sessions` ON " . DB_PREFIX . "users.id=" . DB_PREFIX . "sessions.id_user";
  3.  
  4. $lines_count = mysql_query ( sprintf ( $t ) );
  5. $lines_count = mysql_result ( $lines_count, 0 );
  6.  


Запись в таблицу SESSIONS происходит при авторизации пользователя и если пользователь авторизуется повторно то с его id будет уже 2 записи
А запрос будет выводить уже 2 записи с его id
Подскажите что нужно дописать в запросе чтобы выводило только одну запись с одним id без повтора, ту запись у которого start_time больше.
gheka Отправлено: 04 Июня, 2012 - 13:45:35 • Тема: Сортировка данных по количеству строк в другой таблице • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 17
Не дождался ответа поэтому всё же решил сам таким образам . Может кому нибудь пригодится.

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ("SELECT " . DB_PREFIX . "user.id, count(" . DB_PREFIX . "messages.message) AS `count` FROM `" . DB_PREFIX . "user` LEFT JOIN `" . DB_PREFIX . "messages` ON " . DB_PREFIX . "user.id=" . DB_PREFIX . "messages.id_user WHERE " . DB_PREFIX . "user.status!='0' AND " . DB_PREFIX . "user.status!='4' GROUP BY " . DB_PREFIX . "user.id ORDER BY `count` DESC");
  3.    
  4. IF (mysql_num_rows ( $result ) != 0) {
  5.     FOR ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
  6.         $id_user = mysql_result ( $result, $i );
  7.                
  8.         echo "" . $id_user . "<br />";
  9. }
  10. }
  11.  

Если есть более правильное решение напишите.
gheka Отправлено: 03 Июня, 2012 - 22:27:21 • Тема: Сортировка данных по количеству строк в другой таблице • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 17
Здравствуйте есть 2 таблицы user и messages
Поля:
user - id, name, phone, status
messages - id, id_user, message, status

В таблице USER есть 3 пользователя id 1, id 2, id 3
В таблице MESSAGES 5 сообщении 2 сообщения от id_user 3
и 3 сообщения от id_user 1
По идее должно вывести так 1, 3, 2

Нужно отсортировать таблицу user ко католичеству сообщений каждого пользователя то есть по id, связи между таблицами id и id_user
и чтобы пользователя status!=0 и !=4
Я попытался составить запрос но получилось не корректно выводит только 1 id пользователя а не 3 как должно быть.
Помогите составить запрос.
МОЙ запрос:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query ("SELECT *, count(" . DB_PREFIX . "messages.id_user) FROM `" . DB_PREFIX . "user` JOIN `" . DB_PREFIX . "messages` ON " . DB_PREFIX . "user.id=" . DB_PREFIX . "messages.id_user WHERE " . DB_PREFIX . "user.status!='0' AND " . DB_PREFIX . "user.status!='4' ORDER BY " . DB_PREFIX . "messages.id_user DESC");
  3.  
  4.                                                                                        
  5. IF (mysql_num_rows ( $result ) != 0) {
  6.         FOR ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
  7.                 $user_list = mysql_fetch_assoc ( $result );
  8.                                
  9.                 echo "" . $user_list ['id'] . "<br />";
  10.         }
  11. }
  12.  
gheka Отправлено: 18 Мая, 2012 - 09:39:35 • Тема: Убрать повторы записей из выборки данных • Форум: Работа с СУБД

Ответов: 2
Просмотров: 2530
EuGen пишет:
PHP:
скопировать код в буфер обмена
  1. $t = "SELECT * FROM `" . DB_PREFIX . "messages` WHERE `sender`='%d' OR `addressee`='%d' GROUP BY `sender`+`addressee`";

?


Большое спасибо помогло.
gheka Отправлено: 18 Мая, 2012 - 01:46:40 • Тема: Убрать повторы записей из выборки данных • Форум: Работа с СУБД

Ответов: 2
Просмотров: 2530
Здравствуйте есть таблица MESSAGES
В ней поля id, sender, addressee message, date
В поля sender и addressee записываются ID пользователей.
sender ид отправителя
addressee ид получателя

То есть 1 пользователь переписывается с другим пользователем
id | sender | addressee | message | date
1 2 1 привет 10.05.12
2 1 2 и тебе привет 11.05.12
3 2 1 как дела 11.05.12
4 1 2 нормально 11.05.12
5 3 1 как дела 11.05.12
6 4 1 нормально 11.05.12
При переходе в личные сообщения пользователь должен увидеть список всех своих сообщений, уникальных по пользователю. Выбрав которое он может просмотреть всю переписку с выбранным пользователем.

Запрос ниже делает это но присутствуют повторения записей

При правильной работе он должен вывести 3 строки а он выводит 4

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $t = "SELECT * FROM `" . DB_PREFIX . "messages` WHERE `sender`='%d' GROUP BY `addressee` UNION SELECT * FROM `" . DB_PREFIX . "messages` WHERE `addressee`='%d' GROUP BY `sender`";
  3. $result = mysql_query ( sprintf ( $t, mysql_real_escape_string ( 1 ),
  4.                                                      mysql_real_escape_string ( 1 ) ));
  5.  
  6.  


Как убрать повторяющиеся записи?
gheka Отправлено: 17 Мая, 2012 - 16:33:12 • Тема: Помогите составить запрос MYSQL • Форум: Работа с СУБД

Ответов: 0
Просмотров: 555
Здравствуйте есть таблица с MESSAGES
В ней поля id, sender, addressee message, date
В поля sender и addressee записываются ID пользователя.

Нужно составить запрос так чтобы при выборке через for выводились поля

Отправитель, сообщение, дата сообщения. И выводилось так чтобы было группами,

То есть если есть переписка между ID 1 и 2 то должно вывести только одна строка.
Если переписка есть ещё между ID 1 и 3 то выводилось вторая строка. и тд.

Я составил запрос так:

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $t = "SELECT * FROM `" . DB_PREFIX . "messages` WHERE `sender`='%d' OR `addressee`='%d' GROUP BY `addressee`";
  3. $result = mysql_query ( sprintf ( $t, mysql_real_escape_string ( $user ['id'] ),
  4.                                         mysql_real_escape_string ( $user ['id'] ) ));
  5.  


Но выводит не правильно выводит так, если есть 2 сообщения одно от ID 1 другое ID 2 то выводит 2 строки если 3 сообщения то выводит 3 строки.
Подскажите как правильно составить запрос?
gheka Отправлено: 26 Марта, 2012 - 21:14:35 • Тема: Получить ответ от загрузчика php в js • Форум: JavaScript & VBScript

Ответов: 0
Просмотров: 1442
Здравствуйте есть скрипт jQuery Uploadify. загрузчик файлов на сервер

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(document).ready(function() {
  3.         $("#uploadify").uploadify({
  4.                 'uploader'       : '../scripts/uploadify.swf', // Относительный путь к файлу uploadify.swf. По умолчанию uploadify.swf
  5.                 'script'         : '../goods_loader.php', // Относительный путь uploadify.php. По умолчанию uploadify.php. Это скрипт - загрузчик. Обязательно посмотрите его
  6.                 'cancelImg'      : '../scripts/cancel.png', // Относительный путь до картинки cancel.png. По умолчанию cancel.png
  7.                 'folder'         : '../files/', // Путь к папке, в которой Вы хотите сохранять загружаемые файлы.
  8.                                       //Эту настройку можно опустить, тогда папку загрузки необходимо определить в uploadify.php
  9.                                       //Помните! На большистве хостингов, папка, в которую Вы пытаетесь загрузить файлы должна быть доступна на запись, не забудьте выставить соответствующие права.
  10.                 'scriptData': {'id_g' : id_g,'id_s' : id_s}, // Передаём в загрузчик ID g и ID s
  11.  
  12.                                
  13.                 'queueID'        : 'fileQueue', // ID элемента, в котором будет показываться очередь загрузки
  14.         'queueSizeLimit' : '3', // Лимит очереди (максим. число загруж файлов). По умолчанию 999
  15.                 'auto'           : false, // Если истина, загрузка начнется сразу после выбора файлов
  16.                 'multi'          : true,  // Если истина, то разрешена загрузка нескольких файлов
  17.         'fileDesc'       : 'только фотографии jpg', // Текст, который будет внизу появляющегося диалогового окна. Без этого параметра будет написано "Все файлы('.')"
  18.         'fileExt'        : '*.jpg; *.jpeg; *.JPG; *.JPE; *.jpe', // разрешенные к загрузке файлы (остальные вдиалолговом окне будути скрыты)
  19.         'sizeLimit'      : 1111111111, // Макс. Размер файла для каждой загрузки (в байтах). Если не указываем, ограничено будет только настройками Вашего сервера
  20.         'simUploadLimit' : 1, // Ограничение на кол-во одновременных закачек. По умолчанию 1. Если значение равно 1, то загружаться будет 1 файл, а остальные будут стоять за ним в очереди. Если 2 - два загружаются, остальные ждут их  и т.д
  21.         'buttonText'     : 'File', // Текст на кнопке. По умолчанию BROWSE. К сожалению русскийтекст не поддрживается
  22.         'buttonImg'      : '../image_s/choose_files.png', // Путь до картинки, которая будет служить кнопкой. Компенсирует недостаток предыдущей. Если эта настройка указана, предыдущая будет проигнорирована
  23.       'width' : 190,
  24.           'height' : 43,
  25.           // 'onInit'        : alert('Скрипт готов!'),// Функция, которая срабатывает, когда скрипт будет загружен. По умолчанию обработчик событий скрывает целевой элемент на странице и заменяет его с флэш-файл, затем создает очереди контейнера после него.
  26.         /*
  27.         'onSelect'       : function(event, queueID, fileObj){ // Функция, которая сработает, при выборе каждого файла. Пример:
  28.                             var string =  'Имя фала: '     + fileObj.name  +'\n';
  29.                                 string += 'Размер файла: ' + fileObj.size  + 'байт\n';
  30.                                 string += 'Тип: '          + fileObj.type  + '\n';  
  31.                                 string += 'ID в очереди: ' + queueID       +'\n'; // уникальный ID файла, генерируется скриптом
  32.                             alert(string)
  33.                          },
  34.         'onSelectOnce'  : function(event, data){   //Функция, которая вызывается один раз для каждой операции выбора.
  35.                             var string  = 'Файлов в очереди: '                  + data.fileCount      +'\n';
  36.                                 string += 'Было выбрано файлов: '               + data.filesSelected  +'\n';
  37.                                 string += 'Заменено файлов в очереди: '         + data.filesReplaced  +'\n';
  38.                                 string += 'Итоговый вес файлов в очереди: '    + data.allBytesTotal  +'\n';
  39.                             alert(string);
  40.         },
  41.         */
  42.         'onProgress'    : function(event, queueID, fileObj, data){  // Срабатываети каждый раз в ходе изменений во време загрузки
  43.                           var string   = 'Загружаем: '                             + fileObj.name            +'<br />';
  44.                               string  += 'Размер: '                                + fileObj.size            +'<br />';
  45.                               string  += 'Тип: '                                   + fileObj.type            +'<br />';
  46.                               string  += 'загрузка текущего файла: '               + data.percentage         +'%<br />';
  47.                               string  += 'загружено байт текущего файла: '         + data.bytesLoaded        +'<br />';
  48.                               string  += 'загружено байт всей очереди: '           + data.allBytesLoaded     +'<br />';
  49.                               string  += 'скорость загрузки, KB/s: '               + data.speed              +'<br />';
  50.                               $('#info,#info2').show();
  51.                               $('#info').html(string);
  52.         },
  53.         'onComplete'    : function(event, queueID, fileObj, response, data){ // Срабатывает когда файл загружен на сервер. По умолчанию файл удаляется из очереди, но мы можем и добваить свои какие-либо действия
  54.                           var string   = 'Загружен файл: '                         + fileObj.name            +'<br />';
  55.                               string  += 'Путь до файла: '                         + fileObj.filePath        +'<br />';
  56.                               string  += 'Размер, байт: '                          + fileObj.size            +'<br />';
  57.                               string  += 'Тип: '                                   + fileObj.type            +'<br />';
  58.                               string  += 'Пришел ответ от сервера: '               + response                +'<br />';
  59.                               string  += 'Файлов в очереди: '                      + data.fileCount          +'<br />';
  60.                               string  += 'скорость загрузки, KB/s: '               + data.speed              +'<br />';
  61.                                                          
  62.                                                           // Вывод ошибок
  63.                                                           if(response == 1){alert('Изображение загружено');}'
  64.                                                           if(response == 2){alert('Произошла ошибка! Формат изображения неподходит.');}
  65.                                                           if(response == 3){alert('Произошла ошибка! Размер изобаржения превышает норму.');}
  66.                                                           if(response == 4){alert('Произошла ошибка! Попробуйте ещё раз загрузить изображение.');}
  67.                              
  68.                              $('#info2').append('<br />Фаил ' + fileObj.name + ' загружен!<br />');                      
  69.            
  70.        },
  71.        'onAllComplete' : function(event, data){ // Срабатывает когда все загрузки завершены
  72.                          var string   = 'Загружено файлов: '                      + data.filesUploaded       +'\n';
  73.                              string  += 'Ошибок: '                                + data.errors              +'\n';
  74.                              string  += 'Всего загружено kбайт: '                 + data.allBytesLoaded/1024 +'\n';  
  75.                          
  76.                                $('#info,#info2').fadeOut(5000, function() { $('#info,#info2').html('');}); // Плавно прячем информационные блоки и затем очищаем их          
  77.                                                         location.reload();
  78.                 }
  79.  
  80.                
  81.        
  82.         });
  83.  
  84.    
  85. });
  86.  
  87.  


и есть обработчик - загрузчик php

PHP:
скопировать код в буфер обмена
  1.  
  2. if (!empty($_FILES)) {
  3.         $tempFile = $_FILES['Filedata']['tmp_name'];
  4.    
  5.     if(!$_REQUEST[folder]) $folder = '../../files/goods/'; // Если в js-части мы не определили директорию загрузки, мы можем сделать это здесь
  6.     else $folder = $_REQUEST['folder'];
  7.    
  8.         $targetPath = $_SERVER['DOCUMENT_ROOT'] . $folder . '/';
  9.         $ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']); // определяем расширение загружаемого файла
  10.         $unic_name  = time().'_'.rand(0,1000).$ext;
  11.    $dir = '../files';
  12.     $targetFile =  str_replace('//','/',$dir) . $unic_name;
  13.        
  14.  
  15.                
  16.         move_uploaded_file($tempFile,$targetFile);
  17.         echo "1"; // Отправляем ответ. Например, просто 1
  18.  
  19.         $res = 544; передать это значение
  20.  

Подскажите пожалуйста как мне передать полученное значение переменной допустим $res из загрузчика php в javascript ?
И как мне его так открыть. ?
gheka Отправлено: 05 Марта, 2012 - 19:50:22 • Тема: Вывод данных из SimpleXMLElement Object • Форум: Вопросы новичков

Ответов: 6
Просмотров: 471
Panoptik пишет:
в идеале вы одлжны обратиться к orderid[0] как-то так:
PHP:
скопировать код в буфер обмена
  1. $res->outinvoice->@attributes->orderid[0];
но даже боюсь предположить что из этого получится
(Добавление)
было бы неплохо, если бы вы привели кусок xml


Нет не работает

Вот функция которая выполняется и выводит то XML что в самом начале:

PHP:
скопировать код в буфер обмена
  1.  
  2.         # interface X4
  3.         # http://wiki.webmoney.ru/wiki/show/Interfeys_X4
  4.         public function X4($purse, $wminvid, $orderid, $datestart, $datefinish) {
  5.                 $reqn = $this->_reqn();
  6.                 $req = new SimpleXMLElement('<w3s.request/>');
  7.                 $req->reqn = $reqn;
  8.  
  9.                 if ($this->classic) {
  10.                         $req->wmid = $this->wmid;
  11.                         $req->sign = $this->_sign($purse.$reqn);
  12.                 }
  13.                 $group = 'getoutinvoices';
  14.                 $req->$group->purse = $purse;
  15.                 $req->$group->wminvid = $wminvid;
  16.                 $req->$group->orderid = $orderid;
  17.                 $req->$group->datestart = $datestart;
  18.                 $req->$group->datefinish = $datefinish;
  19.                 $url = $this->classic ? 'https://w3s.webmoney.ru/asp/XMLOutInvoices.asp' : 'https://w3s.webmoney.ru/asp/XMLOutInvoicesCert.asp';
  20.  
  21.                 return $this->_request($url, $req->asXML(), __FUNCTION__);
  22.         }
  23.  
gheka Отправлено: 05 Марта, 2012 - 19:23:05 • Тема: Вывод данных из SimpleXMLElement Object • Форум: Вопросы новичков

Ответов: 6
Просмотров: 471
Panoptik пишет:
@attributes - что это?


Честно сам не знаю эти данные получаю через Xml интерфейсы webmoney
gheka Отправлено: 05 Марта, 2012 - 19:20:36 • Тема: Функция echo, с php файла в html страницу • Форум: Вопросы новичков

Ответов: 9
Просмотров: 384
Алексеей пишет:
что ваш код делает ?


Выводит значение переменных в нужную HTML страницу без использования include и.д


Например вам нужно вывести значение переменной id

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $id = 23;
  4.  
  5. echo "<br>";
  6. $themes = file ( "index.html" ); // страница HTML
  7. for($t = 0; $t < count ( $themes ); $t ++) {
  8.         $themes [$t] = str_replace ( "@id@", $id, $themes [$t] );
  9.         echo "$themes[$t]";
  10. }
  11.  
  12.  



Вот в HTML странице index.html

CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. значения ID: @id@
  4.  
  5.  
  6.  
  7.  
  8.  


Выведет 23
gheka Отправлено: 05 Марта, 2012 - 18:46:29 • Тема: Функция echo, с php файла в html страницу • Форум: Вопросы новичков

Ответов: 9
Просмотров: 384
Алексеей пишет:
Есть файл livein.php внутри файла нужный скрипт, и функция echo, например в php сайте можно было бы использовать include, чтобы на странице потом показывало элементы что внутри livein.php, а как поступить с сайта где нету php ? я использовал для Googlerobots функцию $.getScript( ) а как вывести то что внутри livein.php я не знаю, как это сделать ?


Думаю все таки поддерживает вот что нужно разместить в файле livein.php

PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<br>";
  3. $themes = file ( "папка/страница.htm" ); // страница HTML
  4. for($t = 0; $t < count ( $themes ); $t ++) {
  5.         $themes [$t] = str_replace ( "image_s", ""папка/image_s", $themes [$t] );
  6.         $themes [$t] = str_replace ( "@date@", "" . date ( "d.m.Y" ) . "", $themes [$t] );
  7.         $themes [$t] = str_replace ( "@selle@", $переменная, $themes [$t] );
  8.         $themes [$t] = str_replace ( "@goods@", $переменная, $themes [$t] );
  9.         $themes [$t] = str_replace ( "@sale@", $переменная, $themes [$t] );
  10.         $themes [$t] = str_replace ( "@retu@", $переменная, $themes [$t] );
  11.         $themes [$t] = str_replace ( "@price@", $переменная, $themes [$t] );
  12.         $themes [$t] = str_replace ( "@sutk@", $переменная, $themes [$t] );
  13.         $themes [$t] = str_replace ( "@size@", $переменная, $themes [$t] );
  14.         echo "$themes[$t]";
  15. }
  16.  


Выводятся данные в HTML под средством @название@ и т.д

Страниц (13): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB