Перейти к содержимому



Проверка совпадений

#1

Поделиться сообщением #1



alex159

alex159
  • Неактивные
  • 492 сообщений
  • Репутация: 32
0

Отправлено 24 Октябрь 2013 - 13:38

Есть магазин на opencart. Хочу из всех заказов и зарегестрированных людей вывести все email-лы.
Но очень много дубликатов.
Как правильно сделать? Алгоритм придумал (а вот знаний не хватает)

Мое виденье
1.Вывод всех email (с бд) через do-while в массив
2. Через специальную функцию удалить дубликаты в массиве
3. Занести все email в другую базу данных.

Подскажите, пожалуйста, основные функции для этого алгоритма.

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Внутренняя оптимизация страниц сайта
  2. Проверка одинаковых IP у разных юзеров
  3. Seoplane — cервис проверки позиций
  4. Вопрос дублированный контент или нет?
  5. Проверка посещения роботом страницы сайта

#2

Поделиться сообщением #2



matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 24 Октябрь 2013 - 14:41

Можно сделать и так, выбрать абсолютно все email'ы в массив, а затем удалить дубликаты функцией array_unique().
А можно сделать и проще, сразу выбрав email'ы без дубликатов... для этого можно воспользоваться оператором DISTINCT в запросе, который не будет выбирать дублирующие записи:
SELECT DISTINCT email FROM table;

  • 1


#3

Поделиться сообщением #3



alex159

alex159
    Topic Starter
  • Неактивные
  • 492 сообщений
  • Репутация: 32

Отправлено 24 Октябрь 2013 - 18:32

matroskin8, Спасибо. Тема закрыта. Кому интересно решение вот код
Это решение сделано для Opencart, если вам нужно достать все email с вашей базы данных.
<?php
$BD_host = "myhost";
$BD_user = "user";
$BD_password = "pass";
$BD_base = "base";
$link = mysql_connect($BD_host,$BD_user,$BD_password);
mysql_select_db($BD_base);
mysql_query("SET NAMES 'utf8'");
$result = mysql_query("(SELECT DISTINCT `email` FROM `order`) UNION (SELECT DISTINCT `email` FROM `customer`)"); //Вытаскиеваем данные с 2-х таблиц
$myrow = mysql_fetch_array($result);
do{ //Делаем
echo $myrow['email'];
echo "<br>";
}
while ($myrow = mysql_fetch_array($result));//Думаем
?>

  • 0

#4

Поделиться сообщением #4



matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 24 Октябрь 2013 - 21:42

Пожалуйста.
  • 0


#5

Поделиться сообщением #5



fedornabilkin

fedornabilkin
  • Пользователь
  • 727 сообщений
  • Репутация: 102

Отправлено 25 Октябрь 2013 - 14:32

Еще вариант. Выбрать все записи из базы в массив и применить array_unique() http://www.php.su/array_unique
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.



Оформление форума – IPBSkins.ru