- Массив значений при выборке из базы, jd, 15:49 , 08-Июл-09 (1)
1. Всё это можно (и лучше) сделать прямо в запросе. 2. Если вы не знаете, как упорядочить массив или найти сумму элементов и не знаете даже, как найти в интернете описание этих базовых процедур, которые есть абсолютно в любом учебнике по программированию (не говоря уже о встроенных конкретно в perl средствах), то зачем вы этим вообще занимаетесь?Я хочу сказать, в этом нет ничего обидного или типа того: я не умею играть на скрипке и не вижу ничего зазорного в том, что меня не пустят на сцену консерватории. Просто найдите кого-нибудь, кто решит вам вашу небольшую задачу.
- Массив значений при выборке из базы, SubGun, 10:37 , 09-Июл-09 (2)
Типа такого?
1. for ($i = 1; $i <= 254; $i++) { 2. for ($j = 0; $j <= 1; $j++) { 3. my $summary = 0; 4. my $ipaddr = "192.168.13$j.$i"; 5. my $dbh = DBI->connect($db_host,$db_user,$db_pass); 6. my $sth = $dbh->prepare(qq{SELECT bytes,time FROM $tbl1 WHERE ip='$ipaddr'}); 7. $sth->execute(); 8. while (my ($squid_bytes, $squid_time) = $sth->fetchrow_array()) { 9. print "$ipaddr - $squid_bytes - $squid_time\n"; 10. $summary = $summary + $squid_bytes; 11. } 12. $sth->finish(); 13. $dbh->disconnect(); 14. print "For IP $ipaddr summary bytes is $summary"; 15. } 16. } Все равно неверно работает. Честно говоря, в такие момент меня бесит этот убогий perl. 9-я строка отрабатывает отлично, 10-я только в первый раз работает, а в остальное время выдает нулевое значение. 14-я строка, вместо того, чтобы отрабатывать после каждого IP, выводит значение лишь один раз(зато неоднократно), в конце программы. Хрень какая-то.
- Массив значений при выборке из базы, angra, 15:17 , 09-Июл-09 (3)
>Честно говоря, в такие момент меня бесит этот убогий perl. Всегда смешно, когда не очень умные люди свою бездарность и невежество пытаются оправдать ругая инструмент. Деточка, perl один из самых мощных ЯП, сомневаюсь, что ты когда-либо осилишь хотя бы 10% его возможностей. Кодер, догадавшийся вставить connect и prepare внутрь цикла, с моей точки зрения безнадежен. Если нет возможности нанять программиста и это твоя побочная задача, то просто сформулируй ее полностью словами с примером данных в базе и желаемого вывода, а мы уже дадим тебе готовый скрипт.
- Массив значений при выборке из базы, DarkHost, 08:29 , 10-Июл-09 (4)
>Всегда смешно, когда не очень умные люди свою бездарность и невежество пытаются >оправдать ругая инструмент. Деточка, perl один из самых мощных ЯП, сомневаюсь, >что ты когда-либо осилишь хотя бы 10% его возможностей. А ты не сомневайся :) Языки программирования мне даются очень легко. >Кодер, догадавшийся вставить connect и prepare внутрь цикла, с моей точки зрения >безнадежен. Если нет возможности нанять программиста и это твоя побочная задача, >то просто сформулируй ее полностью словами с примером данных в базе >и желаемого вывода, а мы уже дадим тебе готовый скрипт. С коннектом я действительно напартачил. Однако без prepare внутри цикла-никак, поскольку мне нужно выполнять изменяющийся по циклу запрос к базе. Если в двух словах, мне необходимо: 1. Выбрать из базы числовые значения поля по IP, а потом просуммировать эти значения. 2. Выбрать из базы числовые значения поля по IP, а потом отсортировать их по возрастанию. Со вторым заданием сложнее, поскольку я не знаю верхнюю границу массива.
- Массив значений при выборке из базы, Andrey, 08:50 , 10-Июл-09 (7)
- Массив значений при выборке из базы, angra, 11:44 , 10-Июл-09 (10)
>А ты не сомневайся :) Языки программирования мне даются очень легко. Я вижу как они тебе даются, да и программирование как таковое. Кроме того perl это действительно исключительно мощный язык. Вот убогий пых можно со всеми нюансами выучить за неделю, а на все нюансы perl уйдут годы. Я плотно занимаюсь им около четырех лет, но по прежнему не могу сказать, что полностью знаю этот язык, более того, я не встречал ни одного умного(дураки могут всякое ляпнуть) человека, который бы мог сказать такое. >С коннектом я действительно напартачил. Однако без prepare внутри цикла-никак, поскольку мне нужно выполнять изменяющийся по циклу запрос к базе. Ой, правда что-ли? То есть ты думаешь, что prepare и execute разделены на две функции в DBI и мускульном API чисто по приколу? >Если в двух >словах, мне необходимо: >1. Выбрать из базы числовые значения поля по IP, а потом просуммировать >эти значения. >2. Выбрать из базы числовые значения поля по IP, а потом отсортировать >их по возрастанию. >Со вторым заданием сложнее, поскольку я не знаю верхнюю границу массива. Смотрю с русским у тебя тоже нелады, я спрашивал совсем другое. Ну ладно, будем отвечать на то, что ты дал. С одной стороны задачи сортировки и суммирования можно решить при помощи sql, пример вам дали. С другой стороны бывают ситуации, когда такой вариант не подходит, например нужно сортировать по ip. Итак выборка данных. Я бы конечно воспользовался возможностями like в мускуле, дабы послать всего два запроса, а не 500+, ибо за последнее можно схлопотать по шапке или вообще вылететь с работы. Но пришлось бы слишком много нового демонстрировать. my $dbh = DBI->connect($db_host,$db_user,$db_pass); my $sth = $dbh->prepare("SELECT bytes,time FROM $tbl1 WHERE ip=?"); #обрати внимание на знак вопроса, почитай в perldoc DBI про bind параметров. for my $i (1..254) { for my $j (0..1) { my $ip="192.168.13$j.$i" $sth->execute($ip); my $data=$sth->fetchall_arrayref; #ну а теперь делаем с $data все, что нам нужно } } После подобного $data будет иметь вид: [ [byte1, time1], [byte2, time2], ... ] Суммируем байты циклом, возможности map оставим на будущее my $sum=0; $sum+=$_->[0] for @$data; Выводим в сортированном по byte виде print "bytes: $_->[0] time: $_->[1]\n" for sort{$a->[0] <=> $b->[0]} @$data Для реверса меняем $a и $b местами. Для числовой сортировки по time используем [1] вместо [0]. В принципе сложность сортировки ограничена только воображением и умением программиста, так как фактически мы задаем функцию сравнения двух элементов. Для дальнейшего общения рекомендую извинится за называние perl убогим языком.
- Массив значений при выборке из базы, phpcoder, 12:52 , 10-Июл-09 (11)
>Для дальнейшего общения рекомендую извинится за называние perl убогим языком. А ты тогда извинишься за называние php "убогим пыхом"? ;-) P.S. Друзья, давайте жить дружно! (с)
- Массив значений при выборке из базы, angra, 13:33 , 10-Июл-09 (12)
Ничего не имею против php, отличный язык для своей области. Однако это не отменяет того что он убогий, то бишь обладающий очень ограниченными возможностями, по сравнению с рядом других ЯП. Хотя если сравнивать с brainfuck, то php тот еще монстр :)
- Массив значений при выборке из базы, Andrey, 08:36 , 10-Июл-09 (5)
>14-я строка, вместо того, чтобы отрабатывать >после каждого IP, выводит значение лишь один раз(зато неоднократно), в конце >программы. Хрень какая-то. В этом мощном ЯП надо дёрнуть что-то. чтобы каждый print вываливался на экран. поищи в доках или на гугле perl stdout flush
- Массив значений при выборке из базы, Andrey, 08:45 , 10-Июл-09 (6)
|