Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Массив дат
 
 автор: oli   (22.06.2008 в 17:48)   письмо автору
 
 

Имеется массив дат полученный в результате запроса с сортировкой по возрастанию.
Массив $myrow["date"]
Элементы массива имеют вид типа 01,02,09, 12 и тд(месяца)
Надо придать каждому элементу массива месяц. Например
элементу 02 массива $myrow надо придать значение ФЕВРАЛЬ, элементу 09-значение сентябрь и тд...
Как это можно реализовать...

   
 
 автор: sim5   (22.06.2008 в 18:49)   письмо автору
 
   для: oli   (22.06.2008 в 17:48)
 


<?
$mth 
= array(1=> "Январь""Февраль",...);
echo 
$month[intval($myrow["date"])];

   
 
 автор: OLi   (22.06.2008 в 19:25)   письмо автору
 
   для: sim5   (22.06.2008 в 18:49)
 

Спасибо за пример.
Но здесь одно НО...
У меня может быть массив не обязательно из всех подряд упорядоченных месяцев-чисел.
Может получиться что-то вроде 01,03,12,09
и массив автоматом проставит индексы не совпадающие с числом месяца!!!
Надо что-то другое придумать...

   
 
 автор: BinLaden   (22.06.2008 в 19:29)   письмо автору
 
   для: OLi   (22.06.2008 в 19:25)
 

> и массив автоматом проставит индексы не совпадающие с числом месяца!!!

Массив не может ничего проставлять. Что Вы имеете ввиду?

   
 
 автор: sim5   (22.06.2008 в 19:38)   письмо автору
 
   для: OLi   (22.06.2008 в 19:25)
 

Ну а ка же запроса с сортировкой по возрастанию, может вы имеете ввиду отсутствие некоторых месяцев? В любом случае, вы обращатся будете по индексу, и коли такой есть в массиве, то вы получите его значение.

   
 
 автор: OLi   (23.06.2008 в 01:18)   письмо автору
 
   для: sim5   (22.06.2008 в 19:38)
 

Описываю тогда то что я задумал
Строение таблицы
--------------------------------
| id | date | name | rat |
++++++++++++++++++|
| 1 06 fff 60 |
| 2 01 ddd 45 |
| |
| |
| |
| |
|-------------------------------|
В таблице выше-поле date имеет запись вида 2007-01-12(год,месяц, число)
Надо сделать следующее:
Вывести всю информацию из таблицы по месяцам например

---------------------------------------
Январь

id=2
date=01
rat=45

---------------------------------------
и тд
В таблице может быть не один месяц а несколько...
При этом надо делать запрос при котором все месяца относятся к 2008 году

Вот что я думаю:
1 Извлечь с таблицы все месяца(Как это сделать SQL) и подсчитать их кол-во
2 Преобразовать числа месяца в буквенное значение(01-Январь и тд)
3 Использовать вложенный цикл
4 Вывод
-----------------------------------------
Например получил массив месяцев-чисел из запроса

$myrow["date"];
Преобразуем:
$mth=array(1=>"Январь","Февраль"...);
В цикле:

for($i=0; $i<=count($mth); $i++){
echo "$mth";
while($dann=mysql_fetch_array($rex)){
$rex=mysql_query("select * from table where...");
print"$dann[id]";

print"$dann[rat]";

print"$dann[name]";
}

}

У кого какие мысли-как это сделать???

   
 
 автор: sim5   (23.06.2008 в 07:12)   письмо автору
 
   для: OLi   (23.06.2008 в 01:18)
 

Какой-то бред, ей богу. В каком-то цикле делать запрос, да еще while для запроса, который выполняется до самого запроса!!! Это что за конструкция такая?

<?php
$month 
= array(1=>"Январь""Февраль""Март""Апрель""Май""Июнь",
        
"Июль""Август""Сентябрь""Октябрь""Ноябрь""Декабрь");
//если в таблице всего четыре этих поля, то можно * и забрать все,
//если "куча", то ограничится только необходимыми полями, чтобы не гонять лишнее
$rex=mysql_query("SELECT id, name, MONTH(date) AS date, rate FROM table WHERE... ORDER BY date");
while(
$dann=mysql_fetch_assoc($rex)) {
  echo 
$dann['id'] ." - ".$dann['rat']." - ".$dann['name']." - ".$month[$dann['date']]."<br>";
}

mysql_fetch_array - возвращает две копии идентичного массива, один из которых индексный, другой ассоциативный. Если вы не используете один из них, зачем вы его получаете?

   
 
 автор: OLi   (23.06.2008 в 21:43)   письмо автору
 
   для: sim5   (23.06.2008 в 07:12)
 

Спасибо за код! Врезультате я получаю вывод на экран содержимого:

Июнь - 95 - picture
Июнь - 96 - bad
Июнь - 97 - small
Декабрь - 94 - voke
Как сделать чтоб выводило так

Июнь:
95-picture
96-bad
97-small

Декабрь:
94 - voke
и тд.

   
 
 автор: OLi   (15.07.2008 в 00:58)   письмо автору
 
   для: OLi   (23.06.2008 в 21:43)
 

Кто-то поможет мне-вроде ясно описал проблему.

   
 
 автор: Drago   (15.07.2008 в 08:33)   письмо автору
 
   для: OLi   (15.07.2008 в 00:58)
 

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

<?php 
$month 
= array(1=>"Январь""Февраль""Март""Апрель""Май""Июнь"
        
"Июль""Август""Сентябрь""Октябрь""Ноябрь""Декабрь"); 
//если в таблице всего четыре этих поля, то можно * и забрать все, 
//если "куча", то ограничится только необходимыми полями, чтобы не гонять лишнее 
$rex=mysql_query("SELECT id, name, MONTH(date) AS date, rate FROM table WHERE... ORDER BY date"); 
$lastmonth 0;
while(
$dann=mysql_fetch_assoc($rex)) { 
  if (
$lastmonth != $dann['date']) {
    echo 
"<b>".$month[$dann['date']].":</b><br>";
    
$lastmonth $dann['date'];
  }
  echo 
$dann['id'] ." - ".$dann['rat']." - ".$dann['name']."<br>"
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования