Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 15:10   #1
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость Разделение массива на несколько массивов

Помогите решить такую задачку:

вот код:
PHP код:
$text urlencode(iconv("CP1251""UTF-8""".$_POST['text']."")); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$all_users mysql_num_rows($users); //количество юзеров
$num intval($all_users/99); //количество частей по 100 юзеров
           
while ($data mysql_fetch_array($users)) {
        
$array[$i] = $data['login'];
        
$i++;
        } 
        
$all_array implode(","$array); //Все id юзеров через запятую
        
print_r($all_array); 
В результате выполнения мы получаем строку с id всех пользователей типа 12341,321354,3123213 и т д

Нужно
- разделить эту строку по 100 id (23123,32434, ... 32131)
- занести строку со 100 id в переменную $100_usr
- отправить все id по 100 функцией
$notice = $VK->api('secure.sendNotification', array('uids'=>''.$100_usr.'', 'message'=>''.$text.''));

Как такое сделать? или может быть манипуляциями с массивами.
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 27.12.2010, 13:33   #2
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Код:
<?php
$arr=explode(",",$all_array);
$count=0;
$all=array();
for($i=0;$i<sizeof($arr);$i++){
	if( ($i%100) == 0 ){
		$count++;
	}
	array_push($all[$count],$arr[$i]);
}
//$all  - массив массивов, в котором лежат айдишки по 100 штук
$100_usr=implode(",",$all[0]);  // - строка с первыми 100 айдишками
?>
Дальше ничего не понял. Объясните нормально!
ssdm вне форума Ответить с цитированием
Старый 27.12.2010, 14:14   #3
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость

