Автор Тема: Возврат части массива  (Прочитано 5836 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« : 07 Января 2005, 02:22:13 »
Всем привет! Столкнулся с маленькой проблемкой, надеюсь вы мне поможете :)

Имеется скрипт:

mysql_connect ();
mysql_select_db ("log_pass");
$result = mysql_query ("SELECT text, DATE_FORMAT(date, \'%e.%m.%Y\') as date1 FROM news ORDER BY date DESC");

$max_news = 7;
$quantity = mysql_num_rows($result) - $max_news;
echo "";
for ($i = 0; $i < $quantity; $i++) {
    $arr = mysql_fetch_array($result);
    $arr2 = array_slice ($arr, $max_news);
       echo "";
    }
?>

Цель скрипта - вытянуть из БД данные в массив, отрезать у этого массива первые 7 элементов, и содержимое нового массива вывести в таблицу. Но выводится пустая таблица. Помогите плиз найти ошибку! Заранее спасибо!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #1 : 07 Января 2005, 02:49:22 »
LIMIT в запросе.
А код свой сотри, пока никто не видел...

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #2 : 07 Января 2005, 03:32:01 »
Я пробовал через LIMIT:
"SELECT text, DATE_FORMAT(date, \'%e.%m.%Y\') as date1 FROM news ORDER BY date DESC LIMIT 7,3" (3 позиции после 7-ой новости) - не работает.

А код стирать не буду - я только учусь, все вы когда-то такими были.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #3 : 07 Января 2005, 04:37:56 »
Цитировать
Masta SPiN:
Я пробовал через LIMIT:  не работает.

Ну и что?
А если машина у тебя не работает - это повод выбросить ее и купить другую? может быть, стоит поучиться водить?

Цитировать
Masta SPiN:
А код стирать не буду

Ну тогда гордись им :-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #4 : 07 Января 2005, 04:40:01 »
Не мог бы ты пояснить, что делает каждая строчка твоего кода?
В принципе, это надо делать самостоятельно - чтобы находить ошибки в своих скриптах, но поскольку ты начинающий, имеет смысл сделать это на форуме.

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #5 : 07 Января 2005, 22:16:14 »
Почему-то мое мнение о тематических форумах немного не совпадает с твоим ;) ИМХО такие форумы созданы для того, чтобы общаться, и помогать друг другу, а не высмеивать временный недостаток знаний других форумчан. Гордиться данным скриптом я не собираюсь - я уже сказал, что только осваиваю ПХП. Дальше. Если машина не работает - то нужно попробовать найти причину неисправности, и при достаточном знании тех.части устранить найденную неисправность. Если попытка не удалась - то нужно оттарабанить тачку на СТО, и там уже специалисты пусть с ней разбираются. Если уже ничего сделать нельзя - то тогда ее уже нужно выкидывать (один из вариантов). По аналогии с проблемой в моем скрипте: форум - это подобие СТО, а ты типа как специалист этого СТО ;) После того, как я из-за недостатка знаний ПХП сам не смог найти ошибку в моем скрипте, я обратился на форум за помощью. Что-то не так, я где-то не прав? ;)

Подробно о скрипте: чтоб не расписывать все, я упростил его -
mysql_connect ();
mysql_select_db ("log_pass");
$result = mysql_query ("SELECT text, DATE_FORMAT(date, \'%e.%m.%Y\') as date1 FROM news ORDER BY date DESC");

echo "
$arr2[date1]$arr2[text]
";
for ($i = 0; $i < 3; $i++) {
   $arr = mysql_fetch_array($result);
   $arr2 = array_slice ($arr, 7);
   echo "";
}
?>

Что по моей идее должен осуществлять этот скрипт: массив $arr заполняется выборкой из БД (предположим массив состоит из 10 строк). Массив $arr2 по идее должен содержать последние 3 строки массива $arr. Затем контент массива $arr2 выводится в виде простейшей ХТМЛ-таблицы. Результат меня не устраивает ;) В принципе все.

