سایت خود را بسازید ، به روش saalek110

saalek110

Well-Known Member
result.png

مقدمه فرم:
اولش فرم به زبان html را داریم..
اون فرم یک دکمه داره ، مثلا اسم دکمه اون فرم action است...
بعد که دکمه اش کلیک بشه ، یک قسمت کد php به شکل زیر باید باشه تا به اون فرم جواب بده...
یادتون باشه کدهای php را همیشه در میان تگهای مخصوص خودش قرار دهید و بعد میان کدهای html قرار دهید..
در کد زیر اون تگهای باز و بسته php را من نزاشتم ، خودتان اضافه کنید.
داخل اون شرط می بینید یک خط هست که داره از فرم اطلاعات دریافت می کنه...
طرز نوشتن اون همین جوری است ...کلمه POST را با حروف بزرگ بنویسید.
PHP:
if(      isset  ($_POST['action'] )    )
{
$var=$_POST["varrrr"];



}

البته قسمت php می تواند اطلاعات متعددی از فرم دریافت کند و فقط یک داده می تواند نباشد.
 
آخرین ویرایش:

saalek110

Well-Known Member
حدود ۷ پست قبل ، تاپیک معماری php را معرفی کردم....
هفت پست اخیر را از اون تاپیک نقل کردم....
تا مقدمه ای باشد برای کار با فرم و شروع مباحث php.
 

saalek110

Well-Known Member
کد فرم در HTML
کد زیر از تاپیک علاقه مندان php کپی شد.

HTML:
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

در کد بالا ، یک فرم html را داریم.
در خط اول به فایل ،welcome.php پاس می دهد ، هر فرمی باید به یک فایل پاس بدهد...گاهی به فایل فعلی پاس می دهد.
خط های بعدی دو فیلد نام و ایمیل ایجاد شده که کاربر اطلاعات خود را درش می نویسد...
خط بعدی هم دکمه فرم است
خط آخر هم بسته شدن تگ فرم است /form

فایل welcome.php مثلا می تواند حاوی این کدها باشد:
PHP:
<html>
<body>

Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>

</body>
</html>

در کد بالا ، روش دریافت اطلاعات توسط php از یک فرم html را می بینید.... با همون علامت $ و بعدش _POST آندرلاین POST ...خوب این جوری کدش را می نویسند،قرارداد است دیگه، باید عادت کرد.... داخل اکلاد هم اسم اون فیلد را نوشته که مثلا name و email بوده فیلدها. منظور از فیلد اون مکانهایی است که کاربر مشخصات خود را وارد کرده.
در کد بالا ، علامتهای php باز و php بسته را اومده دو طرف echo گذاشته ، ولی من خودم دوست دارم این علامت ها در یک خط خالی باشه. و echo هم در یک خط برای خودش تنها باشه.این جوری:
PHP:
<html>
<body>

Welcome
 <?php
 echo $_POST["name"];
?>
<br>
Your email address is:
 <?php
echo $_POST["email"];
 ?>

</body>
</html>


سایت زیر خیلی خوب فرم را بحث کرده:

در سایت بالا توضیحاتی که من ندادم گفته شده و با تصویر فرم را نشان داده و کدها را بحث کرده.
 
آخرین ویرایش:

saalek110

Well-Known Member
در phpmyadmin ابزار کپی گرفتن جدول ها هم هست...
می توانید از همه چیز در یک فایل کپی بگیرید.
مثلا اگر هاست مجانی جدول های شما را به علت غیرفعال بودن پاک کرد ، کپی اش را داشته باشید.
 

saalek110

Well-Known Member
در چند پست اخیر ، با فرم html کمی آشنا شدید...
و دیدید چطور قسمت php اون اطلاعات پاس داده شده توسط فرم html را دریافت می کند.
منظورم این کد است:
PHP:
<html>
<body>

Welcome
 <?php
 echo $_POST["name"];
?>
<br>
Your email address is:
 <?php
echo $_POST["email"];
 ?>

</body>
</html>
در کد بالا ، قسمت php ، اومده اطلاعات پاس داده شده توسط فرم html را با اون علامت دلار آندرلاین پست $_POST دریافت کرده ، و تنها کاری که با این اطلاعات کرده اینه که با تابع echo اون را برای نمایش چاپ کرده.

