PDA

View Full Version : سوال: چند سوال مبتدیانه php



jahromy
دوشنبه 03 اسفند 1388, 00:12 صبح
با سلام
من به تازگی برنامه نویسی php رو شروع کردم حالا به چند سوال برخوردم.
یک نمونه سیستم خیلی ساده نوشتم
1)
تو یکی از فایل های php اون ثابت ها را مثل کد زیر تعریف کردم



<?php
//Rgister File Words
define("Register_title","ثبت نام کاربر جدید");
define("Register_name","نام و نام خانوادگی:");
define("Register_user","نام کاربری:");
define("Register_pass","رمز عبور:");
define("Register_retpass","تکرار رمز عبور:");
define("Register_email","ایمیل:");
define("Register_men","مرد");
define("Register_women","زن");
define("Register_submit","ارسال");
؟>
فرمی HTML در قالب فایلی با فرمت php ساختم



<html>
<head><title>
<?php include_once("./inc/language/fa.php"); echo Register_title; ?>
</title></head>

<body>
<div align="center" dir="rtl">
<form method="post" action="Submit.php">
<table>
<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_name; ?>
</td>
<td>
<input type="text" name="name">
</td>
</tr>

<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_user; ?>
</td>
<td>
<input type="text" name="user">
</td>
</tr>

<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_pass; ?>
</td>
<td>
<input type="password" name="pass">
</td>
</tr>

<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_retpass; ?>
</td>
<td>
<input type="password" name="retpass">
</td>
</tr>

<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_email; ?>
</td>
<td>
<input type="text" name="email">
</td>
</tr>

<tr>
<td>
<?php include_once("./inc/language/fa.php"); echo Register_men; ?><input type="radio" name="se" value="men">
<?php include_once("./inc/language/fa.php"); echo Register_women; ?><input type="radio" name="se" value="women">
</td>
</tr>

<tr>
<td>
<input type="Submit" name="submit" value="<?php include_once("./inc/language/fa.php"); echo Register_submit; ?>">
</td>
</tr>

</table>
</form>
</div>

</body>
</html>
حالا چطور میتونم ثابت های اون فایل رو جوری در فایل دوم فراخوانی کنم که نیاز به تایپ به صورت زیر نباشه نباشه:
<?php include_once("./inc/language/fa.php"); echo Register_retpass; ?>

2)
برای فایل ایندکس این کد را دادم:


<?php

include_once("Header.php");
include_once("Home.php");
include_once("footer.php");
?>

حالا مشکل اینه که در صفحه home با کلیک روی دکمه سابمیت فرم صفحه ای که لود میشه دیگه فوتر و هدر را ندارد مشکل کار من کجاست

3)
چطور یک قالب Html رو به کد نوشته شده php نسبت میدهند

4)
آیا تگ های Html را میشه در php استفاده نمود(مثلا تگ جدول بندی و br,...) ؟؟
چون می خواهم پیغام هایی که کلا توسط نتایج دستورهای php چاپ میشه را مرتب و در یک جدول قرار بدم

امیـرحسین
دوشنبه 03 اسفند 1388, 17:24 عصر
1) لازم نیست برای هر چاپ فایل رو Include کنید. یکبار بالای صفحه این کار رو بکنید و در همه جا از متغیرها و ثابت ها استفاده کنید.
2) خروجی رو همیشه کنترل کنید که دقیقا چه کدهایی پردازش و چاپ میشن. شما Action فرم رو احتمالا home.php گذاشتید در حالیکه باید به فایلی بذارید که اون سه تا خط توشه...
3) ؟
4) شما در PHP هر چی چاپ کنید. توی خروجی میبینید. اگر HTML باشه. توی خروجی HTML میبیند (که درستش همینه).

jahromy
یک شنبه 09 اسفند 1388, 16:44 عصر
1) من طبق فرمایش شما عمل کردم ولی موفق نشدم اگر ممکنه قسمتی از نمونه کد فرم HTML که در قالب فایلی با فرمت php ساختم را به عنوان نمونه ویرایش فرمایید

2) اگر به کدها نگاه فرمایید اکشن درست روی فایلی بنام submit.php تنظیم کردم که توی اون دستورات و شرایط به زبان php رو نوشتم تا اطلاعات ورودی فرم را کنترل کنه منتهی الان دستورات include_once("Header.php"); و include_once("footer.php"); را هم درون همین فایل گذاشتم مشکل حل شد
حالا یعنی هر فایلی که بخواهم همراه با هدر و فوتر باشد باید این دو گزینه درون ان وجود داشته باشه؟

3) برخی سیستم ها را می بینم که صفحات مربوطه به فایلهای .php آنها (شامل دستورات،حلقه ها و...) اجرا می شود ولی طرح بندی آن صفحه از فایل های .html نوشته شده (مربوطه به قالب) بهره میگیرد؟ خوب این به چه صورته ؟