P.S. А водить я умею - как-никак один из организаторов уличных гонок в моем городе ;)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #6 : 07 Января 2005, 22:31:51 »
ты не понял моей аналогии.
ты никуда свою машину не таскал.
ты просто ее выкинул. Лимит у тебя не заработал - ты от него отказался.

ты противоречишь сам себе.
Ну пообщался я с тобой на тематическом форуме.
Объяснил что надо делать лимитом.
что-то не заметно, чтобы это общение оставило хоть какой-то след в твоих рассуждениях.

Цитировать
Masta SPiN:
 массив $arr заполняется выборкой из БД

очень интересно.
представим, что на месте выборки - цифры
значит ли это, что код выведет цифру 6?
for ($i = 0; $i < 3; $i++) {
$arr = 2;
}
echo $arr;

Цитировать
Masta SPiN:
Массив $arr2 по идее должен содержать последние 3 строки массива $arr

опять не понял.
почему должен? исходя из чего?
Цитировать
Masta SPiN:
Затем контент массива $arr2 выводится

стоп.
вот ты пишешь - "затем". что означает - после.
как же после, когда во время?
Ио есть, массив еще не успел сформироваться - но уже  выводится!
На соревнованиях ты тоже получаешь приз, не успев закончить гонку?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #7 : 07 Января 2005, 22:44:08 »
Кстати, а почему, по-твоему, в общение не входит высмеивание?
С тобой обязаны общатьлся только так, как это нравится тебе?

Только не надо мне рассказывать сказок про то, что ты на своих гонках не позволишь себе посмеяться над студентом на убитом зипере, который тоже гоняться собрался.

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #8 : 08 Января 2005, 01:16:09 »
Насчет того, что я вроде как не понял аналогии - ты просто не хочешь вникать в смысл того, что я написал. Я пробовал использовать ЛИМИТ, в посте вверху я даже привел конкретно (т.е. исходя из аналогии я все-таки ПРИТАЩИЛ машину на СТО, просто автомеханик видимо ее не заметил ;) ), как я его использовал - ты этот пост проигнорировал, а теперь пытаешься доказать, что я просто выкинул свою тачку.

Где конкретно я себе противоречу? Это неаргументированная вода с твоей стороны. И ты не объяснял что делать с лимитом - ты просто сказал "ЛИМИТ в запросе" - ВСЕ.

Цитировать
RomikChef:
Masta SPiN:
Массив $arr2 по идее должен содержать последние 3 строки массива $arr

опять не понял.
почему должен? исходя из чего?

Исходя из моего понимания использования функции array_slice . Я не утверждаю, что это понимание является правильным - иначе я не пришел бы сюда за помощью.

Цитировать
RomikChef:
Masta SPiN:
Затем контент массива $arr2 выводится

стоп.
вот ты пишешь - "затем". что означает - после.
как же после, когда во время?
Ио есть, массив еще не успел сформироваться - но уже выводится!
На соревнованиях ты тоже получаешь приз, не успев закончить гонку?

"Затем" в контексте = "после получения массива arr2". Опять же, в моем понимании. Если при выводе таблицы обращаться к первому массиву -
echo "
";
- то выводится таблица, правда не с теми данными, которые мне нужны.

Цитировать
RomikChef:
Кстати, а почему, по-твоему, в общение не входит высмеивание?
С тобой обязаны общатьлся только так, как это нравится тебе?

Только не надо мне рассказывать сказок про то, что ты на своих гонках не позволишь себе посмеяться над студентом на убитом зипере, который тоже гоняться собрался.

Да кто как хочет - пусть так и общается, но и отдача этому человеку будет такая же. Я пришел сюда за помощью, вместо этого вынужден спорить на левые темы. Твоя аналогия про студента на убитом зипере неуместна - она могла бы использоваться в том случае, если бы я пришел со своим корявым скриптом на этот форум, и сказал бы тебе что ты не напишешь скрипт лучше. Я же ничего никому не пытаюсь доказать, я просто прошу помочь мне разобраться в простейшем для разбирающегося человека скрипте.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #9 : 08 Января 2005, 02:40:01 »
Цитировать
Masta SPiN:
вместо этого вынужден спорить на левые темы

