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

  • Автор темы Автор темы Юра
  • Дата начала Дата начала

Юра

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

Вот какой вопрос.
Есть база. В таблице есть слова....всего 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
//****************************

вот так в общем-то....конечно запутанно, но как мог....может кто понял и может чего посоветовать, заранее спасиб.
 
Позвольте узнать почему именно запросом а не в php скрипте тем более что слов то "всего 32" ?
 
svetasmirnova
балин, как не читал справочник, так и не дошёл как их можно использовать наибольую проблему представлет то, как в конце таблицы перескачить снова на 1 строку, при этом сохранить последовательность
//*************
слово32
слово1
слово2
//****************
alpine
хм...как в ПХП тогда это реализовать....мне вообще там и нужно сделать...
 
alpine
алгоритм...от кода не откажусь тоже :)
но я просто пока не представляю как эт сделать, мот знаний не хватает.... в общем..актуально
 
Ну я бы объектик создала, реализующий интерфейс Iterator, который бы возвращал числа от 1 до 32, а затем опять от 1 до 32 и его бы использовала в цикле как счётчик. А по тройкам разбить, я думаю, труда не составит
 
Юра
Вот тебе код, думаю сам сможешь доделать под себя. А для начала скопируй себе в файл и посмотри рез. работы.

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);

если кто знает, напишите, а то мне в лом искать.
 
Предлагаю вычислять ключ массива примерно так:
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];
}
?>
 
А я так и не понял, эти пачки по 3 слова выводятся в течении одного выполнения программы, или в разных вызовах?
 
Пример Alpin будет работать раза в 4 быстрее чем мой, прошу заметить.
 
Сверху