PHP.SU

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

Страниц (1): [1]

> Найдено сообщений: 15
wisedarkness Отправлено: 27 Апреля, 2016 - 13:44:57 • Тема: Двойной запрос к одной базе • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 24
Здравствуйте.
Не получается осуществить выборку по 2-ум одинаковым полям из разных строк из 1 таблицы, где 1 поле LIKE, другое =

Есть вот такой рабочий код-
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DISTINCT `uid` FROM `TABLE` WHERE `data` IN ( '$search','$search_v' ) AND `type`='user' GROUP BY `uid` HAVING count(DISTINCT `data`) = '2'


Ищет по двум полям как надо, но возникла потребность в использовании LIKE '$search_v'

Такое не проходит т.к в 1 строке только одно поле `data`
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `data` = '$search' AND `data` LIKE '%$search_v%'


При
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `data` = '$search' OR `data` LIKE '%$search_v%'

Выводит много лишнего.

Пробовал через JOIN
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `t1`.`uid` FROM `TABLE` AS `t1` LEFT JOIN `TABLE` AS `t2` ON (`t2`.`data` LIKE '%$search_v%') AND(`t2`.`data`='$search') WHERE  `t1`.`data` AND `t1`.`uid`=`t2`.`uid`  AND `t1`.`type`='user' GROUP BY `t1`.`uid`

Пробовал менять местами и по разному ставить параметры из ON и WHERE, но пока не получается.

Смысл в том, что 1 параметр data=$search должен иметь бОльший приоритет.
А потом шел поиск по data LIKE %$search_v%
Группируя по uid
Решение вроде кажется простым и очевидным, но я пока не могу понять как это осуществить.
Спасибо! Улыбка
wisedarkness Отправлено: 29 Ноября, 2015 - 19:17:05 • Тема: Объединение записей по общей колонке • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 64
Мелкий пишет:
Тогда можно посчитать уникальность прямо тут, ухудшив производительность.
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT uid
  2. FROM  `table`
  3. WHERE  `data` IN ( 'Параметр1', 'Параметр2' )
  4. GROUP BY uid
  5. HAVING count(DISTINCT `data`) = 2


Возможно, будет эффективнее сделать обход таблицы uid'ов с where exists (select 1 from `tbl` where `tbl`.uid=uid_table.uid and `data` = 'Параметр1') and exists (/**/)
Хотя вряд ли.


Спасибо большое, то, что нужно. Пробовал тоже IN ( 'Параметр1', 'Параметр2' ), но не догадался до HAVING count(distinct `data`) = 2.
Хм
wisedarkness Отправлено: 29 Ноября, 2015 - 17:04:42 • Тема: Объединение записей по общей колонке • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 64
Мелкий пишет:
Для какой субд?
INTERSECT вместо UNION для postgresql можно взять.

Если на сочетание uid и data есть уникальный ключ, то можно
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT uid
  2. FROM  `table`
  3. WHERE  `data` IN ( 'Параметр1', 'Параметр2' )
  4. GROUP BY uid
  5. HAVING count(0) = 2 -- = количеству совпадающих параметров


Спасибо, но уникального ключа нету и этот запрос не сработал как надо.
Бд- mysql
wisedarkness Отправлено: 29 Ноября, 2015 - 15:09:55 • Тема: Объединение записей по общей колонке • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 64
Есть таблица и поля uid и data.
Пытаюсь объединить 2 запроса по 1 колонке data
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. SELECT *
  3. FROM  `table`
  4. WHERE  `data` =  'Параметр1'
  5. UNION DISTINCT
  6. SELECT *
  7. FROM  `table`
  8. WHERE  `data` =  'Параметр2'
  9.  

Получаю выборку, где data параметр1 или параметр2.
А надо где для одного uid есть параметр1 и параметр2.
Никак не могу понять как засунуть это в один запрос.
wisedarkness Отправлено: 23 Сентября, 2014 - 14:59:17 • Тема: умножение и деление в js • Форум: Вопросы новичков