بعدا ما کدهای php خواهیم نوشت که دریافتی های از فرم را کدهای php در دیتابیس ذخیره کند.
پس الان بهتره با همین کدها درک کنید که وقتی میگیم فرم html اطلاعات به قسمت کدهای php می فرستد منظور چیست. یعنی با زدن دکمه فرم هر چیزی کاربر وارد کرده پاس داده می شود به قسمت کدهای php و کدهای php با این علامت
$_POST و نوشتن نام فیلدها داخل آکلاد ، اون اطلاعات را دریافت می کند.
 

saalek110

Well-Known Member
یک نفر ممکن است بگه پس این کد چی بود؟
PHP:
if(      isset  ($_POST['action'] )    )
{
$var=$_POST["varrrr"];



}

درسته. سوال به جایی است.
پاسخ: همیشه فرم html به یک فایل دیگر پاس نمی دهد ، خیلی اوقات به فایل فعلی پاس می دهد..
کد بالا برای همین است ....یعنی وقتی فرم به فایل خودش پاس بدهد با کد بالا به فرم جواب می دهد.
 

saalek110

Well-Known Member
HTML:
 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

کد بالا نشان می دهد چطور یک فرم فایل فعلی را خطاب قرار می دهد...
کد بالا جایگزین این خط می شود:
HTML:
<form action="welcome.php" method="post">

باقی کدهای فرم همون ها باقی می مونه:
HTML:
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

البته می بینید که در اون خط کد فرم id هم دارد.
HTML:
id='myform'
این id مثل کد ملی می ماند و کاربردش برای شناسایی فرم است.
 
آخرین ویرایش:

saalek110

Well-Known Member
در کد زیر:

HTML:
 <input type="submit" name='action_2' value="Submit">

یک صفت name هم می بینید داریم.
کد بالا ، کد دکمه است..... گیج نشوید ، هر فرم چند قسمت دارد ، خط آخرش ، کد دکمه اش است....
خط اولش که در پست قبلی بحث شد ، id فرم را داشت و میگفت به کجا پاس می دهد... بین خط اول و خط آخر ، فیلدها قرار دارند.
جوابش با php این جوری میشه:

PHP:
 if(isset($_POST['action_2'])) 
{
}
 

saalek110

Well-Known Member
بزارید اینها را بزاریم کنار هم تا گیج نشوید:
PHP:
 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>


 <input type="submit" name='action_2' value="Submit">
</form>
<?php


 if(isset($_POST['action_2']))
{
echo $_POST["name"];

echo $_POST["email"];

}

?>

در کد بالا ، تا </form> قسمت html است ، بعد می بیند تگ شروع php را داریم و قسمت php شروع میشه...
حالا تگهای html و body را خودتان اول و آخر فایل اضافه کنید.. من فقط قسمت فرم و جوابش را اینجا دارم بحث می کنم.

در قسمت php ، اومده اطلاعات ارسالی از فرم را چاپ کرده ...
می بینید که صفت name دکمه فرم ، یعنی action_2 در قسمت php برای شناسایی استفاده شده.
اگر دکمه اون صفت name را نداشت ، این کد php نمی توانست بفهمه کدوم دکمه کلیک شده....چون ممکن است در یک صفحه چندین فرم باشد و هر فرم یک دکمه داره ، با صفت name می فهمیم کدوم دکمه کلیک شده.
 

saalek110

Well-Known Member
خوب ، با نوشتن کد پست قبل آماده می شویم برای کارهای جدی تر...
در کد پست قبل ، قسمت php فقط اطلاعات پاس داده شده را روی صفحه چاپ کرده ولی ما بعدا می خواهیم این اطلاعات در دیتابیس ذخیره شود.
من کدهای پست قبل را از سایت خودم کمی کردم. فعلا تست نکردم. فعلا خواستم کدها جمع بشوند دم دست تا برای استفاده آماده بشوند.منظور از سایت خودم اینه که من یک سایت خودم نوشتم و داره کار می کنه و کدهای اون سایت را دارم اینجا نشان می دهم.
 

saalek110