PHP код:
$notice $VK->api('secure.sendNotification', array('uids'=>''.$100_usr.'''message'=>''.$text.'')); // где $100_usr - сто id юзеров через запятую 
Всего у нас больше 100 юзеров(1000 и больше)! А с помощью фукции $notice мы можем отправлять только по 100 id!

Вот нужно чтобы все юзеры выбранные из БД делились на части по 100 и отправлялись функцией $notice последовательно с интервалом sleep(5)
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 27.12.2010, 14:17   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

$100_usr - некорректное имя для переменной:
Цитата:
A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores.
- пруф.
Andkorol вне форума Ответить с цитированием
Старый 27.12.2010, 14:29   #5
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость

Реально у меня сейчас такой код:
т.е. берутся из базы все id, и отправляется поочередно каждый id.

PHP код:
$text iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$i=0;
while (
$data mysql_fetch_array($users)) {
        
$array[$i] = $data['login'];
        
$i++;
        }
        foreach (
$array as $key=>$value) {
$notice $VK->api('secure.sendNotification', array('uids'=>''.$value.'''message'=>''.$text.''));
echo
"Сообщение id ".$notice['response']." <b style='color: green;'>доставлено!</b> ждите 1 сек.<br>"
sleep(2); //задержка 2 секунды.
            

echo
"<b style='color: green;'> Все сообщения отправлены!</b><br>"
Мне нужно чтобы отправлялись по 100 id (1,2,3,4,5,312,3123 и т д), а не по 1!
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 27.12.2010, 14:52   #6
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Сообщение от kpachbiu Посмотреть сообщение
PHP код:
$notice $VK->api('secure.sendNotification', array('uids'=>''.$100_usr.'''message'=>''.$text.'')); // где $100_usr - сто id юзеров через запятую 
Всего у нас больше 100 юзеров(1000 и больше)! А с помощью фукции $notice мы можем отправлять только по 100 id!

Вот нужно чтобы все юзеры выбранные из БД делились на части по 100 и отправлялись функцией $notice последовательно с интервалом sleep(5)
PHP код:
<?php
$text 
iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$array=array();
$i=0;

while (
$data mysql_fetch_array($users)) {
    
$array[$i] = $data['login'];////!!!!!!!!!!!!!!!!!!!!!!!!!!!У вас в поле login хранится id юзерв ???????  !!!!!!!!!!!!!!!!!!!!!!!!
    
$i++;
}
     
$count=0;
$all=array();

for(
$i=0;$i<sizeof($array);$i++){
    if( (
$i%100) == ){
        
$count++;
    }
    
array_push($all[$count],$array[$i]);
}
//$all  - массив массивов, в котором лежат айдишки по 100 штук

for($i=0;$i<sizeof($all);$i++){
    
$temp=implode(",",$all[$i]);//формируем строку по 100 id
    
$notice $VK->api('secure.sendNotification', array('uids'=>"'.$temp.'"'message'=>"$text")); 
    echo
"Сообщение id ".$notice['response']." <b style='color: green;'>доставлено!</b> ждите 1 сек.<br>"
    
sleep(5);
}

echo
"<b style='color: green;'> Все сообщения отправлены!</b><br>"
?>

Последний раз редактировалось ssdm; 27.12.2010 в 15:04.
ssdm вне форума Ответить с цитированием
Старый 27.12.2010, 15:10   #7
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
По умолчанию

да в login ид юзеров!
Вечером приду потестирую, спасибо!
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 27.12.2010, 23:33   #8
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость

PHP код:
$text iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$array=array();
$i=0;

while (
$data mysql_fetch_array($users)) {
    
$array[$i] = $data['login'];
    
$i++;
}
     
$count=0;
$all=array();

for(
$i=0;$i<sizeof($array);$i++){
    if( (
$i%100) == ){
        
$count++;
    }
    
array_push($all[$count],$array[$i]);
}
//$all  - массив массивов, в котором лежат айдишки по 100 штук
print_r($all);
//for($i=0;$i<sizeof($all);$i++){
    //$temp=implode(",",$all[$i]);//формируем строку по 100 id
    //$notice = $VK->api('secure.sendNotification', array('uids'=>''.$temp.'', 'message'=>''.$text.'')); 
    //echo"Сообщение id ".$notice['response']." <b style='color: green;'>доставлено!</b> ждите 1 сек.<br>"; 
    //sleep(1);
//}

//echo"<b style='color: green;'> Все сообщения отправлены!</b><br>"; 
print_r($all); выдает пустой массив:
Array ( [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] => [13] => [14] => [15] => [16] => [17] => )
и соответственно не работает!
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 27.12.2010, 23:39   #9
kpachbiu
взагрузке.рф
Форумчанин
 
Аватар для kpachbiu
 
Регистрация: 13.06.2010
Сообщений: 117
Радость

Может быть так сделать:

PHP код:
$text iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$all_users mysql_num_rows($users); //количество юзеров
$num intval($all_users/99); //количество частей по 100 юзеров
$array=array();
$i=0;

while (
$data mysql_fetch_array($users)) {
    
$array[$i] = $data['login'];////!!!!!!!!!!!!!!!!!!!!!!!!!!!У вас в поле login хранится id юзерв ???????  !!!!!!!!!!!!!!!!!!!!!!!!
    
$i++;
}

$all100 array_chunk($array$num); //получился массив вида array[0][0]...[99] далее [1][0]...[99] 
Теперь тольк надо как то функцию применить к каждой сотне id в массиве $all100
Взагрузке.рф - Файлы для людей
Ищу художника или веб-дизайнера для создания браузерной онлайн игры! icq 340-289-851
kpachbiu вне форума Ответить с цитированием
Старый 28.12.2010, 12:21   #10
ssdm
Форумчанин
 
Регистрация: 20.05.2009
Сообщений: 506
По умолчанию

Цитата:
Сообщение от kpachbiu Посмотреть сообщение
Может быть так сделать:

PHP код:
$text iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$all_users mysql_num_rows($users); //количество юзеров
$num intval($all_users/99); //количество частей по 100 юзеров
$array=array();
$i=0;

while (
$data mysql_fetch_array($users)) {
    
$array[$i] = $data['login'];////!!!!!!!!!!!!!!!!!!!!!!!!!!!У вас в поле login хранится id юзерв ???????  !!!!!!!!!!!!!!!!!!!!!!!!
    
$i++;
}

$all100 array_chunk($array$num); //получился массив вида array[0][0]...[99] далее [1][0]...[99] 
Теперь тольк надо как то функцию применить к каждой сотне id в массиве $all100
array_chunk - это как раз то что надо..

+ попробуй этот код
PHP код:
<?php
$text 
iconv("CP1251""UTF-8""".$_POST['text'].""); //переводим в utf-8 кодировку
$users mysql_query("SELECT `login` FROM `users`") or die(mysql_error());
$array=array();
$i=0;
$count=0;

while (
$data mysql_fetch_array($users)) {
    if( (
$i%100) == && $i!=0){
        
$count++;
    }
    
$array[$count][$i] = $data['login'];
    echo 
$count."<--->".$i."<--->".$array[$count][$i]."<--->".$data['login']."<br>";\\!!!! Посмотри что здесь выводится
    $i
++;
}
   

//$array  - массив массивов, в котором лежат айдишки по 100 штук
print_r($array);
//for($i=0;$i<sizeof($array));$i++){
    //$temp=implode(",",$array)[$i]);//формируем строку по 100 id
    //$notice = $VK->api('secure.sendNotification', array('uids'=>''.$temp.'', 'message'=>''.$text.'')); 
    //echo"Сообщение id ".$notice['response']." <b style='color: green;'>доставлено!</b> ждите 1 сек.<br>"; 
    //sleep(1);
//}

//echo"<b style='color: green;'> Все сообщения отправлены!</b><br>";  
?>
Добавлено:
Вложил файл php и результат его работы. Исходя из него следует что у тебя не формируется первый массив (проверь подключение к базе, результат выполнения запроса и в php включи вывод ошибок и предупреждений)

Последний раз редактировалось ssdm; 28.12.2010 в 12:31. Причина: Upd
ssdm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разделение данных на несколько ячеек d_adilet Microsoft Office Access 6 29.06.2010 09:28
Разделение массива на два Negent C++ Builder 5 11.06.2010 14:11
хитрое разделение массива Alex_91 Помощь студентам 5 13.05.2010 20:41
Разделение интернета на несколько компов Retiz Компьютерное железо 11 10.10.2008 22:40
Разделение txt файла на несколько htm Tiger16 Фриланс 3 17.04.2008 22:40