کارم لنگه حسابی: مشکل با include

Shidook

New Member
نمی دونم چرا وقتی داخل یک td میخوام اطلاعاتی رو از یک فایل دیگه include کنم عکس ها، جدولها و div ها رو از خط دوم شروع میکنه (با متن مشکل نداره ).

رو کمکتون خیلی حساب می کنم.
 

Shidook

New Member
نه تگ <br /> استفاده نکردم.

ببینید حتی این هم ایجوریه؟

[LTR]
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><? include(myincludefile.php"); ?></td>
</tr>
</table>

--------------------
myincludefile.php:
--------------------
<table border="1" width="50%">
<tr>
<td>test</td>
</tr>
</table>[/LTR]
 
آخرین ویرایش:

tabib_m

Member
padding تیبل اول و margin تیبل دوم رو صفر بده ببین حل میشه؟
توی براوزرت هم یه view source بکن ، ببین چی داره برگردونده میشه
شاید یه جایی ، یه br ی اتفاقی اومده باشه تو کار
موفق باشید
 

Shidook

New Member
padding تیبل اول و margin تیبل دوم رو صفر بده ببین حل میشه؟
توی براوزرت هم یه view source بکن ، ببین چی داره برگردونده میشه
شاید یه جایی ، یه br ی اتفاقی اومده باشه تو کار
موفق باشید



باز هم نشد. در ضمن اگر فایلی که قرار اینکلود بشه div یا عکس باشه هم اینجوری میشه.
[LTR]
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><? include("myincludefile.php"); ?></td>
</tr>
</table>

--------------------
myincludefile.php:
--------------------
<table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table>

------------------------------------------------------
view source:

<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>

[/LTR]
 

iman_ebru

Active Member
view source:

<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>

خوب این که درسته؟ میخوای چی چاپ بشه پس؟ داخل <td> اول <table> دوم چاپ میشه!

ایمان
 

Shidook

New Member
من که با این کد مشکلی ندارم!!


اینو ببین:

2utt4lu.jpg
 

tabib_m

Member
من دقیقا همین کد رو کپی پیست کردم ولی هیچ مشکلی نبود
مطمئنی کامپیوترت مشکلی نداره؟

میخوای همین نمونه رو آپلود کن ، ما از اینجا تست کنیم ببینیم باز هم همینطوریه یا نه.
 

farhad110

Member
سلام
منم دقیقا همین مشکل رو داشتم
به codepage مربوط میشه:

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

اگر charset روی utf-8 نباشه درست میشه
ولی به هر حال این راه حل مشکل نیست.
 

tabib_m

Member
درسته ، این مشکل با کاراکترست utf-8 هست ، اما توی IE . توی Firefox مشکلی نداره.

والا اینم یه جورشه دیگه!!!!!!
به این میگن باگ ، نه؟
 

Shidook

New Member
درسته ، این مشکل با کاراکترست utf-8 هست ، اما توی IE . توی Firefox مشکلی نداره.

والا اینم یه جورشه دیگه!!!!!!
به این میگن باگ ، نه؟




اما هیچ کدوم از این دوتا فایل که <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> نداره؟

با opera و firefox امتحان کردم این مشکل رو نداره اما یه مصیبت بزرگتر: توی این دوتا تگهای div رو بهم ریخته نشون میده. :cry:

چیکار کنم؟
 

tabib_m

Member
استاندارد های w3 رو رعایت کن ، سایتت بدون مشکل نمایش داده میشه

در مورد اون یه خط اضافی یه راه دارم ، ولی همچین تو دل برو نیست.
چک کن که مرورگری که داره نمایش میده چیه ، اگه IE بود ، margin-top تیبل دومی رو منفی بده.
 

Shidook

New Member
td اولي رو اينطوري بنويس:
کد:
<td valign=top>

اینو قبلا امتحان کرده بودم. بی فایدست.

استاندارد های w3 رو رعایت کن ، سایتت بدون مشکل نمایش داده میشه

در مورد اون یه خط اضافی یه راه دارم ، ولی همچین تو دل برو نیست.
چک کن که مرورگری که داره نمایش میده چیه ، اگه IE بود ، margin-top تیبل دومی رو منفی بده.


ممنون از راهنمایی هاتون.

اما واقعا راه درست و حسابی نداره؟
پس اینهمه سایت چیکار میکنن؟ یعنی با این اوصاف دستور include دوزار نمی ارزه!

حالا این راه حلی که میگی رو چجوری انجامش بدم ؟

بازهم ممنون
 

tabib_m

Member
پس اینهمه سایت چیکار میکنن؟ یعنی با این اوصاف دستور include دوزار نمی ارزه!
مشکل مربوطه به هیچ وجه به include ربطی نداره ، مشکل ، مشکل مرورگر هست.

حالا این راه حلی که میگی رو چجوری انجامش بدم ؟
میتونی با php بفهمی ، میتونی هم با خود مرورگر بفهمی که مرورگر چیه.
توی php :
کد:
<?
function _get_browser()
{
 $browser = array ( //reversed array
  "OPERA",
  "MSIE",            // parent
  "NETSCAPE",
  "FIREFOX",
  "SAFARI",
  "KONQUEROR",
  "MOZILLA"        // parent
 );
 
 $info[browser] = "OTHER";
  
 foreach ($browser as $parent)  
 {
  if ( ($s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE )
  {            
    $f = $s + strlen($parent);
    $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
    $version = preg_replace('/[^0-9,.]/','',$version);
              
    $info[browser] = $parent;
    $info[version] = $version;
    break; // first match wins
  }
 }
 
 return $info;
}

$thisBrowser=_get_browser['browser'];
?>
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0" <? if($thisBrowser=="MSIE") echo "style='margin-top: -20px;'";?>>
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>

-20 رو کم و زیاد کن تا به نتیجه ی مطلوب برسی.
راستش راه حل درست و حسابی ش اینه که منتظر مایکروسافت بشینی تا مرورگرش رو درست کنه. ;)
 

NabiKAZ

Well-Known Member
جالبه !
ولی جالبترش دلیل این مشکله که کشفش کردم !
ببینید در واقع مشکل از UTF-8 و... نیست ! بلکه با تغییر اون مشکل ظاهر میشه ، در واقع مشکل جای دیگست . بیخود دارید به utf-8 و مایکروسافت فحش میدید !!!
شما اگر دقت کنید در خط 3 خروجی یعنی این کد:
HTML:
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>
درست در بین دو تگ table و td یک کارکتر زائد که دیده نمیشه وجود داره ! کدش اینه:  &#65279 (جالبته که ادیتور اینجا هم معادل کدش رو قرار میده و کد هم دیده نمیشه ! مجبور شدم ; رو از آخرش بر دارم که به عنوان کد جدول یونی کد بهش نگاه نکنه !!)

زمانی که encoding صفحه به صورت utf-8 تعریف میشه معادل این کد که در واقع یک کارکتر هیچی!! است ظاهر میشه که دیده نمیشه و فاصله ای هم ایجاد نمیکنه که دیده بشه ولی همون کافیه که یک کارکتر محسوب بشه و table بعد از خودش رو یه ردیف به پایین ببره.
اما زمانی که مثلا encoding صفحه رو به windows-1252 تبدیل میکنید این باعث میشه که بجای تمامی کدهای جدول unicode معادل کدهای اونها قرار بگیره که این قاعده شامل این کارکتر عجیب و غریب هم میشه و وقتی encoding رو عوض کنید کارکتر نامرئی خودش رو به صورت کد نشون میده !!!
جالب بود نه ؟
حالا شما کدت رو یه بر رسی کن درست قبل از جایی که include آغاز میشه و درست در ابتدای فایلی که قراره include بشه رو چک کن ، قبلا گفتم این کارکتر به صورت عادی دیده نمیشه میتونی کدهاتو تو فرونت پیج کپی پست کنی و encoding رو به windows-1252 تغییر بدی تا کارکتر به صورت کد خودش رو نشون بده و حداقل جاشو پیدا کنی و حذفش کنی. البته در کد خروجی که شما قرار دادید این کد وجود داره و جاش هم مشخصه !
میتونی وقتی مکان نما روی اولین کارکتره شیفت رو نگه داری و یکی یکی کارکترها رو پیمایش کنی تا جایی که ببینی درجا میزنه همونجا کارکتر ویژست و حذفش کن.
دیگه هیچ مشکلی نیست!

بازم مشکلی بود در خدمتیم ;-)