Well-Known Member
HTML:
<textarea id="myrextarea"   form="name_of_id_of_form"  name="news" rows="8" cols="30">neveshteh ha</textarea>
صفت فرم از textarea باید با id فرم یکی باشد.



کد بالا را ببینید، یک فیلد محسوب میشه...مثلا کاربر داخلش نظراتش را می نویسه...
ولی هم id داره و هم name
کاربرد id و name فکر می کنم فرق داره....البته من می دونم هر کدون را کجا استفاده کردم، ولی از این نظر گفتم فکر می کنم که شاید بشه به جای هم استفاده کرد.
همچنین دو صفت ردیف و ستون داره که به مشخصات فیزیکی textarea مربوط است و ربطی به بحث ما ندارد. یعنی یک جورایی طول و عرض. البته طول و عرض نیست ، ولی تقربیا همون نقش را بازی می کند.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
         $sql = "INSERT INTO `table12` (`number`,`name`, `age`) VALUES ('$number','2','$name')";
کد بالا کوئری insert است، یعنی افزودن یک سطز به دیتابیس.اسم جدول اینجا table12 است و اسم ستونها number و name و age است. یعنی شماره و نام و سن.

طبیعتا باید چنین جدولی در دیتابیس یا نام table12 داشته باشید و ۳ ستون با نامهای مذکور را هم باید داشته باشه تا بتونید با کوئری بالا در اون جدول سطر اضافه کنید.

اون $number و $name متغیرهایی در php است. اون ۲ هم که یک عدد ثابت است. این ۳ تا در جدول دیتابیس به عنوان یک سطر افزوده شده. این $name و $number از کجا اومده ؟
مثلا نام کسی بوده که روی سایت نظر گذاشته و فرم html پاس داده به قسمت php و در پستهای قبل دیدیم چطور php نام را دریافت کرد از قسمت html.
و این $number می تونه یک عدد باشه که از روی اعداد قبلی ساخته شده تا شماره ردیف داشته باشیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
          $result = mysqli_query($ccoonn ,$sql);
در پست قبل کوئری را در متغیری به نام $sql ریختیم.
اینجا اون متغیر به همراه متغیر ccoonn استفاده شده.... اگر می خواهید بدونید این متغیر چیه ، فایل کانکشن که قبلا ساختیم را ببینید. فایل کانکشن این بود:
PHP:
<?php

$db_name = "epiz_9999999_name";
$mysql_username = "epiz_999909";
$mysql_password ="pppppppppp";
$server_name = "sql313.epizy.com";
$ccoonn = mysqli_connect($server_name, $mysql_username, $mysql_password,$db_name);
if (!$ccoonn)
  {
  die("Connection error: " . mysqli_connect_error());
  }
 
?>
یعنی $ccoonn حاصل وصل شدن بود... و حالا داریم اون را برای درج یک سطر در یک جدول استفاده می کنیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
پس در دو پست قبلی درج یک سطر ، در یک جدول دیتابیس را دیدیم.

حالا شما باید در سایت خود یک فرم بزارید ،
که فرم اطلاعات را به قسمت php بفرسته
و قسمت php اطلاعات را در اون جدول دیتابیس مثلا جدکل با نام table12 ثبت کنه
پس قبلش جدول را هم باید در دیتابیس بسازید.

اول فایل هم reqiure به فایل کانکشن را باید بنویسید. چون به فایل کانکشن نیاز هست برای کار با دیتابیس.
 

saalek110

Well-Known Member
تست و مرور:
چون کدها را تست نکردیم .... اینجا کدها را با نقلش و مرور تست می کنیم:۱۱
اولی فایل فرم بود با کد زیر:

HTML:
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>


در لینک بالا ، کد بالا را آپلود کردم.
اگر در لینک دقت کنید ، پسوند فایل اینجا html است... من تا اینجای آموزش همیشه پسوند را php گرفتم , ولی کد بالا فقط حاوی کدهای html است و جایز است که پسوند html داشته باشه.
شما اگر یک فایل با پسوند html در کامپیوتر یا گوشی خود داشته باشید ، راحت با بروسر می توانید بازش کنید و اجرا میشه برای شما. یعنی اگر کد این پست را در یک ادیتور بریزید و با پسوند html ذخیره کنید ، نیازی نیست در یک هاست آملود کنید تا تست کنید ، با بروسر هم کدهای html اجرا میشه.