не понял.
Что значит - вынужден? Тебя кто-то заставляет?
Не хотел бы - не писал бы. Всех этих простыней обиженного самолюбия.
Цитировать
Masta SPiN:
Я же ничего никому не пытаюсь доказать

неважно.
ты исключаешь здоровый смех из общения, а я не вижу причины, почему надо ограничиваться деловым стилем.
Если ты мне укажешь хоть одну, достойную внимания причину (а не твои личные представления о том, как остальные должны себя вести на форуме, чтобы тебе было приятно) то я сменю стиль.

Цитировать
Masta SPiN:
Насчет того, что я вроде как не понял аналогии - ты просто не хочешь вникать

можешь мне поверить на слово - я прекрасно вникаю в твои длинные речи.
прекрасно понимаю их смысл и подоплёку.
А вот ты, слишком озабоченый своей важной персоной и неподобающим к ней отношением, о проблеме своей подзабыл.
Это я, значит, плохой механик. Машину тебе не отремонтировал.
НЮ-НЮ.
Цитировать
Masta SPiN:
я все-таки ПРИТАЩИЛ машину на СТО,

Что ж, нет проблем.
Запрос
SELECT text, DATE_FORMAT(date, \'%e.%m.%Y\') as date1 FROM news ORDER BY date DESC LIMIT 7,3
Не содержит синтаксических ошибок. Забирайте свою машину - она в полном порядке.
Еще будут вопросы к СТО?
Цитировать
Masta SPiN:
Исходя из моего понимания использования функции array_slice

понимание, в принципе, верное.
А что находится в массиве, с которым работает эта полезная функция?
Цитировать
Masta SPiN:
Я не утверждаю, что это понимание является правильным

А я и не утверждаю, то понимание является неправильным.
Но мне интересно, что представляет из себя массив, с которым ты работаешь. А тебе не интересно?
Цитировать
Masta SPiN:
я просто прошу помочь мне разобраться в простейшем для разбирающегося человека скрипте

А я что делаю?
Я задаю тебе вопросы.
Стараюсь натолкнуть на некие размышления.
Но, увы, единственное, что тебя заботит - это то, что я к тебе обращаюсь без должного подобострастия. И основное содержание твоих текстов относится к этой проблеме.
Ты знаешь - мне совсем не жалко. Если ты хочешь об этом поговорить - я совсем не против.

Если же тебя, все-таки, волнует твой вопрос, то озаботься содержимым массива $arr и осмысленностью применения к нему функции эррэй-слайс. В частности - попробуй ответить себе на вопрос - откуда в нем возьмется 10 строк.
И в чем глубокий смысл цикла for, внутри которого постоянно от массива $arr отрезают 7 первых эоллементов.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #10 : 08 Января 2005, 02:49:49 »
Цитировать
ты не объяснял что делать с лимитом

А меня кто-то попросил объяснить?
А обязательно надо объяснять? В документации самостоятельно посмотреть сложно?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #11 : 08 Января 2005, 03:13:56 »
Вот еще пара моментов.
Из тебя такой поток льется, что за всем не уследишь
Цитировать
Masta SPiN:
я все-таки ПРИТАЩИЛ машину на СТО

Ничего ты не притаскивал.
Ты пришел с НОВОЙ машиной.
А про старую вскользь сказал механику, что ты ее выбросил, потому, что в ней пепельница засорилась. И даже марку назвал.
Но замечание моё о том, что ты выбросил, оносилось не к твоему посту на форуме. А к твоему отношению. К тому, что было до поста. Ты от лимита отказался? отказался. Значит выбросил.
И нечего мне тут рассказывать, что я тебе воду лью.
Здесь только один человек не понимает чужих аналогий. И этот человек - не я.

Цитировать
ты этот пост проигнорировал

Вранье.
 я тебе как раз пояснил, на примере с машиной, что ее не выбрасывать надо, как ты - лимит, а использовать.
И ты мне будешь рассказывать, что все правильно понял?
И будешь мне втирать, что это я не понимаю?

Кстати, если продолжить аналогию с механиками.
Им ты тоже рассказываешь, насколько они неправы? Как нехорошо с тобой раззговаривают? А когда они говорят тебе, что надо сделать - ты рассказываешь, что они ничего не понимают?
А они только улыбаются в ответ?
Тогда может быть, ты покинешь нас, грубых программистов, и отправишься к добрым механикам, чтобы они посмогли тебе написать программу?

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #12 : 08 Января 2005, 03:20:27 »
Ну конечно, к словам поцепляться (в ответ на твою демагогию про "вынужден") - это не в скрипте помочь ;) Маладца! Да и заметь, твои простыни намноооого больше ;) Я не обижаюсь - на обиженных как минимум воду возят, как максимум - ... ;) Слова про плохого механика - твои, я просто констатировал тот факт, что механик мою машину не заметил, а потом пытался доказать мне, что я ее не привез на СТО.
Здоровый смех и высмеивание - разные вещи. А про деловой стиль с моей стороны речь не шла, просто я например не вижу необходимости высмеивать человека, который в чем-то разбирается намного хуже тебя, и просит помощи.
Цитировать
RomikChef:
ты не объяснял что делать с лимитом