خوش باشید
نبی
 
آخرین ویرایش:

Shidook

New Member
جالبه !
ولی جالبترش دلیل این مشکله که کشفش کردم !
ببینید در واقع مشکل از UTF-8 و... نیست ! بلکه با تغییر اون مشکل ظاهر میشه ، در واقع مشکل جای دیگست . بیخود دارید به utf-8 و مایکروسافت فحش میدید !!!
شما اگر دقت کنید در خط 3 خروجی یعنی این کد:
HTML:
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>
درست در بین دو تگ table و td یک کارکتر زائد که دیده نمیشه وجود داره ! کدش اینه:  &#65279 (جالبته که ادیتور اینجا هم معادل کدش رو قرار میده و کد هم دیده نمیشه ! مجبور شدم ; رو از آخرش بر دارم که به عنوان کد جدول یونی کد بهش نگاه نکنه !!)

زمانی که encoding صفحه به صورت utf-8 تعریف میشه معادل این کد که در واقع یک کارکتر هیچی!! است ظاهر میشه که دیده نمیشه و فاصله ای هم ایجاد نمیکنه که دیده بشه ولی همون کافیه که یک کارکتر محسوب بشه و table بعد از خودش رو یه ردیف به پایین ببره.
اما زمانی که مثلا encoding صفحه رو به windows-1252 تبدیل میکنید این باعث میشه که بجای تمامی کدهای جدول unicode معادل کدهای اونها قرار بگیره که این قاعده شامل این کارکتر عجیب و غریب هم میشه و وقتی encoding رو عوض کنید کارکتر نامرئی خودش رو به صورت کد نشون میده !!!
جالب بود نه ؟
حالا شما کدت رو یه بر رسی کن درست قبل از جایی که include آغاز میشه و درست در ابتدای فایلی که قراره include بشه رو چک کن ، قبلا گفتم این کارکتر به صورت عادی دیده نمیشه میتونی کدهاتو تو فرونت پیج کپی پست کنی و encoding رو به windows-1252 تغییر بدی تا کارکتر به صورت کد خودش رو نشون بده و حداقل جاشو پیدا کنی و حذفش کنی. البته در کد خروجی که شما قرار دادید این کد وجود داره و جاش هم مشخصه !
میتونی وقتی مکان نما روی اولین کارکتره شیفت رو نگه داری و یکی یکی کارکترها رو پیمایش کنی تا جایی که ببینی درجا میزنه همونجا کارکتر ویژست و حذفش کن.
دیگه هیچ مشکلی نیست!

