PDA

View Full Version : استفاده از متغیری که در خطوط آتی مقدار خواهند گرفت...



mmdmmd
چهارشنبه 25 خرداد 1390, 14:41 عصر
سلام
میخواستم بدونم آیا راهی وجود داره برای اینکه از متغیری که مثلا در خط هشتم مقدار میگیرد در خط دوم استفاده کنیم
اگه راهی هست ممنون میشم فوری کمک کنید...:قلب::بوس:
مثال:
<?php
print $a;
//سایر کدها
$a=2;
?>

Mahdi.Spirit
چهارشنبه 25 خرداد 1390, 15:01 عصر
سلام
اين كار از لحاظ منطقي مشكل داره! معني نداره كه اول يه عدد رو چاپ كنيد بعد تازه بهش مقدار بديد!
لطفا دقيق تر بگيد ميخواين چكار كنين

alismith
چهارشنبه 25 خرداد 1390, 15:12 عصر
سلام

من دقیق متوجه سوال شما نشدم اما شاید بتونی از تابع استفاده کنی اینجوری :



function getVal($x){

echo $x;

}

$a = 2;
getVal($a);


فقط اگه قرار هست در خط هشتم مقدار بگیره یعنی چی تو خط دوم استفاده کنم؟
متغییر ها global هستند و میشه در کل برنامه از آنها استفاده کرد و مقادیر آنها رو تغییر داد (البته در تابع و کلاس فرق می کنه)


موفق باشید

mmdmmd
چهارشنبه 25 خرداد 1390, 15:59 عصر
راستش من صفحاتم رو به چند قسمت تقسیم میکنم
قسمت اول هدر نام داره که title صفحه توی اون قرار میگیره ، و این قسمت توی تمامی صفحات سایت تکرار میشه ، حالا به خاطر مسائل SEO میخواهم هر صفحه title مخصوص به خود را داشته باشه ، طبیعتا نام اون صفحه در قسمتهای پایینی (مثلا main) اومده حالا هدر صفحه باید نام صفحه را از متغیری که در وسط صفحه تعریف شده بگیره ، حالا این متغیر که میخواهد تایتل صفحه رو بهمون بده مثلا اگه نام یه محصول باشه باید اون رو از قسمت main بخونه ... امکانش هست یا یه راه دیگه پیدا کنم ...
مثال:

<?php
include "header.php";
include "something.php";
include "main.php";
include "footer.php";
?>

mmdmmd
چهارشنبه 25 خرداد 1390, 16:08 عصر
این کار میکنه :<?php
$a=1000;
print $a;
?>
این کار نمیکنه :<?php
print $a;
$a=1000;
?>

اما من میخواهم کار کنه ! چیکار کنم ...:بامزه::متفکر:

alismith
چهارشنبه 25 خرداد 1390, 16:36 عصر
خوب شما در main.php چطوری عنوان رو می خونی ؟
این امکان رو برای header.php هم بذار

mmdmmd
چهارشنبه 25 خرداد 1390, 16:58 عصر
آره باید همین کار رو بکنم
ولی خوبی این روش این بود که هدر یه فایل خیلی کوچک بود که توی همه صفحات تکرار میشد و با کوچکترین تغییر همه صفحات تغییر میکردند
اما حالا دردسرهای اتصال به DB , ... را باید در این فایل هدر تکرار کنم


صرفا خواستم بدونم راهی وجود داره یا نه .
ممنون

alismith
چهارشنبه 25 خرداد 1390, 17:12 عصر
خوب برای اینکار شما می تونید یک فایل اتصال به دیتابیس درست کنید و در تمام فایل های include از اون استفاده کنید، در این صورت فقط کافیه در فایل header یک sql بنویسید و عنوان رو دریافت کنید



موفق باشید

alismith
چهارشنبه 25 خرداد 1390, 17:26 عصر
ببخشید
من پست بالا رو با دقت خوندم منظور شما از این موارد چی بو؟


قسمت اول هدر نام داره که title صفحه توی اون قرار میگیره

