http://s-g-k.ru/sale/price.html я себе вот такое так и не доделал:)
вот код сниппета:
///////////////////////////////////
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = get_content();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
$dollar = $dollar*1.00;
//echo "Доллар - ".$dollar."<br>";
//echo "Евро - ".$euro."<br>";
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
if (!$fd) echo "Запрашиваемая страница не найдена";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
}
// Закрыть открытый файловый дескриптор
fclose ($fd);
return $text;
}
///////////////////////////////////
$action = $modx->documentIdentifier;
global $row_sortir;
$uid = $_GET['uid'];
echo $uid;
$row_id = 1;
$outputselect .=<<<EOD
<form method="post" action="[~[*id*]~]">
<select name="selectId">
<option value="1">по артикулу</option>
<option value="2">по названию</option>
<option value="3">по цене</option>
</select>
<input type="submit" name="submit" value="отсортировать">
</form>
EOD;
echo $outputselect;
if (isset($_POST["submit"])) {
$row_id = $_POST["selectId"];
// $modx->sendRedirect($modx->makeUrl($id));
// $modx->sendRedirect($action);
}
// Начало таблицы
$table_start = "<table border=0 cellspacing=0 cellpadding=0 class=price>\n";
//<form method=\"post\">\n";
echo $table_start;
if ($row_id == 1) {
echo "<colgroup><col class=sort_by></col><col span=3></col></colgroup>";
}
elseif ($row_id == 2) {
echo "<colgroup><col></col><col class=sort_by></col><col span=2></col></colgroup>";
}
else {
echo "<colgroup><col span=2></col><col class=sort_by></col><col></col></colgroup>";
}
echo "\n<tr>\n";
$row = 0;
$fp = fopen ("doc/3.csv","r"); // файл открыт
// получаем построчно данные из csv-файла с разделителями
while ($data = fgetcsv ($fp, 1000, ";")) {
$counter = count ($data);
for ($c=0; $c<$counter; $c++) {
// Первую строчку таблицы выводим как заголовок
if ($row == 0) {
echo $th = "<th>$data[$c]</th>\n";
} else {
$huy[$row] = $data; // тупо нумеруем массив,построчно
}
}
$r = $row;
$row++;
}
/* $huy -- двумерный массив данных
можно раскомментить следующие строчки,
чтоб понять, что к чему:
echo "<pre>";
print_r($huy);
echo "</pre>";
вот его-то и надо уметь сортировать по столбцам
*/
$row_sortir = $row_id;
//echo $row_sortir;
usort($huy, "sortir"); //а вот и сортировка
// Заканчиваем первую строку в таблице
$output .= "</tr>\n";
for ($cc=0; $cc<$r; $cc++)
{
$output .= "<tr>\n";
for ($c=0; $c<$counter; $c++)
{
if ($c == $counter - 1) {
$huy[$cc][$c] = $huy[$cc][$c]*$dollar;
$huy[$cc][$c] = round($huy[$cc][$c], 2);
if ($huy[$cc][$c] == 0) $huy[$cc][$c] = "по запросу";
}
$output .= "<td class=\"t_".$c."\">".$huy[$cc][$c]."</td>";
//if ($c == $counter - 1) {
//$output .= "
//<td>
//<input type=\"hidden\" name=\"\" value=\"".$huy[$cc][0]."\">
//<input type=\"checkbox\" name=\"selecttId\" value=\"".$huy[$cc][0]."\">
//</td>\n";
}
//else {
//$output .= "\n";
// }
//}
$output .= "</tr>\n";
}
$output .= "</table>";
//<input type=\"submit\" name=\"submitt\" value=\"запросить\"></form>\n";
//$submited=isset($_POST['submitt']);
//$fid = "22";
//if ($submited){
//$_SESSION['GetPageTitle'] = $_POST["selecttId"];
//$modx->sendRedirect($modx->makeUrl($fid));
//}
fclose ($fp);
return $output;
function sortir($a, $b) {
global $row_sortir;
return strnatcasecmp($a[$row_sortir-1], $b[$row_sortir-1]);
}
Курсы валют сообщник сделал.
Объяснять как и что, не буду, ибо и сам уже не помню, собирал по кусочкам. Сортировку сделал, а от для заказа приблуды не доделал, эти строчки задокументированы:) Надеюсь, хоть как-то поможет:)