|
|
|
| Помогите пожалуйста есть таблица в базе данных форума в котором есть поля - №, Имя, сообщение, ну и всякие другие, значит что необходимо сделать, допустим Имя Teleman, Admin и прочие нужно посчитать кто сколько сделал сообщений, чтобы был список Teleman -145, Admin - 18, ну и так далее.
Заранее спасибо Teleman. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 13:19)
| | как насчет хотя бы привести имена таблицы и полей, если уж не структуру таблицы полностью?
Потому что именем поля строчка Имя быть не может (как минимум в cp1251).
SELECT `имЯ`, COUNT(*) AS nn
FROM `таблица`
GROUP BY `имЯ`
ORDER BY nn DESC
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 13:27)
| | Ну вот так выглядит всё мой творение помоему я здесь намутил много плохого.
/* Таблица MySQL, в которой хранятся данные */
$userstable = "post";
/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
/* составить запрос, который выберет всех клиентов */
$query = "SELECT 'username' COUNT(*) AS 'username' FROM $userstable GROUP BY 'username' ORDER BY 'username' DESC";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Как много нашлось таких */
$number = mysql_num_rows($res);
/*Сколько всего*///////////////////////////////////////////////
echo "$number<br>";
/*конец *//////////////////////////////////////////////////////
while ($row=mysql_fetch_array($res)) {
// забирает текущее время в массив
$datenachalo = "270607";
//$timestamp = $row[dateline];
$timestamp = $datenachalo;
$date_time_array = getdate($timestamp);
$hours = $date_time_array['hours'];
$minutes = $date_time_array['minutes'];
$seconds = $date_time_array['seconds'];
$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
$timestamp = mktime($hours,$minutes,$seconds,$month,$day,$year);
$itog = strftime('%F',$timestamp);
//$itog = strftime($timestamp);
echo "$itog";
echo "$row[username]<br>";
}
$ret = mktime( 0,0,0,6,27,2007 );
$timer = time($ret);
echo $ret;
//echo $timer;
/*Конец*/////////////////////////////////////////////////////////////
//$query1 = "SELECT * FROM $userstable where ";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
//$res1 = mysql_query($query1) or die(mysql_error()); | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 13:39)
| | 1. пропустили запятую перед COUNT
2. дали выражению псевдоним, совпадающий и именем уже имеющегося столбика.
3. даже не попытались прочесть данные, которые вернул запрос.
применяйте цикл и функцию mysql_fetch_assoc() | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 13:47)
| | ну вот я тут переделал
ну так и ничего
$query = "SELECT username , COUNT(*) AS username FROM post GROUP BY username";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Как много нашлось таких */
//$number = mysql_num_rows($res);
/*Сколько всего*///////////////////////////////////////////////
echo "$number<br>";
/*конец *//////////////////////////////////////////////////////
while ($row=mysql_fetch_ascot($res)) {
echo $row[username];
}
|
Помогите составить это скрипт.
чтобы в столбец выбрал всех пользьвателей и через тире кол-во сообщений. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 13:59)
| | 2. Псевдоним должен отличаться от имени поля!
SELECT
username
, COUNT(*) AS kolichestvo
FROM post
GROUP BY username
ORDER BY kolichestvo DESC
|
ну и дело за малым:
echo $row[username] . " - " . $row[kolichestvo] ."<br/>\r\n";
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 14:04)
| | Всё заработало, огромное спасибо.
А теперь можно всё это заставить выбирать с даты по дате из формы чтобы было но только там дата записана в timestamp. Я отблагодарю. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 14:23)
| | Зависит от того, в каком виде даты от и до попадают в скрипт.
В общем случае - как-то так
"SELECT ...
....
WHERE dt BETWEEN $dt_ftom AND $dt_to"
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 14:40)
| | Дык а кто знает как она туда попадает в базе пишутся 1182863164 ну и все разные а как же узнать как они туда попадают. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 14:46)
| | да не в базу - с ней всё ясно.
В скрипт как попадают. Из формы.
А из базы Вы их можете вытянуть как
SELECT FROM_UNIXTIME(поле) AS humandate FROM post | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 14:52)
| | ну из формы да полюбому можно хоть так хоть как, допустим 21.07.2007 абсолютно всё равно. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 15:22)
| | вот если Вам действительно все равно - то пусть оно будет в таком формате:2007-07-21
тогда
$dt_from = mysql_escape_string($_REQUEST['dt_from']);
$dt_to = mysql_escape_string($_REQUEST['dt_to']);
$sql = "SELECT *
FROM post
WHERE dt BETWEEN
UNIX_TIMESTAMP('$dt_ftom')
AND UNIX_TIMESTAMP('$dt_to')+24*60*60-1";
|
| |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 17:15)
| | Я наверное надоел, но вот что я сделал, и пишет мне ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE dateline BETWEEN UNIX_TIMESTAMP('2007-06-01') AND UNIX_TIMESTAMP('2007-06-'
$dt_from = mysql_escape_string($_REQUEST['dt_from']);
$dt_to = mysql_escape_string($_REQUEST['dt_to']);
/* Таблица MySQL, в которой хранятся данные */
$userstable = "post";
/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());
/* составить запрос, который выберет всех клиентов */
$query = "SELECT postid, username ,dateline ,
COUNT(*) AS kol FROM post as userfield GROUP BY username WHERE dateline BETWEEN UNIX_TIMESTAMP('$dt_from') AND UNIX_TIMESTAMP('$dt_to')+24*60*60-1 ORDER BY kol DESC";
|
| |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 20:48)
| | 1. нарушен порядок элементов в запросе
сперва выржение WHERE а потом уже GROUP BY и в конце ORDER BY
2. Вводите дату согласно формата yyyy-mm-dd | |
|
|
|
|
|
|
|
для: Trianon
(07.07.2007 в 22:44)
| | Напиши кошелек webmoney. Немного помогу в финансовом вопросе насколько могу. | |
|
|
|
|
|
|
|
для: Teleman
(07.07.2007 в 23:52)
| | Если требуется дата в более привычном формате, то поможет такой код:
function es2eu_dt($d)
{
list($d, $s1, $m, $s2, $y, $s3,$hh,$s4,$mm,$s5,$ss)
= sscanf("$dt:00:00:00:00:00:00", "%d%c%d%c%d%c%d%c%d%c%d");
if($y < 100) $y += (($y < 50)?2000:1900);
return $s3 == ':'? sprintf("%04d-%02d-%02d",$y, $m, $d)
: sprintf("%04d-%02d-%02d %02d:%02d:%02d", $y, $m, $d, $hh,$mm,$ss);
}
$dt_from = es2eu_dt($_REQUEST['dt_from']);
$dt_to = es2eu_dt($_REQUEST['dt_to']);
|
Даты будут восприниматься в формате 8.07.2007
Z787569541744 | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2007 в 02:00)
| | Огромное спасибо, в принципе все эти заморочки уже не нужны главное то работает, а остальное пока не важно. Ну если какие вопросы будут то я обращусь. Немного там вам выслал. Ну сколько смог. | |
|
|
|