Последовательный вывод слов из базы...типа цикл

Юра

Новичок
Последовательный вывод слов из базы...типа цикл

Вот какой вопрос.
Есть база. В таблице есть слова....всего 32.
//******************
слово1
слово2
слово3
...
слово32
//******************
как вывоить слова по-очереди, по три слова, ....лучше привер...
то есть должно быть так
//**************
(запрос 1....выводит)
слово1
слово2
слово3
(запрос 2....выводит)
слово2
слово3
слово4
(запрос 3....выводит)
слово3
слово4
слово5
...
(запрос 31....выводит)
слово31
слово32
слово1
(запрос 32....выводит)
слово32
слово1
слово2
....
(запрос 34....выводит)
слово2
слово3
слово4
//****************************

вот так в общем-то....конечно запутанно, но как мог....может кто понял и может чего посоветовать, заранее спасиб.
 

alpine

Новичок
Позвольте узнать почему именно запросом а не в php скрипте тем более что слов то "всего 32" ?
 

Юра

Новичок
svetasmirnova
балин, как не читал справочник, так и не дошёл как их можно использовать наибольую проблему представлет то, как в конце таблицы перескачить снова на 1 строку, при этом сохранить последовательность
//*************
слово32
слово1
слово2
//****************
alpine
хм...как в ПХП тогда это реализовать....мне вообще там и нужно сделать...
 

Юра

Новичок
alpine
алгоритм...от кода не откажусь тоже :)
но я просто пока не представляю как эт сделать, мот знаний не хватает.... в общем..актуально
 

svetasmirnova

маленький монстрик
Ну я бы объектик создала, реализующий интерфейс Iterator, который бы возвращал числа от 1 до 32, а затем опять от 1 до 32 и его бы использовала в цикле как счётчик. А по тройкам разбить, я думаю, труда не составит
 

basboy

Новичок
Юра
Вот тебе код, думаю сам сможешь доделать под себя. А для начала скопируй себе в файл и посмотри рез. работы.

PHP:
<?
function vedro($arr,$plase,$num)
{
	for($i=0;$i<$num;$i++)
	{
		echo $arr[$plase].'<br>';
		$val=array_shift($arr);
		array_push($arr,$val);
	}
}

for ($i=1;$i<33;$i++)
{
	$arr[]=$i;
}
echo '<pre>';
print_r($arr);
echo '</pre><p>';

vedro($arr,5,3);
echo '<p>';

vedro($arr,1,3);
echo '<p>';

vedro($arr,0,3);
echo '<p>';

vedro($arr,31,3);
echo '<p>';
?>
-~{}~ 02.09.05 12:12:

Наверное есть функция, которая заменяет
PHP:
$val=array_shift($arr);
array_push($arr,$val);
если кто знает, напишите, а то мне в лом искать.
 

alpine

Новичок
Предлагаю вычислять ключ массива примерно так:
PHP:
<?php

$iStart	= 1;
$iEnd	= 32;

$aTest = range($iStart, $iEnd);
$iTest = 30;

$iCurrent = $iTest -1;
while ( $iTest + 2 > $iCurrent ) {
	echo getArrayElement($aTest, $iCurrent).'<br />';
	$iCurrent++;
}

function getArrayElement($aArrayElements, $iNeedle)
{
	$iLastElementKey = count($aArrayElements) - 1;

	if ($iNeedle > $iLastElementKey) {
		$iNeedle = $iNeedle - 1;
		$iKey = $iNeedle - $iLastElementKey*floor($iNeedle/$iLastElementKey);
	} else {
		$iKey = $iNeedle;
	}

	return $aArrayElements[$iKey];
}
?>
 

dvp

Новичок
А я так и не понял, эти пачки по 3 слова выводятся в течении одного выполнения программы, или в разных вызовах?
 

basboy

Новичок
Пример Alpin будет работать раза в 4 быстрее чем мой, прошу заметить.
 
Сверху