А меня кто-то попросил объяснить?
А обязательно надо объяснять? В документации самостоятельно посмотреть сложно?

Выше ты сказал, что объяснил мне что нужно делать с ЛИМИТом - но ты этого не сделал. Считай это таким же цеплянием к твоим словам, каким и ты не прочь злоупотребить ;)

Теперь по скрипту. Снова сделал запрос с ЛИМИТом, в таком же виде, как вылаживал сдесь - все работает... Не знаю в чем прикол, все то же, но факт в том, что теперь я получаю необходимую мне выборку, а вчера не получал ничего... Спасибо №1 :)
По поводу эррэй_слайс - почучуть осознаю ошибку :) Спасибо №2 :)

Оффлайн Masta SPiN

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 7
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #13 : 08 Января 2005, 03:33:40 »
От ты неугомонный.
Цитировать
RomikChef:
Ты от лимита отказался? отказался. Значит выбросил.

Я не отказался. Я попробовал - не получилось, решил попробовать пойти другим путем - тоже не получилось. Решил обратиться на форум. Помоему тут все понятно.
Цитировать
RomikChef:
Здесь только один человек не понимает чужих аналогий. И этот человек - не я.

Прикинь, и не я тоже... Наверное кто-то из тех, кто читает этот диалог и боится что-то запостить, т.к. не понимает, при чем тут array_slice, LIMIT и студент на зиппере.
Насчет аналогии с механиками - снова не в тему, что-то у тебя все-таки не то с аналогиями :)) Я тебе хоть слово сказал что ты не прав, или что ты что-то не понимаешь касательно скрипта? Нет. И еще. Ни один нормальный механик, который дорожит своим рабочим местом, не будет неуважительно разговаривать с клиентом - по крайней мере первым не начнет разговор в таком русле. Но эта аналогия не канает (как и твоя) - т.к. я не клиент, а помощь на форуме - не твоя работа.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Возврат части массива
« Ответ #14 : 08 Января 2005, 03:46:52 »
Все правильно.
поэтому избавь меня от своих рассуждений на тему, как я с тобой некультурно обращаюсь.
можешь завести тему в форуме Флейм и присоединиться к другим, считающим себя обиженными.

На будущее. Если будешь прибегать к момощи механиков, то будь добр, излагать свои прроблемы не как пятилетняя девочка "я попробовала, у меня не получилось", а внятно, как человек, который совершает осмысленные действия, описывай.
- что делал.
- для решения какой задачи
- что ожидал получить
- что получилось в итоге.

В свою очередь я постараюсь избавить тебя от аналогий, в которые ты все рвно не въезжаешь, но при этом твоё трогательное отношение к своей прекрасной персоне подсказывает тебе только один вариант - что это у меня аналогия неправильная.

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 

$arr2[date1]$arr2[text]
$arr[date1]$arr[text]