21.12.2009, 00:28
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
т.е. в первом и последнем слое размещаются по одной картинке ? ед что понял что во втором слое находятся картинки с равными у а какие находятся в первом и третем... как их разделять? от тех что равны между собой y координатой?
Короче пример:
есть y=1,1,2,3,4,4,5,5,6,6,7,8,9,10
как распределить эти цифры в слои:
1 слой:
2 слой:
3 слой:
напиши какие цифры додны быть в каком слое. цифры с потолка взял можешь привести свои.
|
|
21.12.2009, 06:00
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
Описываю полностью:
Есть БД, в ней табличка customers и objects. Из них скрипт достает данные и делает из данных картинки которые розмещаются в слоях (элементах DOM см.ниже $one, two и three), в средний слой и только в средний выводятся картинки из таблички objects и они в слое $two находятся всегда! Но если у картинки из этого слоя y больше чем у другой то она стоит впереди другой))) тоесть выводиться познее и соответственно она будет над другой картинкой с меншим Y..также и в customers картинки меж собой работают....Но те картинки, которые выводит из БД таблички customers должны перемещатся либо в слой $one (отображает в нем картинки выше картинок из среднего и трейтего слоя) либо в трейтий слой ($three)...в зависимости от Y object и Y customers картинок, и все картинки из customers тоже меж собой работают и меряют Y и помещаются в слои.....тоесть еть допустим такой набор данных в БД:
|objects|
|id|img |y |x |
|1|1.gif|100|200|
|2|1.gif|300|300|
|3|1.gif|100|700|
|customers|
|id|loc |y |x |
|4|2.gif|50 |200|
|5|2.gif|50 |400|
|6|2.gif|500|700|
|7|2.gif|500|300|
|8|2.gif|200|600|
|9|2.gif|300|600|
Картинки в слоях код розмещает так (все картинки соответственно id в базе здесь опишу):
<one>
4, 5,
</one>
<two>
1, 3, 2
</two>
<three>
8, 9, 6, 7
</three>
вобщемь...вся картина нынешней ситуации:
...
//создаем dom
$dom = new DOMDocument();
//в нем главный каталог
$response = $dom->createElement('response');
$dom->appendChild($response);
//в response делаем три слоя (one, two, three)
$one = $dom->createElement('one');
$response->appendChild($one);
$two = $dom->createElement('two');
$response->appendChild($two);
$three = $dom->createElement('three');
$response->appendChild($three);
//загружаем картинки из бд в средний слой
$myobj = mysql_query("SELECT * FROM objects");
while($obj = mysql_fetch_array($myobj)) {
$imgobj = $obj['img'];
$yobj = $obj['y'];
$xobj = $obj['x'];
$allobj = "<img src='$locp' style='position: absolute; left:$xobj; top:$yobj'></img>";
//пыжуем картинки в средний (второй) слой...
$Objects = $dom->createTextNode($allobj);
$two->appendChild($Objects);
}
$mybase = mysql_query("SELECT * FROM customers");
while($db = mysql_fetch_array($mybase)) {
$id = $db['id'];
$x = $db['x'];
$y = $db['y'];
$loc = $db['loc'];
$all = "<img src='$loc' id='$id' style='position: absolute; left:$x; top:$y'></img>";
//пыжуем картинки в первый слой...но все картинки будут всегда над средним слоем
$AllUser = $dom->createTextNode($all);
$one->appendChild($AllUser);
...
|
|
21.12.2009, 06:06
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
если что не понятно - спрашивай, а то я может чет не так написал...ибо у меня уже с этим кодом еще и в такое время...голова квадратная! Ночь не спал...не могу решить этот вопрос((( Пожалуйста помогите!
|
|
21.12.2009, 11:11
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
т.е. я так понял: во втором слое все картинки из objects. в первом все картинки из customers у которых y < всех Y из 2го слоя, в третьем соответсвенно все из customers, у которых y >= всех y из 2го слоя?
так я понял? или если custemers.y == одному из objects.y то его перекидывать во 2ой слой?
|
|
21.12.2009, 14:17
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
Вот так:
во втором слое все картинки из objects. в первом все картинки из customers у которых y < всех Y из 2го слоя, в третьем соответсвенно все из customers, у которых y >= всех y из 2го слоя
и во второй не надо ниче кидать)
Последний раз редактировалось Jekel, 21.12.2009 в 14:20.
|
|
21.12.2009, 19:42
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
$mybase = mysql_query("SELECT * FROM objects WHERE id!='$pid' ORDER BY y ASC");
$min2y=$max2y=null;
while($db = mysql_fetch_assoc($mybase)) {
$y[$db['y']] = $db;
$allobj = "<img src='{$db['img']}' style='position: absolute; left:{$db['x']}; top:{$db['y'}'></img>";
//пыжуем картинки в средний (второй) слой...
$Objects = $dom->createTextNode($allobj);
$two->appendChild($Objects);
$max2y = $max2y!==null ? max($max2y,$db['y']) : $db['y'];
$min2y = $min2y!==null ? min($min2y,$db['y']) : $db['y'];
}
$mybase = mysql_query("SELECT * FROM customers WHERE id!='$pid' ORDER BY y ASC");
while($db = mysql_fetch_assoc($mybase)) {
//запихиваем данные из строк в <img>
$all = "<img src='{$db['loc']}' width='50' height='50' id='{$db['name']}' name='{$db['name']}' style='position: absolute; left:{$db['x']}; top:{$db['y']}'></img>";
$isbnTextq = $dom->createTextNode($all);
$lay = $db['y']<$min2y ? $one:$three;
$lay->appendChild($isbnTextq);
}
А что если customers.y > min2y и customers.y <max2y ?
я сделал что если не меньше всех во втором слое, то кидаем в слой 3 в не зависимости от того находится ли customers.y в промежутке слоя 2.
Последний раз редактировалось PeaceCoder, 21.12.2009 в 22:34.
|
|
21.12.2009, 21:59
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
В one не добавляется ничего совсем...хотя должно если в БД посмотреть... Но в two и three все работает чудесно!!! И за это тебе огромнийшое СПАСИБО)!
|
|
21.12.2009, 22:31
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
вот так сейчас все отображается :
|
|
21.12.2009, 22:34
|
|
Профессор
|
|
Регистрация: 15.12.2009
Сообщений: 742
|
|
исправил прошлый пост. попробуй ща должно все ок.
дык тебе еще каждый слой надо по y сортировать??
Последний раз редактировалось PeaceCoder, 21.12.2009 в 22:38.
|
|
21.12.2009, 22:41
|
|
Профессор
|
|
Регистрация: 20.11.2009
Сообщений: 257
|
|
та да, customers и object обьекты меж собой y меряют...надо не по max и min обьектов..а каждого отдельно взятого...как customers'ы меж собой работают..так и все обьекты с обеих таблиц должны меж собой работать((
Изменил код, ну на max и min работет... обьекты и в one и d three заносятся...
Последний раз редактировалось Jekel, 21.12.2009 в 23:14.
|
|
|
|