4) الان مشکل من اینه که مثلا وقتی چند دستور پی اچ پی تایپ میکنم خروجی همه را پشت سر هم نمایش میده در حالیکه من قصد دارم حالت و فرمی به آن بدم تا با نظم و ترتیب مناسبی خروجی به نمایش در آید

مثلا:



<?php
echo masoud;
echo jahromy;
echo 123;
?>

خروجی میشه :
masoudjahromy123

که من می خواهم مثلا به شکل زیر خروجی را نمایش دهد:
masoud
jahromy
123
آنوق چکاری باید انجام دهم

5) با توجه به سیستم های مدیریت محتوا باکس هایی (بلوک هایی) در چپ، راست، پایین یا حتی همون باکس وسط مشاهده میشه که بعنوان تبلیغات،منوی اصلی،لینک دوستان و... مشاهده می شوند
حالا می خواستم من را برای نوشتن همچین بلوک هایی در یک فایل php جداگانه و اینکه جهت نمایش یافتن در سمت های راست،چپ،بالا و پایین فایل ایندکس چه دستوری باید در برنامه بنویسم یا چگونه اینکلود کنم راهنمایی بفرمایید.

از اینکه خیلی سوالاتم طولانی شد عذر می خواهم.

امید امرایی
یک شنبه 09 اسفند 1388, 17:35 عصر
شما ماشا الله اونقدر سوال پرسیدید که آدم نمی دونه کدومش رو جواب بده.

2 - شما باید این include ها رو توی فایل submit.php هم انجام داده باشید و اگه ندادید طبیعیه که چیزی نشون نده

3- اون سایتها کد های html رو توسط php به خروجی می فرستن. به نوعی PHP یعنی پردازنده HTML

4 - به این شکل بنویسید :


echo masoud."<br>";
echo jahromy."<br>";
echo 123."<br>";


5- بهتره این کار رو در فایل جداگانه انجام ندید.
راه منطقی تر اینه که این خروجی ها از طریق یک تابع به هر صفحه ایی که میخواید ارسال بشن

امیـرحسین
یک شنبه 09 اسفند 1388, 21:34 عصر
1) من طبق فرمایش شما عمل کردم ولی موفق نشدم اگر ممکنه قسمتی از نمونه کد فرم HTML که در قالب فایلی با فرمت php ساختم را به عنوان نمونه ویرایش فرمایید
منظورتون چیه دقیقا؟ این مدلی کار نمی کرد؟

<?php
include_once("./inc/language/fa.php");
?>
<p><?php echo Register_title; ?></p>
<p><?php echo Register_name; ?></p>
<p><?php echo Register_user; ?></p>
<p><?php echo Register_pass; ?></p>

jahromy
یک شنبه 09 اسفند 1388, 23:12 عصر
شما ماشا الله اونقدر سوال پرسیدید که آدم نمی دونه کدومش رو جواب بده.
[/code]

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


2 - گفتم شاید راه بهتر و استانداردتری وجود داشته باشه پس یعنی این استانداردشه دیگه؟
3 - خوب در اینباره میشه توضیح کاملتری بفرمایید که چطور همچین کاری را من بتوانم انجام دهم
4 - با توجه به فرمایش شما کدهای html رو میشه کلا به این شکل استفاده کرد مثلا : echo کردن در یک جدول با یک فونت و رنگ دادن به آن ممکنه؟؟
5 - کمی بیشتر توضیح بفرمایید


امیـرحسین (http://barnamenevis.org/forum/member.php?u=94384) عزیز
ممنون درسته اینجوری جواب مده.
من در برخی سیستم ها میبینم فایل های php جداگانه نوشته شده و فایل مربوط به قالب و طرحبندی با فرمت html نوشته شده اند
حالا من کنجکاو شده بودم چطور بدون اینکلود کردن فایل های زبان (هیچ نشونه ای از زبان غیر html نداره) متغییرها رو به شکل {متغیر یا شایدم ثابت} در میان کدهای html دیده میشه نظر شما درینباره چیه؟
مثلا این یکی از فایلهای html مربوط به قالب سیستم مذکور هستش::



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={CHARSET}">
<title>{current_category}</title>
<meta name="description" content="{meta_description}">
<base href="{absolute_url}">
<link type="text/css" rel="stylesheet" href="{css_file}">
<script language="JavaScript" type="text/javascript">
<!--
var compareMinAllowed = "{COMPARE_MIN_ALLOWED_MSG}";
var compareMaxAllowed = "{COMPARE_MAX_ALLOWED_MSG}";
//-->
</script>
<script type="text/javascript" src="js/compare.js"></script>
<style type="text/css">
* html .png {background-image: none ! important; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src={logo_src},sizingMethod=crop);}
* html .png-powered {background-image: none ! important; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src=images/button-powered.png,sizingMethod=crop);}
</style>
</head>