Ответов: 13
Просмотров: 417
Выведи все типы перед операциями:
CODE (javascript):
скопировать код в буфер обмена
  1. alert(typeof unknow);


Что бы наверняка. И посмотри что напишет. От туда и пляши уже.
wisedarkness Отправлено: 20 Сентября, 2014 - 15:10:48 • Тема: Вывод массивов из JSON • Форум: Вопросы новичков

Ответов: 3
Просмотров: 253
Viper пишет:
PHP:
скопировать код в буфер обмена
  1. $url = file_get_contents("http://timepad.ru/api/event_get/?code=9082e59fb30b726781b8aa9bc4a37321&id=25847&e_id=139139");
  2. $data = json_decode($url);
  3. $arr = array();
  4.  
  5. if (isset($data->registrations)) {
  6.         foreach ($data->registrations as $key=>$value) {
  7.                 $arr[$key]['name'] = $value->name;
  8.                 $arr[$key]['price'] = $value->price;
  9.                 $arr[$key]['ticketsLeft'] = $value->ticketsLeft;
  10.         }
  11. }
  12.  
  13. echo '<pre>';
  14. print_r($arr);
  15. echo '</pre>';


Спасибо огромное! А можно как то вывод сделать без названий массивов. Т.е что бы просто значения выводились?
(Добавление)


Сам понял) Это же уже чисто работа с массивом. Спасибо огромное за помощь)

PHP:
скопировать код в буфер обмена
  1. $count = count($arr);
  2. for ($i = 0; $i < $count; $i++) {
  3. echo $arr[$i]['name']; }
wisedarkness Отправлено: 20 Сентября, 2014 - 01:29:50 • Тема: Вывод массивов из JSON • Форум: Вопросы новичков

Ответов: 3
Просмотров: 253
В этой теме вообще 0 и никак не могу нормально вывести массивы.

PHP:
скопировать код в буфер обмена
  1. <?
  2. $url = file_get_contents("http://timepad.ru/api/event_get/?code=9082e59fb30b726781b8aa9bc4a37321&id=25847&e_id=139139");
  3.  
  4.  $json= json_decode($url);
  5.  
  6. foreach($json->name as $name)
  7. {echo $name;}
  8.  
  9. ?>


По сути надо вывести все поля name,price,ticketsLeft в массивы. Но у меня пока ничего вывести кроме лишь самого первого name не удаётся. Пробовал через $json= json_decode($url,true);
Но при введении foreach ничего не выводится.

Заранее очень благодарен.
wisedarkness Отправлено: 03 Мая, 2013 - 13:53:56 • Тема: Вызов функции при выборе chexkbox • Форум: Вопросы новичков

Ответов: 2
Просмотров: 147
Имеется кнопка( вкл\выкл) описанная через checkbox:
PHP:
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="info.php">
  3.  <section  class="main" >      
  4.  <div class="switch">
  5.      <input type="checkbox"  name="chkbx" value="true" onclick="check()"> //активация переключателя
  6.       <label><i></i></label> // сама кнопка
  7.    </div>
  8.    </section>
  9.     </form>
  10.  

Пытаюсь при активации переключателя через form action вызывать файл, где фунция, проверяющая условия. Ставил просто вывод текста без условий. Ничего не хочет отправлять без submit видимо..
Поэтому решил через скрипты попробовать.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function check(){
  3. if($("chkbx").attr("checked") != 'checked') {
  4.        
  5.             \\ вот тут надо вызвать функцию вывода данных или просто вывести дынные в зависимости от позиции кнопки
  6.  
  7.             $("chkbx").css('border', '1px solid red');
  8.             return false;
  9.         }
  10.         return true;
  11. }
  12.  


Т.е сначала есть данные, при нажатие на кнопку(checkbox), что бы они изменялись и в обратном направлении. Через Onclick, насколько я понял, функцию php вызвать нельзя. А в скриптах я не разбираюсь пока что..
Заранее спасибо!
wisedarkness Отправлено: 27 Февраля, 2013 - 19:05:22 • Тема: GET • Форум: Вопросы новичков