بازم مشکلی بود در خدمتیم ;-)

خوش باشید
نبی



ممنون از جواب.
اما بطور واضح من چکار باید بکنم؟

باید در نظر داشت که:
1- وقتی کد view source رو میبری توی فرانت پیج اون کاراکتر رو میبینی. پس با فایلهای اصلی نمیشه کاری کرد.
2- مگر میشه از utf استفاده نکرد؟
3- بعضی مواقع چند تا فایل تو در تو اینکلود میشن یعنی فایل 1 در فایل 2 و فایل 2 در فایل 3 اینکلود میشه پس با این حساب نیتونیم از تگهای head - meta - html استفاده کنیم ( چون یه جایی خوندم که فایلهایی که قرار اینکلود بشه نباید این تگها رو داشته باشه.

یه سرچی هم تو منابع انگلیش کردم اما چیز به درد بخوری پیدا نکردم.
 

Shidook

New Member
مشکل مربوطه به هیچ وجه به include ربطی نداره ، مشکل ، مشکل مرورگر هست.


میتونی با php بفهمی ، میتونی هم با خود مرورگر بفهمی که مرورگر چیه.
توی php :
کد:
<?
function _get_browser()
{
 $browser = array ( //reversed array
  "OPERA",
  "MSIE",            // parent
  "NETSCAPE",
  "FIREFOX",
  "SAFARI",
  "KONQUEROR",
  "MOZILLA"        // parent
 );
 
 $info[browser] = "OTHER";
  
 foreach ($browser as $parent)  
 {
  if ( ($s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE )
  {            
    $f = $s + strlen($parent);
    $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
    $version = preg_replace('/[^0-9,.]/','',$version);
              
    $info[browser] = $parent;
    $info[version] = $version;
    break; // first match wins
  }
 }
 
 return $info;
}

$thisBrowser=_get_browser['browser'];
?>
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0" <? if($thisBrowser=="MSIE") echo "style='margin-top: -20px;'";?>>
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>

-20 رو کم و زیاد کن تا به نتیجه ی مطلوب برسی.
راستش راه حل درست و حسابی ش اینه که منتظر مایکروسافت بشینی تا مرورگرش رو درست کنه. ;)



دوست من با اینکه خیلی ارادت دارم ولی کدت error میده :sad:
 

جدیدترین ارسال ها

بالا