т.е. в первом и последнем слое размещаются по одной картинке ? ед что понял что во втором слое находятся картинки с равными у а какие находятся в первом и третем... как их разделять? от тех что равны между собой y координатой?
Короче пример: есть y=1,1,2,3,4,4,5,5,6,6,7,8,9,10 как распределить эти цифры в слои: 1 слой: 2 слой: 3 слой: напиши какие цифры додны быть в каком слое. цифры с потолка взял можешь привести свои. |
Описываю полностью:
Есть БД, в ней табличка 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); ... |
если что не понятно - спрашивай, а то я может чет не так написал...ибо у меня уже с этим кодом еще и в такое время...голова квадратная! Ночь не спал...не могу решить этот вопрос((( Пожалуйста помогите!
|
т.е. я так понял: во втором слое все картинки из objects. в первом все картинки из customers у которых y < всех Y из 2го слоя, в третьем соответсвенно все из customers, у которых y >= всех y из 2го слоя?
так я понял? или если custemers.y == одному из objects.y то его перекидывать во 2ой слой? |
Вот так:
во втором слое все картинки из objects. в первом все картинки из customers у которых y < всех Y из 2го слоя, в третьем соответсвенно все из customers, у которых y >= всех y из 2го слоя и во второй не надо ниче кидать) |
$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. |
В one не добавляется ничего совсем...хотя должно если в БД посмотреть... Но в two и three все работает чудесно!!! И за это тебе огромнийшое СПАСИБО)!:yes:
|
вот так сейчас все отображается:( :
![]() |
исправил прошлый пост. попробуй ща должно все ок.
дык тебе еще каждый слой надо по y сортировать?? |
та да, customers и object обьекты меж собой y меряют...надо не по max и min обьектов..а каждого отдельно взятого...как customers\'ы меж собой работают..так и все обьекты с обеих таблиц должны меж собой работать((
Изменил код, ну на max и min работет... обьекты и в one и d three заносятся... |
Часовой пояс GMT +3, время: 17:21. |