ولی وقتی کد php لابلای کدهای html اضافه کنید دیگه نیاز به هاست اری برای اجرایش ، یا اینکه نرم افزارهایی روی کامپیوتر خود یا گوشی خود برای اجرای کدهای php نصب کنید.
در پستهای قبل من دو نرم افزار گذشتم برای گوشی... در یک تاپیک دیگه گفتم با این دو تا میشه یک محیط کامل داشت.

نتیجه اجرا در سایت در عکس زیر:

Screenshot_۲۰۲۴-۰۱-۱۹_۰۷۴۱۱۱.jpg

الان شما می توانید بزوید لینک بالا ، و فرم را پر کنید و دکمه اش را بزنید ، ولی خطا می دهد. چون داره با فایل welcome.php پاس می دهد که من هنوز آپلود نکردنش.

من خودم رفتم این کار را کردم ، ای صفحه اومد:

Screenshot_۲۰۲۴-۰۱-۱۹_۰۷۵۶۰۳.jpg

یعنی داره میگه چنین فایلی وجود نداره..
حالا می خوام فایل welcome.php را آپلود کنم.... در پست بعدی...
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
<html>
<body>

Welcome
 <?php
 echo $_POST["name"];
?>
<br>
Your email address is:
 <?php
echo $_POST["email"];
 ?>

</body>
</html>

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

ولی من لینکش را می ذارم:

۱
چون می خواهم بدون رفتن به فایل اول ، رفتن به فایل دوم را هم تجربه کنید.. خوب تاپیک آموزشی است دیگه.
اگر لینک بالا را بزنید اون اطلاعات را نداره تا نشون بده ، همون اسم و ایمیل و این میاد:۱
HTML:
Welcome
Your email address is:

یعنی گفته سلام ای که نامت را ندارم
ایمیل شما اینه: ولی نداره نشون بده....

ولی اگر از لینک پست قبلی یعنی از راه درستش وارد بشوید میگه:
HTML:
Welcome Saalek110
Your email address is: [email protected]

ایمیل واقعی ننوشتم ، نوشتم مجیدآنلاین.
 
آخرین ویرایش:

saalek110

Well-Known Member
در مثال دو پست قبل ، فرمی بود که پاس می داد به یک فایل دیگر...
حالا می خواهیم فایلی کار کنیم که به خودش پاس بدهد . پس دیگه welcome.php را نداریم و کلش یک فایل است.

PHP:
<html>
<body>


<form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>


 <input type="submit" name='action_2' value="Submit">
</form>
<?php


 if(isset($_POST['action_2']))
{
echo $_POST["name"];

echo $_POST["email"];

}

?>

</body>
</html>




نتیجه اجرا قبل از پر کردن فرم و زدن دکمه:
Screenshot_۲۰۲۴-۰۱-۱۹_۰۸۱۴۳۵.jpg
نتیجه اجرا بعد پر کردن فرم و زدن دکمه:

Screenshot_۲۰۲۴-۰۱-۱۹_۰۸۱۸۲۳.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
خوب اولا جواب رفته داخل هم که بیایید کمی کارهای ویرایش اضافه کنیم:
PHP:
<html>
<body>


<form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>


 <input type="submit" name='action_2' value="Submit">
</form>
<?php


 if(isset($_POST['action_2']))
{
echo "Hello ".$_POST["name"];
echo"<br>";
echo "your email is: ".$_POST["email"];

}

?>

</body>
</html>

در کد بالا فقط یک hello قبل اسم گذاشتم
و یک برو به خط بعد اضافه کردم
و چند تا کلمه قبل ذکر ایمیل اضافه کردم، این تکه فقط تغییر کرد نسبت به پست قبل تا چاپش جالب تر دربیاید:
PHP:
echo "Hello ".$_POST["name"];
echo"<br>";
echo "your email is: ".$_POST["email"];

ببینید در خطوط بالا ، عبارت متنی را داخل دابل کوتیشن گذاشتم ، بعدش یک نقطه گذاشتم و بعد متغیر اومده. متغیر منطورم همون اسم یا ایمیل است.

