Есть код сделанный мною: PHP: <? $imgcombats = "http://img.combats.com/i/"; $encicl = "http://capitalcity.combats.com/encicl/"; $citys = Array (1 => "Capital city", 10 => "New Capital city", 6 => "Emeralds city", 2 => "Angels city", 3 => "Demons city", 4 => "Devils city", 5 => "Suncity", 7 => "Sandcity", 8 => "Mooncity", 11 => "Abandoned Plain", 12 => "Dreams city", 13 => "Low city", 14 => "Old city", 9 => "East city", 0 => "Kitezhgrad" ); $mas = array("capitalcity", "newcapital", "emeraldscity", "angelscity", "demonscity", "devilscity", "suncity", "sandcity", "mooncity", "dungeon", "dreamscity", "lowcity", "oldcity", "eastcity", "kitezhgrad" ); $db=mysql_connect("хост","логин","пароль"); if($db == false) { echo "<b> не могу соединиться с базой!</b>"; exit; } mysql_select_db("база данных"); $_result = mysql_query("select * from sostav"); $row_s=mysql_num_rows($_result); for($j=0;$j<$row_s;$j++) { $row = mysql_fetch_array($_result); for ($i=0; $i<count($mas); $i++) { @ $file = fopen("http://".$mas[$i+0].".combats.com/inf.pl?login=".urlencode($row["nik"])."&short=1", "r"); if($file==true) { break; } } while($row = fgets($file, 3000)) { $arr = split("=", $row); $data[$arr[0]] = $arr[1]; if(strpos($row, "reputations")!==false) { $arr = explode("=", $row, 2); $arr1 = split(",", $arr[1]); $data[$arr[0]] = array(); for($i=0; $i<count($arr1); $i++) { $arr2 = split(":", $arr1[$i]); $data[$arr[0]][$arr2[0]] = $arr2[1]; } } } echo '' .((is_int(strpos($data['align'], $data['align'])))?'<a href="'.$encicl.'alignment.html" target=_blank><img border=0 src="'.$imgcombats.'align'.$data['align'].'.gif" alt="align'.$data['align'].'.gif" /></a>':''); echo '' .((is_int(strpos($data['klan'],$data['klan'])))?'<a href="'.$encicl.'klan/'.$data['klan'].'.html" target=_blank><img border=0 src="'.$imgcombats.'klan/'.$data['klan'].'.gif" alt="'.$data['klan'].'" /></a>':''); echo '<b>'.$data['login'].'</b> [ '.$data['level'].'] <a href="'.$data['gamecity_url'].'/inf.pl?'.$data['id'].'" target=_blank>'; foreach ($citys as $key => $value) echo '' .((is_int(strpos($data['birthplace'], $value)))?'<img border=0 src='.$imgcombats.'inf'.$key.'.gif alt="Инф. о '.$data['login'].'" /></a>':''); echo '' .((is_int(strpos($data['klan'],$data['klan'])))?' - ':''); echo '' .((is_int(strpos($data['bossklan'],"1")))?'<b>Глава клана</b></br>':''.$data['rank'].'</br>'); foreach ($citys as $key => $value) echo '' .((is_int(strpos($data['gamecity'], $value)))?'<img src='.$imgcombats.'misc/forum/fo'.$key.'.gif width=17 height=15 border=0 alt="'.$data['gamecity'].'" /> <b>'.$value.'</b> - ':''); echo '' .((is_int(strpos($data['login_online'],'1')))?'<font color=green><b>OnLine</b></font> - ':'<font color=red><b>OffLine</b></font>'); echo $data['room_name']; echo '' .((is_int(strpos($data['battle_id'], $data['battle_id'])))?' - Персонаж сейчас в <a href="'.$data['gamecity_url'].'/logs.pl?log='.$data['battle_id'].'" target=_blank><img border=0 src='.$imgcombats.'fighttype2.gif alt=fighttype2.gif /> <b>поединке</b></a>':''); echo '' .((is_int(strpos($data['reputations']['title'], $data['reputations']['title'])))?'</br>':''); echo '' .((is_int(strpos($data['reputations']['title'], $data['reputations']['title'])))?'<img src="'.$imgcombats.''.$data['reputations']['img'].'" alt="'.$data['reputations']['dsc'].': '.$data['reputations']['title'].'" width=35 height=24 border=0 />':''); echo '<br /><hr />'; fclose($file); } ?> работает как надо когда $row["nik"] имеет одно значение, но как только много то происходит наложение информации друг на друга... как от этого избавиться???
чтото непонятное. что значит "когда $row["nik"] имеет одно значение" ? И в каком формате должно быть много значений? Он должен быть массивом? И наложение какой информации друг на друга? PHP: <? ((is_int(strpos($data['reputations']['title'], $data['reputations']['title']))) ((is_int(strpos($data['align'], $data['align']))) ((is_int(strpos($data['klan'],$data['klan']))) Что это такое? Зачем столько скобок? Что здесь происходит? PHP: <? ((is_int(strpos($data['bossklan'],"1")))? ((is_int(strpos($data['login_online'],'1')))? // Я так понимаю, этим ты хотел сказать просто if ($data['bossklan']) if ($data['login_online']) В общем, объясни, что здесь зашифровано
TheShock я просто php не давно начал изучать и по этому многое не знаю... в $row["nik"] подставляются различные ники... которые берутся из базы данных... так вот если подставить взамен $row["nik"] мой ник WHITE_DRAGON то всё работает, или какой-нибудь другой, или даже из БД, но только один... если начать подгрузку множества ников то происходит наложение информации что мне естественно не нужно... вот пример с одним ником без БД...: PHP: <? $imgcombats = "http://img.combats.com/i/"; $encicl = "http://capitalcity.combats.com/encicl/"; $citys = Array (1 => "Capital city", 10 => "New Capital city", 6 => "Emeralds city", 2 => "Angels city", 3 => "Demons city", 4 => "Devils city", 5 => "Suncity", 7 => "Sandcity", 8 => "Mooncity", 11 => "Abandoned Plain", 12 => "Dreams city", 13 => "Low city", 14 => "Old city", 9 => "East city", 0 => "Kitezhgrad" ); $mas = array("capitalcity", "newcapital", "emeraldscity", "angelscity", "demonscity", "devilscity", "suncity", "sandcity", "mooncity", "dungeon", "dreamscity", "lowcity", "oldcity", "eastcity", "kitezhgrad" ); for ($i=0; $i<count($mas); $i++) { @ $file = fopen("http://".$mas[$i+0].".combats.com/inf.pl?login=".urlencode('WHITE_DRAGON')."&short=1", "r"); if($file==true) { break; } } while($row = fgets($file, 3000)) { $arr = split("=", $row); $data[$arr[0]] = $arr[1]; if(strpos($row, "reputations")!==false) { $arr = explode("=", $row, 2); $arr1 = split(",", $arr[1]); $data[$arr[0]] = array(); for($i=0; $i<count($arr1); $i++) { $arr2 = split(":", $arr1[$i]); $data[$arr[0]][$arr2[0]] = $arr2[1]; } } } echo '' .((is_int(strpos($data['align'], $data['align'])))?'<a href="'.$encicl.'alignment.html" target=_blank><img border=0 src="'.$imgcombats.'align'.$data['align'].'.gif" alt="align'.$data['align'].'.gif" /></a>':''); echo '' .((is_int(strpos($data['klan'],$data['klan'])))?'<a href="'.$encicl.'klan/'.$data['klan'].'.html" target=_blank><img border=0 src="'.$imgcombats.'klan/'.$data['klan'].'.gif" alt="'.$data['klan'].'" /></a>':''); echo '<b>'.$data['login'].'</b> [ '.$data['level'].'] <a href="'.$data['gamecity_url'].'/inf.pl?'.$data['id'].'" target=_blank>'; foreach ($citys as $key => $value) echo '' .((is_int(strpos($data['birthplace'], $value)))?'<img border=0 src='.$imgcombats.'inf'.$key.'.gif alt="Инф. о '.$data['login'].'" /></a>':''); echo '' .((is_int(strpos($data['klan'],$data['klan'])))?' - ':''); echo '' .((is_int(strpos($data['bossklan'],"1")))?'<b>Глава клана</b></br>':''.$data['rank'].'</br>'); foreach ($citys as $key => $value) echo '' .((is_int(strpos($data['gamecity'], $value)))?'<img src='.$imgcombats.'misc/forum/fo'.$key.'.gif width=17 height=15 border=0 alt="'.$data['gamecity'].'" /> <b>'.$value.'</b> - ':''); echo '' .((is_int(strpos($data['login_online'],'1')))?'<font color=green><b>OnLine</b></font> - ':'<font color=red><b>OffLine</b></font>'); echo $data['room_name']; echo '' .((is_int(strpos($data['battle_id'], $data['battle_id'])))?' - Персонаж сейчас в <a href="'.$data['gamecity_url'].'/logs.pl?log='.$data['battle_id'].'" target=_blank><img border=0 src='.$imgcombats.'fighttype2.gif alt=fighttype2.gif /> <b>поединке</b></a>':''); echo '' .((is_int(strpos($data['reputations']['title'], $data['reputations']['title'])))?'</br>':''); echo '' .((is_int(strpos($data['reputations']['title'], $data['reputations']['title'])))?'<img src="'.$imgcombats.''.$data['reputations']['img'].'" alt="'.$data['reputations']['dsc'].': '.$data['reputations']['title'].'" width=35 height=24 border=0 />':''); echo '<br /><hr />'; fclose($file); ?> я просто не знаю как это реализовать вообщем смысол таков: если есть ((is_int(strpos($data['reputations']['title'], $data['reputations']['title']))) то выводится следующее действие... верное... если нет то второе не верное... и так далее... может ли делать так if ($data['bossklan']) я не знаю... коряво у меня, но работает...
Не могу понять. Вот смотри. У тебя есть ссылка: Код (Text): url/inf.pl?login=WHITE_DRAGON&short=1 А ты хочешь реализовать много ников в ней одной, или наоборот - много ссылков с разными никами? PHP: <?php // Это: echo '' .((is_int(strpos($data['align'], $data['align'])))?'<a href="'.$encicl.'alignment.html" target=_blank><img border=0 src="'.$imgcombats.'align'.$data['align'].'.gif" alt="align'.$data['align'].'.gif" /></a>':''); // Можно заменить на: echo $data['align'] ? '<a href="'.$encicl.'alignment.html" target=_blank><img border=0 src="'.$imgcombats.'align'.$data['align'].'.gif" alt="align'.$data['align'].'.gif" /></a>' : '';
Дай угадаю... Ты хочешь сделать на API сайта бойцовского клуба таблицу юзеров и у тебя получается вывести только одного юзера, но не всех?
PHP: <? // В данном случае ты если находишь хотя бы один ник - останавливаешь выполнение скрипта. // на самом же деле все, что находится после while($row = fgets($file, 3000)) { // и перед fclose($file); } включительно надо поместить !вместо! брейка и выполнять в цикле for ($i=0; $i<count($mas); $i++) { $file = fopen("http://".$mas[$i+0].".combats.com/inf.pl?login=".urlencode($row["nik"])."&short=1", "r"); if($file) { // СЮДА break; } }
TheShock Да вы правы!!! У меня много ников и ссылок и всё это для бойцовского клуба... Так вот одного... вывести могу... http://www.clan-harmony.com/test.php, а несколько нет... http://www.clan-harmony.com/structure/structure.php Ваш пример не работает... всё равно накладывается информайия из ников стоящих выше на ники расположенные ниже...
Но работает, конечно, отвратительно. Надо сделать кеширование хотя бы раз в минуту, иначе сервер твой будут ложить на очень долго
а это как... и логает это вы имели ввиду кучу копий на каждый ник??? по крайней мере у меня так получилось... показывает правильно, но делает кучу ненужных копий...