طبیعتا نام اون صفحه در قسمتهای پایینی (مثلا main) اومده حالا هدر صفحه باید نام صفحه را از متغیری که در وسط صفحه تعریف شده بگیره

مقادیر فایل header چی هستش؟
و دقیقا کجا قرار می گیره؟
اگر مقدار داره دیگه به main چکار دارید؟
کار main چی هست؟

:متفکر:

اگر قرار هست که فایل main عنوان صفحه را نمایش بده ، کاربرد header چی هستش؟

mmdmmd
چهارشنبه 25 خرداد 1390, 17:44 عصر
هدر همون هدر html منظورمه - صرفا کدهای بالای صفحه شامل html و تایتل و ...
مقادیر داخلی برای بعضی صفحات ثابته و برای بعضی تغییر میکنه ، مثلا main-product.php اطلاعات هر محصول را از طریق GET میگیره و با اتصال به DB اطلاعات اون محصول را نمایش میده (تعداد محصولات زیاده) و main-contact.php صفحه ارتباط با ما هست.
کلا تعداد صفحات سایت هم زیاده هم انگلیسی هم فارسی
این هدر را گذاشته بودم که راحت تر باشم
اما راهی که حالا به نظرم میرسه به غیر از استفاده از smarty که البته بهش مسلط نیستم اینه که
هدر صفحات داینامیک ، باید متناسب با همون صفحات ساخته بشه و در قسمت main اون صفحات هم دیگه احتیاجی به اتصال به db نیست ، چون اطلاعات را از هدر میخونه ،
و صفحات استاتیک هم مثل قبل.
مشکل این روش اینه که تعداد هدر هام زیاد میشه و وقتی مثلا بخواهم یه تگ META را تغییر بدم باید چند تا فایل هدر را ویرایش کنم .

باز هم ممنون

امیـرحسین
پنج شنبه 26 خرداد 1390, 12:41 عصر
اولا که شما اگر تیکه‌های داینامیک در فایلهای استاتیک دارید میتونید از کپی استفاده نکنید. بجای اینکه چند تا header بسازید که فقط META توش متفاوته، یک header بسازید با چند تا فایل META که در فایل header فراخوانی میشند (البته در کل اینجوری META خوب نیست).
برای مشکل title اگر سایت ۱۰۰۰ تا صفحه نداره این روش مشکل رو حل میکنه: بجای echo و خروجی در فایلها، مقادیر رو جمع کتید و return کنید:

// main.php
$output = '<p>hello</p>';
//...
$output .= '<p>bye</p>';
//...
return $output;


$something = include "something.php";
$main = include "main.php";
$footer = include "footer.php";
$header = include "header.php";
echo $header . $something . $main . $footer;
unset($header,$something,$main,$footer);
یه روشی وجود داره که میشه خروحی فایلها رو بدون اینکه تغییرشون بدیم تا return داشته باشند بیرون میکشه. من راستش نمی‌دونم متغیرها در این حالت معتبر هستند یا خیر ولی اگر معتبر باشند کار ساده میشه:

// main.php
<p>hello</p>
<?php
//...
echo '20';
//...
?>
<p>bye</p>
// --------------------


function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
return ob_get_clean();
}
return false;
}


$something = get_include_contents("something.php");
$main = get_include_contents("main.php");
$footer = get_include_contents("footer.php");
$header = get_include_contents("header.php");
echo $header . $something . $main . $footer;
unset($header,$something,$main,$footer);

wallfa
پنج شنبه 26 خرداد 1390, 12:47 عصر
نیاز نیست از اسمارتی استفاده کنی . موتور قالب سبک تری وجود داره ! به غیر از اینها که خودتون گفتید به قول گفته آقای کی من ؟
شما کل فایل هدر با نام یه تابع معرفی کن زمانی که اون تابع هر جایی صدا بزنی تمام کدهای داخل اون خونده میشه نشون داده میشه !

exlord
پنج شنبه 26 خرداد 1390, 14:56 عصر
اگه از OOP استفاده کنین مشکلتون حل میشه ...

$header = new Header();
$body = new Content();
$header->title = $body->pageTitle;

echo $header->Render();
echo $body->Render();