با اضافه کردن اینها چاپ جالب تر شد:



Screenshot_۲۰۲۴-۰۱-۱۹_۰۸۳۴۰۴.jpg
 
آخرین ویرایش:

saalek110

Well-Known Member
ولی بعد اینکه فرم را پر می کنیم و دکمه را می زنیم ، باز فرم اومده....
در شکل پست قبل که دورش خط آبی کشیدم می بینید باز فرم امده ولی دیگه کاری باهاش نداریم که.

میشه باز تغییراتی داد:

PHP:
<html>
<body>

<?php
 if( !isset($_POST['action_2']))
 {
?>

<form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>


 <input type="submit" name='action_2' value="Submit">
</form>
<?php
}



 if(isset($_POST['action_2']))
{
echo "Hello ".$_POST["name"];
echo"<br>";
echo "your email is: ".$_POST["email"];

}

?>

</body>
</html>


کاری که در کد این پست انجام شده ، اومدم گفتم اگر دکمه زده شده بوددیگه فرم نیاید.
توجه کنید کروشه بسته را کجا قرا دادم... چون کروشه مربوط به زبان php است باید در منطقه php باشد نه در منطقه html ، برای همین اون کروشه بسته کمی از فرم دور شده و رفته کنار جواب فرم.

در کد بالا ، دو تا کروشه باز داریم و دو تا کروشه بسته. منظور من کروشه بسته اولی است نه دومی.
در عکس زیر با فلش قرمز نشان دادم تا بدونید کدوم کروشه بسته را میگم:

Screenshot_۲۰۲۴-۰۱-۱۹_۰۸۵۲۵۰.jpg
چند خط کد زیر ، را نگاه کنید.
برای نوشتن کد php باید تگهای باز و بسته php دورش باشه، اونجا منطقه html بود و یک تکه کوچک منطقه php من اونجا ایجاد کردم با تگهای php باز و بسته و دو خط کد php نوشتم اونجا.
و موندش کروشه بسته اش، چون باید دو طرف فرم کروشه می ذاشتم... کروشه بسته اس را در منطقه php بعدی گذاشتم که بعد فرم بود...که در عکس بالا با فلش قرمز نشان دادم.
PHP:
<?php
 if( !isset($_POST['action_2']))
 {
?>

نتیجه اجرا :

Screenshot_۲۰۲۴-۰۱-۱۹_۰۸۵۹۳۸.jpg
می بینید دیگه در نتیجه اجرا فرم نیامده.
 
آخرین ویرایش:

saalek110

Well-Known Member
پس یک راه اینه که مناطق php باز بشوند و بسته بشوند ، مثل کد پست قبل...


راه دوم اینه همه کد را php بنویسیم و اصلا منطقه html نداشته باشیم.
یعنی تمام کدهای html بیاید echo شود.

این جوری:
PHP:
     echo'name: <input type="text"    name="name" ><br><br>';

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

در مورد این خط کد:
HTML:
<form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>

کمی به مشکل برمی خوریم چون هم دابل کوتیشن داره و هم سینگل کوتیشن....
البته شاید بشه این را هم echo کرد.. ولی پیچیدگی ایجاد میشه...
پس شاید بهتر باشه این خط کد داخل منطقه html باشه ... باقی کدها راحت echo می شوند.

در کدهای سایت خودم ، من می بینم این یک خط را من بیرون گذاشتم با دو تا تگ php دورش و باقی را echo کردم. عکس زیر:

Screenshot_۲۰۲۴-۰۱-۱۹_۰۹۱۱۳۴.jpg

در شکل بالا ، قبل کد مذکور ، قسمت php بسته شده تا این خط کد ، داخل منطقه html باشد ، و بعد این خط دوباره قسمت php باز شده و بقیه خطوط فرم echo شدند که در همین پست یک خطش را به عنوان نمونه گذاشتم.

پس این دو راه را داشتیم.... ببینید با کدام راه راحت هستید ، echo کردن کدهای html .... یا باز و بسته کردن مناطق php .....هر راهی را انتخاب کنید فرقی نمی کنه ، کد اجرا خواهد شد....
 
آخرین ویرایش:

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

بالا