<body dir="rtl" class="commonbg">
{header}


<table width="100%" border="0" cellspacing="0" cellpadding="0" class="mainTable">
<tr>
<!-- begin left_column -->
<td width="{left_column_width}" valign="top" class="mainTableCellLeft">
<!-- begin left -->
{block_body}
<!-- end left -->
</td>
<!-- end left_column -->
<!-- begin middle_column -->
<td width="{middle_column_width}" valign="top" class="mainTableCellCenter">
<!-- begin middle -->
{block_body}
<!-- end middle -->
</td>
<!-- end middle_column -->
<!-- begin right_column -->
<td width="{right_column_width}" valign="top" class="mainTableCellRight">
<!-- begin right -->
{block_body}
<!-- end right -->
</td>
<!-- end right_column -->
</tr>
</table>


{footer}
</body>
</html>
6) دیگه اینکه یک فولدر هم قابل اینکلود کردن در برنامه نویسی پی اچ پی هست؟ (به چه شکل؟)

امید امرایی
دوشنبه 10 اسفند 1388, 10:08 صبح
2- نمی شه گفت استاندارد. این یک راه کار رایجه اما شاید بشه خیلی کارهای دیگه هم انجام داد.

3- این قبیل سایتها این نوع ساختار ها رو برای مدیریت ظاهر سایت (Theme) پیاده سازی می کنند.
در اغلب موارد محتوای فایل index این تمپلیت گرفته می شه و به جای قسمت هایی که شما در موردشون سوال دارید مقادیر مورد نظر قرار می گیره.
فرض کنید نتیجه محتوا شده همین کدی که خودتون قرار دادید.


$content = file_get_content('templates/default/index.php');
$content = str_replace("{right_column_width}", RIGHT_COLOMN_WIDTH, $content);


4- بله ممکنه و اصلا برای همین کار PHP طراح شده

5- یک مثال :


function DrawSideBox($width, $height){
echo "
<div class=\"SideBox\" style="width: $width; height: $height;"></div>
";
}


6- یک فولدر قابل include کردن نیست
اما می تونید یک فایل رو در اون فولدر قرار بدید که همه فایل های موجود در اون فولدر رو Include می کنه.
بنابر این شما با Include کردن اون فایل همه اون فولدر رو Include کردید.

مثال :

include_all.php


<?php
include_once 'common_functions.php';
include_once 'membership.php';
include_once 'classes.php';
include_once 'constants.php';
?>


index.php


include_once 'include_all.php';

jahromy
دوشنبه 10 اسفند 1388, 18:43 عصر
1 - به یک متغییر میشه یک لینک آدرس (مثلا: آدرسی از یک فایل عکس، فلش،...) نسبت داد و اونو به نمایش در آورد؟؟
من خودم به شکل زیر نوشتم جوابش یکسری کد هگز داد


<?php
$logo = include("/images/logo.gif");
echo $logo;
?>
2 - کد زیر مربوط به فایل index.php درون فولدر تمپلت همون فایلهای html قالب سیستم هست کارش چیه؟



<?php

header("Location: ../../");
exit;

?>
3 - من هم مشتاقم از ساختارهای مناسب و استاندارد بخصوص همین نمونه سر در بیارم تا بتونم روی پروژه خودم هم پیاده کنم

1 - 3 ) با توجه به اوصاف مذکور میشه فایل تم را در قالب html نوشته بطوریکه درون آن متغییرهای لازم ذکر شده باشد بعد آن را در یک فایل (دستوری ,...) php اینکلود نموده تا فایل php اونو به اجرا در بیاره این روش درسته؟
2 - 3 ) اینجا لازمه دستورات مهم و اصلی که کار پردازش در php را انجام میدهند را اگر سراغ دارید به من معرفی فرمایید.
3 - 3 ) خوب در اینصورت متغییرهای درون فایل html میتونن آخرین مقدار خودشان را از فایل php دریافت نمایند؟

4 - منبع مناسبی درباره روش صحیح بکارگیری تگهای html در برنامه نویسی php سراغ دارید؟
5 - بی زحمت کمی مثالتون رو دقیق تر بیان کنید (در اجرا به خطا برخوردم و نتونستم رفعش کنم) میخواهم برای رفع مشکلاتم و سوالاتی که دارم ازش استفاده کنم تفسیر هم بکنید ممنون میشم.
6 - ترفند باحالی گفتی.

jahromy
چهارشنبه 12 اسفند 1388, 23:53 عصر
7 - من چگونه باید یک دستور شرطی که در صورت برقراری شرط ،برنامه را به یک زیر برنامه php هدایت کنه بنویسم؟
8 - یک مثال هم از چگونگی اجرای شرطی دستورات HTML بفرمایید ممنون میشم.