Ответов: 2
Просмотров: 131
avtor.fox пишет:
index.php?view=popular&page=$page

Огромное спасибо! Не знаю как сам не догадался, с учётом того, что у меня уже были такие ссылки! А тут что то вообще тупик был!)
wisedarkness Отправлено: 27 Февраля, 2013 - 07:31:27 • Тема: GET • Форум: Вопросы новичков

Ответов: 2
Просмотров: 131
Есть страница и на ней используется листалка(подсчёт и вывод инф по страницам).
народится по адресу index.php?view=popular?page=$page

Работает только 1 страница, при попытке перехода на любую другу page выкидывает на главную. Но при наведении на ссылку след страницы и т.д показывает правильный адрес, например index.php?view=popular?page=2
Работаю с глобальным методом GET
PHP:
скопировать код в буфер обмена
  1.  
  2. $view = empty($_GET['view']) ? 'index' : $_GET['view'] ;
  3. switch($view)
  4. {....
  5.  

Никак не могу разобраться, что мне прописывать в switch что бы ?page в адресной строке прижилось.
wisedarkness Отправлено: 06 Февраля, 2013 - 17:24:22 • Тема: UPDATE из SELECT • Форум: Вопросы новичков

Ответов: 6
Просмотров: 281
Заполнил каждое поле TEXT данными из таблицы, подставив в VALUE значение которые он уже выводит. Т.е все поля у меня в любом случае заполнены и изменил DIE. Значение всё ещё не обновляются в таблице...т.е что бы я не воодил в TEXT и нажимал SUBMIT ничего не происходит..
PHP:
скопировать код в буфер обмена
  1.  
  2. echo "Номер товара: ".$row['id'],'<input type="submit" name="changeid" value="Изменить"><input type="text" name="id" value="'.$row['id'].'">',"<br>";
  3. ...
  4. $res=mysql_query($sql)or  mysql_error();
  5.  
wisedarkness Отправлено: 06 Февраля, 2013 - 16:09:32 • Тема: UPDATE из SELECT • Форум: Вопросы новичков

Ответов: 6
Просмотров: 281
Мне главное, что бы она заработала, доработки потом можно будет сделать...Я ssl вообще думал подключать. Но пока вообще не возился с безопасностью.
wisedarkness Отправлено: 06 Февраля, 2013 - 15:03:02 • Тема: foreach • Форум: Вопросы новичков

Ответов: 9
Просмотров: 334
Первый массив:
PHP:
скопировать код в буфер обмена
  1. $regs=mysql_query("SELECT name_product FROM products WHERE id_cat=$country_id");
  2.     while($row = mysql_fetch_array($regs))
  3.      {  действия над массивом
  4.       }
  5.  

Второй массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. $regsS=mysql_query("SELECT id_product FROM products WHERE id_cat=$country_id");
  3.     while($row = mysql_fetch_array($regsS))
  4.      {  действия над массивом
  5.       }
  6.  
wisedarkness Отправлено: 06 Февраля, 2013 - 14:32:55 • Тема: UPDATE из SELECT • Форум: Вопросы новичков

Ответов: 6
Просмотров: 281
Господин Соколов Во всех if должно быть сначала это
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql="UPDATE `shop`.`products` SET `cat`='".$cat."'WHERE `products`.`id` ='".$row['id']."'";
  3.  



Спасибо за замечание- исправил, но основная ошибка не в этом видимо...
wisedarkness Отправлено: 05 Февраля, 2013 - 23:04:23 • Тема: UPDATE из SELECT • Форум: Вопросы новичков

Ответов: 6
Просмотров: 281
Здравствуйте, я пытаюсь сделать нечто подобие страницы админа и хотел бы, что бы с этой страницы можно было управлять данными таблицы products - где находятся все продукты.
Я вывожу сначала всю инф из таблицы(с этим всё отлично), но никак не могу заменить эту информацию. Я пытался заменять значения в отдельной функции и вне WHILE. Щас решил это всё поместит в while, что бы удобней работать с Row. Подскажите пожалуйста, где я ошибся или, что может вообще делаю абсолютно неверно. Буду очень признателен и благодарен.
Вот код:
На самой странице *админа* я распечатываю функцию.(Думаю так безопасней будет).


Код функции:
PHP:
скопировать код в буфер обмена
  1.  
  2.   function tavars()
  3.  {
  4.     db_connect();
  5.     $query="SELECT * FROM products  ";
  6.     $result=mysql_query($query);
  7.     while($row = mysql_fetch_array($result))
  8. {
  9.     '<form action="index.php?view=items" method="POST" name="change" id="cart-form" ">';
  10. echo "Номер тавара: ".$row['id'],'<input type="submit" name="changeid" value="Изменить"><input type="text" name="id" value="">',"<br>";
  11. echo "Название тавара: ".$row['title'],'<input type="submit" name="changetitle" value="Изменить"><input type="text" name="title" value="">',"<br>";
  12. echo "Описание: ".$row['description'],'<input type="submit" name="changedescription" value="Изменить"><input type="text" name="description" value="">',"<br>";
  13. echo "Цена: ".$row['price'],'<input type="submit" name="changeprice" value="Изменить"><input type="text" name="price" value="">',"<br>";
  14. echo "Картинка: ".$row['image'],'<input type="submit" name="changeimage" value="Изменить"><input type="text" name="image" value="">',"<br>";
  15. echo "Категория тавара: ".$row['cat'],'<input type="submit" name="changecat" value="Изменить"><input type="text" name="cat" value="">',"<br>";
  16.      
  17.  
  18. echo '<a href="javascript:window.location.reload()">Обновить',"<br><hr></a>";    
  19.     '</form>';
  20.    
  21.  
  22.     $id =$_POST['id'];
  23.     $title =$_POST['title'];
  24.     $description =$_POST['description'];
  25.     $price =$_POST['price'];
  26.     $image =$_POST['image'];
  27.     $cat = $_POST['cat'];
  28.    
  29.     if(isset($_POST['changeid']))
  30.     {
  31.         $sql="UPDATE `shop`.`products` SET `id`='".$id."'WHERE `products`.`id` = '".$row['id']."'";
  32.         $res=mysql_query($sql)or die(mysql_error());
  33.         header ("Location: index.php?view=items");
  34.  
  35.      }
  36.      if(isset($_POST['changetitle']))
  37.     {
  38.         $sql="UPDATE `shop`.`products` SET `title`='".$title."'WHERE `products`.`id` = '".$row['id']."'";
  39.         $res=mysql_query($sql)or die(mysql_error());
  40.         header ("Location: index.php?view=items");
  41.        
  42.     }
  43.     if(isset($_POST['changedescription']))
  44.     {
  45.         $sql="UPDATE `shop`.`products` SET `description`='".$description."'WHERE `products`.`id` = '".$row['id']."'";
  46.         $res=mysql_query($sql)or die(mysql_error());
  47.         header ("Location: index.php?view=items");
  48.        
  49.     }
  50.     if(isset($_POST['changeprice']))
  51.     {
  52.         $sql="UPDATE `shop`.`products` SET `price`='".$price."'WHERE `products`.`id` = '".$row['id']."'";
  53.         $res=mysql_query($sql)or die(mysql_error());
  54.         header ("Location: index.php?view=items");
  55.        
  56.     }
  57.     if(isset($_POST['changeimage']))
  58.     {
  59.         $sql="UPDATE `shop`.`products` SET `image`='".$image."'WHERE `products`.`id` = '".$row['id']."'";
  60.         $res=mysql_query($sql)or die(mysql_error());
  61.         header ("Location: index.php?view=items");
  62.        
  63.     }
  64.     if(isset($_POST['changecat']))
  65.     {
  66.         $sql="UPDATE `shop`.`products` SET `cat`='".$cat."'WHERE `products`.`id` ='".$row['id']."'";
  67.         $res=mysql_query($sql)or die(mysql_error());
  68.         header ("Location: index.php?view=items");
  69.        
  70.     }
  71.    
  72.     }
  73.   }
  74.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB