سبد خرید (0)

تبلیغات

آموزش Namespace در PHP

  • در PHP 5.3 یک مفهوم دیگر به نام namespace(فضای نام) به این زبان اضافه شد. اکثر زبان های برنامه نویسی از قبل این ویژگی را داشتند، اما زبان PHP دیرتر از بقیه وارد صحنه شد. اجازه دهید تا کمی با مفهوم namespace و کاربردهای آن  در phpآشنا شویم. 

    در زبان برنامه نویسی PHP، قادر نیستیم تا دو کلاس هم نام داشته باشیم. بعنوان مثال اگر بخواهیم از یک کتابخانه ی ثانویه در داخل کدهای خود استفاده کنیم که حاوی یک کلاس به نام User باشد، دیگر نمی توانیم در داخل کدهای خودمان، کلاسی به نام User ایجاد کنیم. 

     namespaceها در php به ما امکان می دهند تا این مشکل را حل کنیم. با استفاده از namespace می توانیم به هر تعداد که بخواهیم کلاس هایی با نام User (یا دیگر نام ها) ایجاد کنیم. اجازه دهید تا یک کلاس ایجاد کنیم و آن را مورد بررسی قرار دهیم:


     namespace سراسری(Global)

     در کدهای زیر، یک کلاس ساده را مشاهده می کنید:

    <?php
    
    // app/models/Eddard.php
    
    class Eddard
    {
    
    }

     هیچ کدی در داخل این کلاس وجود ندارد، و اگر بخواهیم این کلاس را مورد استفاده قرار دهیم، می توانیم به صورت زیر عمل کنیم:

    <?php
    
    // app/routes.php
    
    $eddard = new Eddard();

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

     


    استفاده از  namespaceهای ساده

    اجازه دهید تا در کنار کلاس سراسری Eddard، یک کلاس دیگر نیز ایجاد کنیم:

    <?php
    
    namespace Stark;
    
    // app/models/another.php
    
    class Eddard
    {
    
    }

     همان طور که مشاهده می کنید، در اینجا یک کلاس دیگر به نام Eddard (همان نام قبلی) ایجاد کرده ایم. همچنین از دستور namespace نیز در خط شماره ی 3 استفاده کرده ایم. درواقع در خط شماره 3،  عبارت ;namespace Stark  به php اعلام می کند که، هر کدی که می نویسیم به فضای نام Stark تعلق دارد. این یعنی هر کلاسی که در داخل این فایل php ایجاد شود، در درون فضای نام Stark قرار دارد. 


    اکنون اگر دوباره با استفاده از کدهای زیر بخواهیم از کلاس Stark استفاده کنیم:

    <?php
    
    // app/routes.php
    
    $eddard = new Eddard();

     در حقیقت از همان کلاس اولیه نمونه گیری کرده ایم(شیء ایجاد کرده ایم). یعنی از همان کلاسی که در ابتدای این مقاله ایجاد کردیم. نه آن کلاسی که در داخل فضای نام Stark آن را ایجاد کردیم. اما اکنون اجازه دهید تا از کلاس Eddard که در داخل فضای نام Stark قرار دارد، نمونه گیری کنیم(شیء ایجاد کنیم):

    <?php
    
    // app/routes.php
    
    $eddard = new Stark\Eddard();

     برای اینکه بتوانیم از یک کلاس که در داخل یک فضای نام قرار دارد، نمونه گیری کنیم، باید قبل از نام آن کلاس، از نامِ فضای نامی که در داخل آن قرار دارد، استفاده کنیم و بین آن دو، یک بک اسلش(\) قرار دهیم. اکنون ما توانستیم از کلاس Eddard که در داخل فضای نام Stark قرار دارد، نمونه گیری کنیم. 

    باید بدانید که فضاهای نام در صورت نیاز می توانند سلسله مراتب داشته باشند. بعنوان مثال داریم:

     

    This\Namespace\And\Class\Combination\Is\Silly\But\Works

     


     تئوری نسبی بودن

    زبان برنامه نویسی php همواره به صورت نسبی به فضاهای نام واکنش نشان می دهد. اجازه دهید تا این موضوع را در عمل مشاهده کنیم:

    <?php
    
    namespace Stark;
    
    // app/routes.php
    
    $eddard = new Eddard();

     با اضافه کردن namespace در کدهای بالا، باعث شده ایم که php به داخل فضای نام Stark برود(در خط شماره 3). اکنون چون که در داخل فضای نام Stark هستیم، در خط شماره ی 7، در حقیقت از آن کلاس Eddard داریم نمونه گیری می کنیم که دارای فضای نام Stark است. 

     حالا که فضای نام را تغییر داده ایم(به Stark)، با یک مشکل کوچک مواجه خواهیم شد. مشکل این است که حالا چگونه می توانیم از کلاس Eddard اصلی(که فضای نامی ندارد) نمونه گیری کنیم؟ خوشبختانه در زبان php یک راه حل برای اشاره به کلاس هایی که در داخل فضای نام سراسری هستند، وجود دارد. تنها کافیست که از یک علامت بک اسلش(\) قبل از نام کلاس استفاده کنیم:

    <?php
    
    // app/routes.php
    
    $eddard = new \Eddard();

     با استفاده از علامت بک اسلش(\)، زبان php متوجه می شود که ما داریم به کلاس Eddard که در داخل فضای نام سراسری قرار دارد، اشاره می کنیم و می خواهیم از آن، نمونه گیری کنیم. 

    تصور کنید که یک کلاس دیگر به نام Tully\Edmure داریم. و می خواهیم از این کلاس، وقتی که در داخل فضای نام Stark هستیم، استفاده کنیم. چگونه باید این کار را انجام دهیم؟

    <?php
    
    namespace Stark;
    
    // app/routes.php
    
    $edmure = new \Tully\Edmure();

     دوباره می توانیم از یک بک اسلش، قبل از نام این کلاس استفاده کنیم تا به فضای نام سراسری برگردیم، قبل از اینکه از کلاس Edmure که در فضای نام Tully قرار دارد نمونه گیری کنیم.

    یعنی ابتدا با استفاده از یک بک اسلش، به فضای نام سراسری می رویم، و سپس از کلاس Edmure که در فضای نام Tully قرار دارد نمونه گیری می کنیم. 

     اشاره به کلاس هایی که در داخل فضاهای نام متفاوتی هستند، به صورت سلسله مراتب، کمی خسته کننده است. خوشبختانه یک راه میانبر برای انجام این کار وجود دارد. و آن استفاده از دستور use است. به مثال زیر توجه کنید:

    <?php
    
    namespace Stark;
    
    use Tully\Edmure;
    
    // app/routes.php
    
    $edmure = new Edmure();

     با استفاده از دستور use می توانیم در داخل فضای نام جاری، از یک کلاس که در یک فضای نام دیگر قرار دارد، استفاده کنیم. این روش به ما امکان می دهد تا تنها با استفاده از نام آن کلاس، از آن نمونه گیری کنیم. 

    READ MORE
  • تابع Date در PHP

    Wiki

     این تابع، رشته ای از داده ها را به عنوان پارمتر می گیرد و نتایج آنها را به صورت زمان یا تاریخ نمایش می دهد.

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

    نحوه استفاده:

    date(format,timestamp)

    پارامتر توضیحات
    format الزامی است، فرمت تاریخ یا زمان را مشخص می کند.
    timestamp اختیاری است، یک برچسب زمان که باید به فرمتی که در پارامتر اول مشخص کرده ایم تبدیل شود(به صورت پیشفرض تاریخ جاری در نظر گرفته می شود).

      بعضی از کاراکترهایی که می توان به عنوان پارامتر الزامی، در تابع date استفاده کرد:

    • a: صبح یا عصر، نماینده am و pm است.
    • A: صبح یا عصر، نماینده AM و PM است.
    • B: زمان اینترنت سوئچ (swatch) که یک زمان جهانی است.
    • C: تاریخ ISO 8601، تاریخ به صورت YYYY_MM_DD . این کد فرمت در نسخه php 5 ارائه شده است.
    • d: روز به صورت عدد دو رقمی از 01 تا 31
    • D: روز هفته به صورت 3 کاراکتر مانند :Mon و Sun
    • F: ماه در فرمت متنی . محدوده آن از January تا December است.
    • g: ساعت در فرمت 12 ساعت از 1 تا 12
    • G: ساعت در فرمت 24 ساعت از 0 تا 23
    • h: ساعت در فرمت 12 ساعت از 01 تا 12
    • H: ساعت در فرمت 24 ساعت از 00 تا 23
    • i: دقیقه به صورت عدد دو رقمی از 00 تا 59
    • I: این مقدار بولی ساعت را یک ساعت به جلو و عقب می برد (در آخر تابستان و اول فروردین)
    • j: روز را در یک ماه نشان می دهد. از 1 تا 31
    • l: روز را در هفته از Sonday تا Monday مشخص می کند.
    • L: این مقدار بولی سال کبیسه را مشخص می کند و اگر سال کبیسه باشد مقدار یک را بر می گرداند.
    • m: ماه را در فرمت دو رقمی از 01 تا 12 مشخص می کند.
    • M: ماه در فرمت 3 کاراکتر مانند: Jan و Dec
    • n: ماه در فرمت عددی بدون صفر از 1 تا 12
    • o: تفاوت زمان منطقه جغرافیایی موجود و GMT را در واحد ساعت بیان می کند.
    • r: زمان و تاریخ در فرمت RFC822
    • s: ثانیه در محدوده 00 تا 59
    • S: پسوند های ترتیبی اعداد در فرمت دو کاراکتر .مانند: 1st یا 23th
    • t: تعداد روز های ماه را از 28 تا 31 مشخص می کند.
    • T: تنظیمات منطقه زمانی سرور در فرمت 3 کاراکتر مانند EST
    • U: تعداد کل ثانیه ها از اول ژانویه 1970 تاکنون را بیان می کند.
    • w: روز هفته در یک رقم. 0 برای یکشنبه و 6 برای شنبه
    • W: شماره هفته از اول سال. مانند 21 برای نشان دادن هفته 21ام سال
    • y: سال در فرمت دورقمی، 05 برای 2005
    • Y: سال در فرمت چهار رقمی، مانند 2006
    • z: روز را مشخص می کند. محدوده آن 0 تا 365 است.
    • Z: افست منطقه زمانی را بر حسب ثانیه بیان می کند. محدوده آن بین 43200- و 43200 است.

    نکته: کاراکتر هایی که در لیست بالا نباشند، مستقیماً چاپ می شوند. مانند: / و , و … .

     مثال:

    <?php
    echo date("Y/m/d") . "<br />";
    echo date("Y.m.d") . "<br />";
    echo date("Y-m-d");
    ?>

    خروجی کد بالا:

    2009/05/11
    2009.05.11
    2009-05-11


    پارامتر timestamp در تابع date

    Wiki

    تابع ()mktime یک برچسب زمان یونیکسی برمی گرداند که می توان از آن، به عنوان پارامتر اختیاری تابع ()date استفاده کرد.

    برچسب زمان یونیکسی: منظور تعداد ثانیه هایی است که از زمان (January 1 1970 00:00:00 GMT) تا زمانی که در تابع mktime مشخص شده است.

    نحوه استفاده:

    mktime(hour,minute,second,month,day,year,is_dst)

    مثال: در مثال زیر با استفاده از تابع mktime و date تاریخ فردا را چاپ می کنیم:

    <?php
    $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
    echo "Tomorrow is ".date("Y/m/d", $tomorrow);
    ?>

    خروجی کد بالا: (البته هنگام اجرای مثال)

    Tomorrow is 2013/05/12

    READ MORE
  • در PHPدو روش اصلی برای چاپ وجود دارد: echo و print

    تقریباً در هر مثالی از این بیاموز از echo (و print) استفاده شده است. بنابراین در این مطلب سعی شده است تا در این باره مقداری بیشتر توضیح داده شود.


    دستور echo و print در PHP

    Wiki

    تفاوت های echo و print:

    • echo: یک یا بیشتر از یک آرگومان را می گیرد و مقداری را برنمی گرداند. برای اتصال دو رشته هم می توان از "." و هم از "," استفاده کرد.
    • print: تنها یک آرگومان را می گیرد و همیشه مقدار 1 را برمی گرداند. برای اتصال دو رشته فقط می توان از "." استفاده کرد.

    شباهت های echo و print:

    • هر دو تابع نیستند.
    • جزئی از ساختار زبانی هستند و می توان از آنها با یا بدون پرانتز استفاده نمود.

    نکته: echo سرعت بیشتری نسبت به print دارد.


    دستور echo در PHP

    Wiki

    نمایش رشته ها

    در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور echo نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)

    مثال (تفاوت دستور echo و print)

    <?php
    echo "<h2>PHP is fun!</h2>";
    echo "Hello world!<br>";
    echo "I'm about to learn PHP!<br>";
    echo "This", " string", " was", " made", " with multiple parameters.";
    ?>

    خروجی کد بالا:

    PHP is fun! Hello world!
    I'm about to learn PHP!
    This string was made with multiple parameters.

    نمایش متغیرها

    در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور echo نشان داده شده است:

    مثال (تفاوت دستور echo و print)

    <?php
    $txt1="Learn PHP";
    $txt2="Beyamooz.com";
    $cars=array("Volvo","BMW","Toyota");

    echo $txt1;
    echo "<br>";
    echo "Study PHP at $txt2";
    echo "My car is a {$cars[0]}";
    ?>

    خروجی کد بالا:

    Learn PHP
    Study PHP at Beyamooz.com
    My car is a Volvo

    توجه: اگر متغییری درون علامت " قرار بگیرد مقدار متغییر به جای آن قرار می گیرد. اما اگر درون علامت ' قرار بگیرد مقدار متغییر جایگزین نمی شود.


    دستور print در PHP

    Wiki

    نمایش رشته ها

    در مثال زیر، نحوه نمایش رشته های مختلف با استفاده از دستور print نشان داده شده است: (همچنین توجه داشته باشید که رشته چاپ شده می تواند شامل تگ های HTML باشد)

    مثال (تفاوت دستور echo و print)

    <?php
    print "<h2>PHP is fun!</h2>";
    print "Hello world!<br>";
    print "I'm about to learn PHP!";
    ?>

    خروجی کد بالا:

    PHP is fun! Hello world!
    I'm about to learn PHP!

    نمایش متغیرها

    در مثال زیر، نحوه ی چاپ رشته ها و متغیر ها با دستور print نشان داده شده است:

    مثال (تفاوت دستور echo و print)

    <?php
    $txt1="Learn PHP";
    $txt2="Beyamooz.com";
    $cars=array("Volvo","BMW","Toyota");

    print $txt1;
    print "<br>";
    print "Study PHP at $txt2";
    print "My car is a {$cars[0]}";
    ?>

    خروجی کد بالا:

    Learn PHP
    Study PHP at Beyamooz.com
    My car is a Volvo
    READ MORE
  • حذف اطلاعات یک جدول با استفاده از MySQLi و PDO

    Wiki

    دستور DELETE FROM برای حذف رکورد از یک جدول استفاده می شود.

    نحوه استفاده:

    DELETE FROM table_name
    WHERE some_column = some_value

    نکته: قسمت WHERE مشخص می کند که چه رکورد یا رکوردهایی باید حذف بشوند، توجه داشته باشید که اگر این قسمت را در نظر نگیرید کلیه رکوردهای جدول حذف می شوند.

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

    به جدول "MyGuests" که در فصل های قبلی همین آموزش ایجاد شده است توجه کنید:

    id firstname lastname email reg_date
    1 John Doe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-22 14:26:15
    2 Mary Moe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-23 10:22:30
    3 Julie Dooley این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-26 10:48:23

    در مثال زیر، رکوردی که id آن برابر با 3 است در جدول "MyGuests" حذف خواهد شد:

    مثال(MySQLi Object-oriented)

    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // ایجاد ارتباط
    $conn = new mysqli($servername, $username, $password, $dbname);
    // اطمینان از صحت ارتباط
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // تنظیم کوئری حذف
    $sql = "DELETE FROM MyGuests WHERE id=3";

    if ($conn->query($sql) === TRUE) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . $conn->error;
    }

    $conn->close();
    ?>

    مثال(MySQLi Procedural)

    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // ایجاد ارتباط
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // اطمینان از صحت ارتباط
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }

    // تنظیم کوئری حذف
    $sql = "DELETE FROM MyGuests WHERE id=3";

    if (mysqli_query($conn, $sql)) {
        echo "Record deleted successfully";
    } else {
        echo "Error deleting record: " . mysqli_error($conn);
    }

    mysqli_close($conn);
    ?>

    مثال(PDO)

    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDBPDO";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // تنظیم حالت برخورد با خطاها
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        // تنظیم کوئری حذف
        $sql = "DELETE FROM MyGuests WHERE id=3";

        // بدلیل اینکه کوئری نتیجه ای را برنمی گرداند از تابع زیر استفاده می کنیم
        $conn->exec($sql);
        echo "Record deleted successfully";
        }
    catch(PDOException $e)
        {
        echo $sql . "<br>" . $e->getMessage();
        }

    $conn = null;
    ?>

    نتیجه کار بعد از حذف رکورد:

    id firstname lastname email reg_date
    1 John Doe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-22 14:26:15
    2 Mary Moe این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید 2014-10-23 10:22:30
    READ MORE
  • جلسه ی هشتم طراحی یک فروشگاه اینترنتی-حذف محصول از سبد خرید

    در قسمت اول از این جلسه، به آموزش 'حذف محصول از سبد خرید' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1. ایجاد قسمت های قیمت کل و ورود به درگاه پرداخت در سبد خرید

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'حذف محصول از سبد خرید' خواهید آموخت

    در قسمت 'حذف محصول از سبد خرید' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    1. نحوه ی حذف محصول از سبد خرید با استفاده از جی کوئری

    توضیح تفصیلی:

    1.  انجام کدنویسی جی کوئری برای دکمه ی حذف محصول از سبد خرید.
    2. استفاده از ajax برای حذف محصول.
    3. حذف li مورد نظر از سبد خرید به صورت آنی
    4. تعریف id یا کلاس برای دکمه های ضربدری شکل.

    حذف محصول از سبد خرید

     چون که قرار است ما، دستورات جی کوئری و ajax را زمانی اجرا کنیم که کاربر روی این ضربدر های قرمز کلیک می کند، پس بهتر است که به این ضربدرها، یک آی دی و یا کلاس خاص بدهیم، تا بتوانیم در دستورات جی کوئری به سادگی به این علامت های ضربدر دسترسی داشته باشیم:

     یعنی در جایی که در فایل top.php آمدیم و محصولاتمان را از tblsabad دریافت کردیم، و سپس یک li را echo کردیم که در داخل این li علامت ضربدر هم وجود داشت، یک آی دی را تحت عنوان delete مشخص کنیم:

     پس id این ضربدر های قرمز برابر با delete شد. حالا اگر که صفحه را رفرش کنیم، و کلید f12 را فشار دهیم، می بینیم که id این ضربدر ها، delete می باشد. این آی دی باعث می شود که ما کدهای جی کوئری مان را بتوانیم راحت تر بنویسیم.

    حالا به سراغ صفحه ی left.php می رویم. درون این قسمت که ما تگ اسکریپت را باز کردیم و دستورات قبلی را نوشتیم، حال می آییم و یک دستور جدید را هم اجرا می کنیم. حال می خواهیم ببینیم که سلکتور ما در اینجا، چه چیزی است. یعنی در چه زمانی می خواهیم عملیات delete برای محصول را انجام بدهیم؟ مشخص است که زمانی می خواهیم این کار را انجام دهیم که کاربر روی دکمه ی delete کلیک می کند. پس در اینجا ما سلکتور خودمان را مشخص می کنیم:

    کد

    $("#sabad1 li #delete").click

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


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 8
    • نام فایل ویدئو: 31
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (حذف محصول از سبد خرید) در ویدئو: 03:08

    READ MORE
  • حلقه for در PHP

    Wiki

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

    نحوه استفاده:

    for (init; condition; increment)
      {
      code to be executed;
      }

    پارامترها:

    • init: تنها یکبار در ابتدای حلقه اجرا می شود، و اغلب برای تعریف یک شمارنده استفاده می شود.
    • condition: ارزیابی تکرار حلقه، اگر شرط برقرار باشد دستورات اجرا می شوند، در غیر اینصورت دستورات ادامه نمی یابند.
    •  incrementبعد از هربار اجرای دستورات حلقه، این دستور اجرا می شود و اغلب برای افزایش شمارنده استفاده می شود.

    نکته:

    1. در for می توان هرکدام از پارامترهای بالا را خالی گذاشت، به این صورت که اگر شرط خالی باشد، مقدار آن برابر با true در نظر گرفته می شود و حلقه بینهایت بار اجرا میشود! (البته با استفاده از دستور break که بعداً به آن اشاره می شود، می توان آن را قطع نمود)
    2. در for همچنین می توان برای پارامترهای بالا چند دستور مختلف را اجرا نمود به اینصورت که با علامت "," آنها را باید از یکدیگر جدا نمود.

    مثال:

    در مثال زیر یک حلقه تعریف شده که با i=1 شروع می شود، و تا زمانی که i<=5 باشد ادامه خواهد یافت و به مقدار i در هر بار اجرای حلقه یک واحد اضافه می شود.

    <html>
    <body>

    <?php
    for ($i=1; $i<=5; $i++)
      {
      echo "The number is " . $i . "<br />";
      }
    ?>

    </body>
    </html>

    خروجی کد بالا:

    The number is 1
    The number is 2
    The number is 3
    The number is 4
    The number is 5


    حلقه foreach درPHP

    Wiki

    مخصوص کار با آرایه ها می باشد.

    نحوه استفاده:

    foreach ($arrayas $value)
      {
      code to be executed;
      }

    این دستور تمام مقادیر آرایه را یکی یکی از ابتدایی تا انتهایی به درون value می ریزد و دستورات را اجرا می نماید.

    نکته:مقدار value کپی داده می باشد و با تغییر آن داده اصلی در آرایه تغییری نمی کند، اما با قرار دادن علامت "&" در ابتدای value یک نشانگر از آن برگردانده می شود، بدین معنا که با تغییر آن داده اصلی درون آرایه نیز تغییر می کند.

    مثال1:مثال زیر یک حلقه را نشان می دهد که مقادیر گرفته شده از یک آرایه را چاپ می کند.

    <html>
    <body>

    <?php
    $x=array("one","two","three");
    foreach ($x as $value)
      {
      echo $value . "<br />";
      }
    ?>

    </body>
    </html>

    خروجی کد بالا:

    one
    two
    three

    مثال2: با قرار دادن علامت "&" در ابتدای value اگر در حلقه این مقدار تغییر کند، داده اصلی نیز تغییر می کند.

    <html>
    <body>

    <?php
    $arr=array(1,2,3,4);
    foreach($arr as &$value)
    {
      echo $value;
      echo " ";
      $value *= 2;
    }
    echo "<br />";
    foreach($arr as $value)
    {
      echo $value;
      echo " ";
    }
    ?>

    </body>
    </html>

    خروجی کد بالا:

    1 2 3 4
    2 4 6 6

    مثال3: چاپ کلید و مقدار آن (key and value)

    <html>
    <body>

    <?php
    $a = array(
        "one" => 1,
        "two" => 2,
        "three" => 3,
        "seventeen" => 17
    );

    foreach ($a as $k => $v) {
        echo "a[$k] => $v"."<br />";
    }
     
    ?>

    </body>
    </html>

    خروجی کد بالا:

    a[one] => 1
    a[two] => 2
    a[three] => 3
    a[seventeen] => 17

    مثال4: چاپ کلید و مقدار آن (key and value) در یک آرایه دو بعدی

    <html>
    <body>

    $families = array("Ahmadi"=>array("a"=>"Ali","b"=>"Reza","c"=>"Sara"),
                      "Naderi"=>array("a"=>"Amir"),
                      "Mohamadi"=>array("a"=>"Poya","b"=>"Parniya")
                     );
    foreach ($families as $k => $v)
        foreach ($v as $b=>$v)
        echo "families[$k][$b] => $v "."<br />";

    </body>
    </html>

    خروجی کد بالا:

    families[Ahmadi][a] => Ali
    families[Ahmadi][b] => Reza
    families[Ahmadi][c] => Sara
    families[Naderi][a] => Amir
    families[Mohamadi][a] => Poya
    families[Mohamadi][b] => Parniya

    READ MORE
  • رسیدگی یا مدیریت خطاها در php

    Wiki

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

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

    در زیر بعضی روش های معمول بررسی خطا در php توضیح داده خواهد شد:

    • استفاده از دستور ساده ()die
    • خطاهای معمولی و راه اندازی رسیدگی کننده خطا
    • واقعه نگاری خطاها

    استفاده از تابع ()die

    Wiki

    این تابع متنی را که به عنوان پارامتر برای آن مشخص کرده ایم، چاپ می کند و از کد جاری خارج می شود.

    مثال:در این مثال با استفاده از تابع ()fopen یک فایل متنی را به صورت فقط خواندنی باز می کنیم:

    <?php
    $file=fopen("welcome.txt","r");
    ?>

    اگر فایل وجود نداشته باشد، با خطای زیر مواجه می شویم:

    Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:
    No such file or directory in C:\webfolder\test.php on line 2

    برای اینکه کاربر با پیغام خطای بالا مواجه نشود، قبل از هر چیز، وجود فایل "welcome.txt" را بررسی می کنیم:

    <?php
    if(!file_exists("welcome.txt"))
    die("File not found");
    else
    $file=fopen("welcome.txt","r");
    ?>

    کد بالا کارامدتر از کد قبلی است، حالا اگر فایل وجود نداشته باشد بعد از اجرای اسکریپت، پیغام خطای زیر نمایش داده می شود:

    File not found

    توجه: در اسکریبت بالا، بعد از اجرای دستور ()die، ادامه اجرای اسکریبت متوقف می شود.

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


    ایجاد یک تابع رسیدگی کننده خطا (error handler)

    Wiki

    ایجاد این تابع کاملاً ساده است، و هرگاه که در کد PHP خطایی رخ داد این تابع فراخوانی می شود.

    این تابع باید بتواند حداقل با دو پارامتر کار کند(سطح خطا و پیغام خطا) اما تا پنج پارامتر را بپذیرد(اختیاری: فایل، شماره خط و متن پیغام):

    نحوه استفاده:

    error_function(error_level,error_message,error_file,error_line,error_context)

    پارامتر توضیحات
    error_level

    الزامی است، سطح گزارش خطا را مشخص می کند. جدول زیر را برای انواع سطوح گزارش خطا ببینید.

    error_message

    الزامی است، پیغام خطا را برای خطای تعریف شده توسط کاربر مشخص می کند.

    error_file

    اختیاری است. نام فایلی را که خطا در ان رخ داده است مشخص می کند.

    error_line

    اختیاری است. شماره خطی را که خطا در آن رخ داده است مشخص می کند.

    error_context

    اختیاری است. یک آرایه که شامل تمام متغییرهای در حال استفاده هنگام رخداد خطا با مقادیرشان است را مشخص می کند.

    سطوح گزارش خطا:

    مقدار نام ثابت توضیحات
    2 E_WARNING

    خطاهای زمان اجرا غیر جدی. اجرای script متوقف نمی شود

    8 E_NOTICE

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

    256 E_USER_ERROR

    خطای جدی کاربرساز. مانند یک E-ERROR که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

    512 E_USER_WARNING

    هشدار غیرجدی کاربرساز. مانند یک E_WARNING است که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

    1024 E_USER_NOTICE

    اخطار کاربرساز. مانند یک E_NOTICE است که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

    4096 E_RECOVERABLE_ERROR

    خطای جدی گرفتنی. مانند یک E_ERROR است اما بوسیله ی رفع خطای تعریف شده توسط کاربر می توان ان را گرفت(set_error_handler( ) را نیز ببینید)

    8191 E_ALL

    همه ی خطاها و هشدارها?به جز سطح E_STRICT) E_STRICT در php 6.0 جزئی از E_ALL خواهد شد.)

    حالا اجازه دهید تا یک تابع برای رسیدگی کردن به خطاها ایجاد کنیم، که شامل ورودی های زیر است:

    • errno$: سطح خطا
    • errstr$: متن خطا

    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Ending Script";
    die();
    }

    کد بالا موقعی که راه اندازی شد، "سطح خطا" و "متن خطا" را می گیرد و سپس با چاپ کردن دو مورد ذکر شده به اجرای اسکریبت پایان می دهد.

    در حال حاضر باید تصمیم بگیریم که چه موقع تابع بالا، راه اندازی شود.


    تنظیم رسیدگی کننده خطا

    Wiki

    ما قصد داریم تابع "customError" را به عنوان پیشفرض رسیدگی کننده خطا در PHP معرفی کنیم، این کار به سادگی با استفاده از تابع زیر در PHP امکان پذیر است:

    set_error_handler("customError");

    نکته: یک پارامتر دوم می تواند برای مشخص کردن سطح خطا به تابع ()set_error_handler اضافه شود، ولی چون می خواهیم که تابع معمولی مان همه ی خطاها را رفع کند، ()set_error_handler تنها با یک پارامتر فراخوانی می شود.

    مثال: در زیر سعی کرده ایم با چاپ متغییر "test$" که وجود ندارد تابع "رسیدگی کننده خطا" یا همان "customError" را تست کنیم:

    <?php
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr";
    }
    set_error_handler("customError");
    echo($test);
    ?>

    خروجی کد بالا:

    Error: [8] Undefined variable: test


    راه اندازی یک خطا

    Wiki

    در اسکریبتی که کاربران می توانند داده وارد کنند، می توان موقع رخداد یک ورودی غیرمجاز خطاها را راه اندازی کرد. در php، این کار با تابع ()trigger_error انجام می شود.

    مثال: در این مثال اگر متغییر "test" بزرگتر از "1" باشد، یک خطا رخ می دهد:

    <?php
    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below");
    }
    ?>

    خروجی کد بالا:

    Notice: Value must be 1 or below
    in C:\webfolder\test.php on line 5

    یک خطا می تواند هر جایی در اسکریبت که بخواهید راه اندازی شود و با افزودن پارامتر دوم شما می توانید مشخص کنید که چه سطح خطایی راه اندازی شود.

    مثال: در این مثال یک خطا با سطح E_USER_WARNING رخ می دهد، اگر متغییر "test" بزرگتر از "1" باشد، تابع رسیدگی کننده خطا، راه اندازی شده و اسکریبت را خاتمه می دهیم:

    <?php
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Ending Script";
    die();
    }

    set_error_handler("customError",E_USER_WARNING);

    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below",E_USER_WARNING);
    }
    ?>

    خروجی کد بالا:

    Error: [512] Value must be 1 or below
    Ending Script

    اکنون که طریقه ی رسیدگی به خطاها و چگونگی راه اندازی آن ها را یاد گرفتیم، اجاز دهید نگاهی به واقعه نگاری (Log) خطاها بیندازیم.


    واقعه نگاری خطاها (Log)

    Wiki

    به طور پیش فرض، php یک گزارش خطا به سیستم واقعه نگاری سرورها یا یک فایل، بسته به اینکه پیکر بندی گزارش خطا چگونه درفایل php.ini تنظیم شده است ارسال می کند. با استفاده از تابع ()error_log شما می توانید گزارش های خطا را به به یک فایل مشخص شده یا یک مقصد دور ارسال کنید.

    ارسال پیغام های خطاها به خودتان از طریق email می تواند روش خوبی برای آگاه شدن از خطاهای خاص باشد.

    مثال: در این مثال اگر یک خطای خاص رخ دهد ما یک e-mail را همراه با یک پیغام خطا به آدرس مشخص شده می فرستیم و اسکریبت خاتمه خواهد یافت:

    <?php
    function customError($errno, $errstr)
    {
    echo "<b>Error:</b> [$errno] $errstr<br />";
    echo "Webmaster has been notified";
    error_log("Error:[$errno]$errstr",1,"این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید","From:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید");
    }

    set_error_handler("customError",E_USER_WARNING);

    $test=2;
    if ($test>1)
    {
    trigger_error("Value must be 1 or below",E_USER_WARNING);
    }
    ?>

    خروجی کد بالا:

    Error: [512] Value must be 1 or below
    Webmaster has been notified

    و در ادامه ایمیل دریافت شده چیزی شبیه زیر خواهد بود:

    Error: [512] Value must be 1 or below

    توجه:این نباید برای همه ی خطاها استفاده شود، خطاهای معین باید با سیستم واقعه نگاری پیش فرض php در سرور ثبت شوند.

    READ MORE
  • جلسه ی ششم طراحی یک فروشگاه اینترنتی-طراحی اسلایدر به صورت داینامیک

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


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  تبدیل منوی بالای سایت و زیرمنوها از حالت استاتیک به حالت داینامیک.

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'طراحی اسلایدر  به صورت داینامیک' خواهید آموخت

    در قسمت 'طراحی اسلایدر به صورت داینامیک' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

     در این قسمت به داینامیک نمودن اسلایدر سایت می پردازیم .به عبارت دیگر قصد داریم که اسلایدری که قبلا طراحی کرده بودیم را از حالت استاتیک به حالت داینامیک تبدیل کنیم.

    توضیح تفصیلی:

    1. ایجاد table جدیدی با نام tblmahsool در دیتابیس جهت ذخیره سازی محصولات
    2. ایجاد سه فیلد id,title,img,slideاز نوع int,varchar,varchar,int در جدول فوق
    3. insert نمودن برخی ازمحصولات فروشگاه در این table
    4. چگونگی مشخص نمودن تصاویری که باید در این اسلایدر نمایش داده شوند.(با استفاده از field مربوط به slide)
    5. مثالی دیگر از کوئری های شرطی با استفاده از where و اتخاب برخی از سطرهای دیتابیس
    6. نحوه نوشتن مقدار متغیرهای غیرعددی در یک کوئری با استفاده از سینگل کوتیشن یا دابل کوتیشن ها
    7. توضیحاتی در مورد ترکیب متغیرها و دستورات مربوط به php و رفع ایرادات احتمالی یا باگ ها
    8. prepare نمودن و سپس execute کردن و هم چنین fetch کردن اطلاعات با استفاده از PDO در php

     طراحی اسلایدر به صورت داینامیک

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

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

     

    و آن صفحه ای که مربوط به اسلایدر بود یعنی صفحه ی slide.php را باز می کنیم. در درون این صفحه باید کدهای خود را وارد کنیم:

     

     قبل از اینکه شروع به کدنویسی php کنیم، می خواهیم به دیتابیس برویم و اگر که یک table نیاز است، آن را ایجاد کنیم. قبول دارید که هرکدام از محصولاتی که درون این صفحه می بینید، درواقع باید درون یک table ذخیره شده باشند. بنابراین ما یم table را لازم داریم که محصولات خودمان را در داخل آن ثبت کنیم . پس یک table ایجاد می کنیم و نام آن را tblmahsool قرار می دهیم:

     

     هر محصول، اولا یک id دارد، دوماً یک تصویر(img) دارد، سوماً یک title دارد. بنابراین در اینجا فعلا سه فیلد برای این جدول در نظر می گیریم. اولین فیلد را برابر با id قرار می دهیم. درواقع id شماره ی هر محصول است. نوع آن را برابر با INT قرار می دهیم و طول آن را هم برابر با 255 قرار می دهیم. 255، ماکزیمم طولی است که ما می توانیم برای فیلدی از نوع integer تعریف کنیم...


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 6
    • نام فایل ویدئو: 20
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (طراحی اسلایدر به صورت داینامیک) در ویدئو: 01:36

    READ MORE
  • جلسه ی سوم بسته ی آموزشی طراحی یک فروشگاه اینترنتی-طراحی اسلایدشو فروشگاه

    در قسمت دوم از این جلسه، به آموزش 'طراحی اسلایدشو فروشگاه' می پردازیم.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد زیر آموزش داده شدند:

    1. ایجاد پس زمینه ی آبی رنگ فروشگاه.
    2. ایجاد بدنه ی اسلایدشو فروشگاه.

     


    آنچه که در قسمت 'طراحی اسلایدشو فروشگاه' خواهید آموخت 

    در قسمت'طراحی اسلایدشو فروشگاه' موارد زیر آموزش داده خواهند شد:

    1.  آموزش استفاده از پلاگین cycle برای نمایش دادن عکس ها.
    2. آموزش ایجاد دکمه ی عکس قبلی و بعدی برای اسلایدشو.
    3. آموزش استفاده از فتوشاپ برای ایجاد دکمه ی next.
    4. آموزش استفاده از پوزیشن ها(position) برای موقعیت دهی عناصر.

     4.آموزش استفاده از پوزیشن ها(position) برای موقعیت دهی عناصر

    همان طور که مشاهده می نمایید، وقتی که دو عنصر img را به صفحه اضافه می کنیم، div اسلایدشو به سمت پایین منتقل می شود: 

     

     این به این بدین معنی است که این دو عنصر img بر روی محل و موقعیت div اسلایدشو تاثیر می گذارند. نکته ای که در اینجا لازم است بدانیم عبارت است از بحث position ها در css. اگر که شما می خواهید دو المان را مثل دو عنصر img ذکر شده، به صفحه ی مورد نظرتان اضافه کنید، به طوری که اضافه شدن این المان ها، تاثیری بر روی سایر المان ها و اجزای صفحه نداشته باشد، باید از position: absolute استفاده کنید. 

    بنابر آنچه گفته شد، برای دو عنصر img مورد نظر، استایل هایی را تعریف می کنیم  و مقدار position آنها را برابر با absolute قرار می دهیم، تا موقعیت آنها به صورت مستقل از دیگر اجزا، تعیین گردد:

     

    با رفرش(refresh) کردن صفحه، مشاهده می کنیم که اسلایدشو از مکان اصلی خود منحرف نشده است. چون که مقدار position این دو فلش یا به عبارت دیگر همان تگ های img را به صورت absolute قرار دادیم، این عناصر، به صورت مستقل از سایر المان های همجوار خودشان موقعیت دهی می شوند:

     

     حالا این سوال پیش می آید که اگر بخواهیم فلش ها را از سمت بالا به اندازه ی فرضی 105px فاصله بدهیم، باید چه کار کنیم؟ 

    اگر مقدار top را برابر با 155px قرار دهیم، این اتفاق رخ می دهد اما...


    دسترسی به موارد آموزشی بالا در بسته خریداری شده

    • شماره جلسه: 3
    • نام فایل ویدئو: 10
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (طراحی اسلایدشو فروشگاه) در ویدئو: 13:08 

    READ MORE
  • جلسه ی ششم طراحی یک فروشگاه اینترنتی-طراحی جدید ترین کالاها به صورت داینامیک

    در قسمت چهارم از این جلسه، به آموزش 'طراحی جدید ترین کالاها به صورت داینامیک' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  طراحی اسلایدر سایت به صورت داینامیک.

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'طراحی جدیدترین کالاها به صورت داینامیک' خواهید آموخت

    در قسمت 'طراحی جدیدترین کالاها به صورت داینامیک' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

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

    توضیح تفصیلی:

    1. مفهوم و کاربرد order by fieldname desc/asc و بحث انتخاب براساس نزولی یا صعودی بودن فیلد
    2. انتخاب چهار محصول جدید که به فروشگاه اضافه شده و سپس نمایش آنها در وب سایت به صورت اتوماتیک
    3. کاربرد عملی و بررسی مفهوم limit در کوئری های sql
    4. echo کردن li های مربوط به بخش جدیدترین محصولات با استفاده از حلقه while
    5. ایجاد field جدیدی در جدول محصولات که تعداد فروش هر محصول را ذخیره می کند.
    6. انتخاب پرفروش ترین محصولات براساس فیلد foroosh در جدول محصولات با استفاده از دستور order به صورت کاملا خودکار
    7. ایجاد field جدیدی برای مشخص نمودن تعداد موجود از هر محصول، در فروشگاه
    8. چگونگی تشخیص موجود بودن یا نبودن محصول در فروشگاه و سپس نمایش پیغام مناسب با توجه به موجود بودن یا نبودن محصول، به کاربران سایت
    9. ایجاد فیلدی دیگر جهت ثبت قیمت های مربوط به محصولات (از نوع int )
    10. اصلاحات جزیی در مورد کدهای css مربوط به بخش های موجود در سایت از جمله بخش نمایش موجود بودن یا نبودن محصول( با کمک فایرباگ)

     طراحی  جدیدترین کالاها به صورت داینامیک

     حالا اجازه بدهید که وارد phpmyadmin بشویم و به جدولی که محصولاتمان را در داخل آن ذخیره کرده بودیم، نگاهی بیاندازیم. پس به داخل دیتابیس eshop می رویم و جدول tblmahsool را باز می کنیم:

     ما قبلا در درون این جدول، 4تا محصول را تعریف کرده بودیم. حالا می خواهیم در قسمت جدیدترین کالاها، این محصولات را دریافت کنیم و نمایش دهیم.  مشابه با همان کاری که قبلا انجام داده بودیم، اینجا هم می آییم و همان کار را تکرار می کنیم. 

    حال کدهایی که قبلا نوشته بودیم را کپی می کنیم:

     بعد از کپی کردن، این کدها را در درون فایل jadidtarinha.php در درون عنصر ul که جدید ترین کالاها را در درون آن ایجاد کرده بودیم، قرار می دهیم: 

     حالا این محصولاتی را که به صورت استاتیک تعریف کرده بودیم را حذف می کنیم. نکته ای که وجود دارد این است که تفاوت این بخش با بخش قبل که آمدیم و اسلایدشو را به صورت داینامیک در صفحه مان نمایش دادیم، این است که در قسمت جدیدترین کالاها، همان طوری که از اسمش مشخص است، باید به صورت اتوماتیک، 4 تا از کالاهایی که جدیدا به فروشگاه اضافه شده اند را از دیتابیس بخوانیم و در این قسمت نمایش دهیم:

    بنابراین ما در اینجا به صورت کاملا اتوماتیک و خودکار، می خواهیم این کار را انجام دهیم. اما در قسمت اسلایدشو ما آمدیم یک فیلد را تحت عنوان slide اضافه کردیم که این فیلد مشخص می کرد که کدام یک از این کالاها، قرار است درون این اسلایدشو نمایش داده شوند:


     

    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 6
    • نام فایل ویدئو: 21
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (طراحی جدیدترین کالاها به صورت داینامیک) در ویدئو: 01:50

    READ MORE
  • جلسه ی هفتم طراحی یک فروشگاه اینترنتی-طراحی سبد خرید فروشگاه

    در قسمت اول از این جلسه، به آموزش 'طراحی سبد خرید فروشگاه' خواهیم پرداخت.


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  تبدیل بخش کالاهای پیشنهادی به صورت داینامیک

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'طراحی سبد خرید فروشگاه' خواهید آموخت

    در قسمت 'طراحی سبد خرید فروشگاه' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

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

    توضیح تفصیلی:

    1. ایجاد تگ جدید تحت عنوان sabad که کل سبد خرید را در بر می گیرد.
    2. ایجاد بخشی دیگر جهت نمایش علامت مثلثی شکل ( فلش) هنگام باز شدن بخش سبد خرید
    3. ایجاد بخش دیگری با id برابر با sabad1 و استایل دهی موارد فوق در css
    4. کاربردی دیگر از دستور z-index و مفهوم آن در css
    5. مثال هایی دیگر از دستورات border-radius و position ها و...
    6. مثالی عملی از کاربرد position از نوع releative و absolute در css
    7. ایجاد تگ ul جدید و سپس قرار دادن li هایی درون آن، جهت نمایش هر محصول در سبد خرید و نمایش تصویر،نام،تعداد محصول و...
    8. نوشتن کدهای مربوط به جی کوئری و کار با selector ها و event ها
    9. کاربرد دستور show در جی کوئری جهت نمایش سبد خرید
    10. کاربرد دستور hide جهت محو نمودن بخش سبد خرید
    11. ایجاد بخشی جدید با id برابر با tarik جهت محو نمودن صفحه و تاریک کردن کل صفحه هنگام نمایش سبد خرید کالا
    12. کاربردی از position از نوع fixed جهت نمایش بخشی در محل کاملا ثابت و بدون تغییر و بررسی دقیق مفهوم این نوع position
    13. نوشتن کدهای jquery جهت محو نمودن صفحه هنگام کلیک کردن روی سبد خرید جهت ایجاد جلوه بسیار زیبا در سایت

     طراحی  سبد خرید فروشگاه

     کاری که اکنون می خواهیم انجام دهیم، این است که اگر کاربر روی سبد خرید کلیک کند، یک باکس به این صورت برای او باز شود:

     

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

     

     فایلی که ما قسمت سبد خرید را در داخل آن کدنویسی کردیم، فایلی بود به نام top.php . خب حالا همین فایل را دوباره باز می کنیم و قسمت سبد خرید شما، که در تصویر زیر مشخص شده است را می آوریم:

     

     در این قسمت ما آمدیم و با استفاده از تگ <a> و تگ <img> که در واقع شکل سبد مورد نظر بود، بخشی تحت عنوان 'سبد خرید شما' اضافه کردیم. حالا می خواهیم بعد از این بخش، بخش دیگری را ایجاد کنیم تخت عنوان sabad. در واقع این بخش sabad قرار است کالاهایی که کاربر به سبد خرید خودش اضافه کرده را به او نشان بدهد:

     حالا می خواهیم یک بار دیگر برویم و به نحوه ی طراحی این box دقت کنیم. نکته ای که اولا وجود دارد این است که، این قسمتی که دارد کالاهای موجود در سبد را به کاربر نمایش می دهد، هم دارای height ثابت است و هم width آن ثابت است. یعنی طول و عرض این باکس مستطیلی ثابت است. همان طور که در تصویر زیر می بینید، اگر که محصولات بیشتر از یک حد معینی بشوند، می توانیم یک اسکرول را برای آنها در نظر بگیریم. و در داخل این اسکرول، محصولاتمان را به کاربر نمایش بدهیم:

     

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


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 7
    • نام فایل ویدئو: 23
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (طراحی سبد خرید فروشگاه) در ویدئو: 01:39

    READ MORE
  • جلسه ی ششم طراحی یک فروشگاه اینترنتی-طراحی منو به صورت داینامیک

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


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1. استفاده از transition در css برای ایجاد افکت های انیمیشنی هنگام رفتن موس بر روی محصولات.

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'طراحی منو به صورت داینامیک' خواهید آموخت

    در قسمت 'طراحی منو به صورت داینامیک' موارد زیر آموزش داده خواهند شد:

    توضیح اجمالی:

    از این بخش به بعد، کدنویسی php را به صورت حرفه ای آغاز خواهیم کرد. به این ترتیب که تک تک قسمت های سایت را از حالت استاتیک، به حالت داینامیک تبدیل می کنیم. 

    توضیح تفصیلی:

    1. نحوه ی ایجاد یک دیتابیس جدید و تنظیم collation آن برای سازگاری با زبان فارسی
    2. ایجاد جدولی به نام tblmenu برای ذخیره سازی منوها در آن.
    3. ایجاد سه فیلد جدید با نام های img , title ,id از نوع varchar و int و مشخص نمودن طول آنها.
    4. insert کردن منوهای مورد نظر و همچنین وارد نمودن آدرس عکس ها یا آیکن های هر منو.
    5. ایجاد فایل جدیدی با نام connect.php جهت اتصال به دیتابیس مورد نظر.
    6. استفاده از دستور PDO و نحوه ی اتصال به دیتابیس با استفاده از این دستور.

     طراحی منو به صورت داینامیک

     از این قسمت به بعد قصد داریم به سراغ کدنویسی php برویم. یعنی همان کدهایی که آنهارا به وسیله ی HTML و CSS به صورت استاتیک طراحی کرده بودیم، حالا می خواهیم آنها را به حالت داینامیک تبدیل کنیم. به عبارت دیگر می خواهیم به بانک اطلاعاتی وصل شویم و اطلاعات خود را از بانک اطلاعاتی دریافت کنیم و در صفحه ی خود نمایش دهیم. پس شروع می کنیم و بخش های مختلف را به ترتیب به حالت داینامیک تبدیل می کنیم. 

    اولین بخشی که قصد داریم آن را از حالت استاتیک خارج کنیم، همان منوی بالای صفحه مان است:

     

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

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

     

     ابتدا باید برای فروشگاهی که داریم آن را طراحی می کنیم، یک دیتابیس ایجاد کنیم. نام دیتابیس را به طور فرضی db_eshop قرار می دهیم و مقدار collation را برابر با utf8 انتخاب می کنیم. همان طور که مشاهده می کنید، مقدار پیش فرض collation برابر با utf8_general_ci است که ما آن را از نوع utf8_persian_ci انتخاب می کنیم.

    همان طور که مشخص است، persian به معنای فارسی است و ci هم به معنای عدم حساسیت به حروف بزرگ و کوچک است.

    اکنون این دیتابیس را ایجاد می کنیم و شروع به ساختن table های خودمان می کنیم. 

    اولین table ی که ما نیاز داریم، table ی است که این منوها را در داخل آن ذخیره کنیم، یعنی یک table لازم داریم که اولا منوهای اصلی را در داخل آن ذخیره کنیم و یک table دیگر هم لازم داریم، برای اینکه زیرمنوها را در داخل آن ذخیره کنیم:

     بنابراین ما در اینجا دو عدد table نیاز داریم. نام اولین table را tblmenu قرار می دهیم :


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 6
    • نام فایل ویدئو: 18
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (طراحی منو به صورت داینامیک) در ویدئو: 00:07

    READ MORE
  • عملگرها در PHP

    Wiki

    عملگرها برای انجام عملیات و محاسبات روی مقادیر استفاده می شوند، در زیر لیستی از عملگرهای مختلف که در PHP استفاده می شود، آورده شده است:

    عملگرهای ریاضی

     این عملگرها عملی را روی دو متغییر یا دو عدد انجام می دهند.

    عملگر توضیحات مثال نتیجه
    + جمع x=2
    x+2
    4
    - تفریق x=2
    5-x
    3
    * ضرب x=4
    x*5
    20
    / تقسیم 15/5
    5/2
    3
    2.5
    % باقیمانده تقسیم 5%2
    10%8
    10%2
    1
    2
    0
    ++ افزایش به میزان یک واحد x=5
    x++
    x=6
    -- کاهش به میزان یک واحد x=5
    x--
    x=4

     عملگرهای انتسابی

    Wiki

    عملگر مثال هم ارز با
    = x=y x=y
    += x+=y x=x+y
    -= x-=y x=x-y
    *= x*=y x=x*y
    /= x/=y x=x/y
    .= x.=y x=x.y
    %= x%=y x=x%y

    عملگرهای مقایسه ای

    Wiki

     این عملگرها مقایسه ای بین دو متغییر انجام می دهند و نتیجه را به صورت true یا false برمی گردانند.

    عملگر توضیحات مثال
    == برابری 5==8 returns false
    != نابرابری 5!=8 returns true
    > بزرگتر از 5>8 returns false
    < کوچکتر از 5<8 returns true
    >= بزرگتر یا مساوی با 5>=8 returns false
    <= کوچکتر یا مساوی با 5<=8 returns true

    عملگرهای منطقی

    Wiki

     این عملگرها با مقدارهای true و false کار می کنند و آنها را با هم ادغام می کنند.

    عملگر توضیحات مثال
    && and x=6
    y=3

    (x < 10 && y > 1) returns true

    || or x=6
    y=3

    (x==5 || y==5) returns false

    ! not x=6
    y=3

    !(x==y) returns true

    عملگرهای رشته ای

    Wiki

     در رشته ها تنها عملگری که استفاده می شود نقطه "." می باشد که دو رشته را به همدیگه متصل می کند.

    عملگر توضیحات مثال
    . برای الحاق دو رشته استفاده می شود

    'hello'.'world'
    return 'hello world'

    عملگرهای بیتی

    Wiki

    این عملگرها بر روی بیت های یک متغییر عملی را انجام میدهند و بیتها را به نسبت عملگر برمیگردانند. اگر متغییرها رشته هستند بر روی کدهای ASCII آنها عمل می کند.

    عملگر توضیحات مثال نتیجه
    ~  not ~$a; بیت هایی را برمی گرداند که در a$ نیستند.
    &  and a$ & $b; بیت هایی را برمی گرداند که هم در a$ و هم در b$ هستند.
    |  or $a | $b; بیت هایی را که در a$ یا در b$ هستند برمی گرداند.
    ^  xor $a ^$b; بیت هایی را برمی گرداند که در a$ یا در b$ هستند اما در هر دو نیستند.
    >>  شیفت به چپ $a << $b; بیت های a$ را به اندازه b$ تا به سمت چپ انتقال می دهد.
    <<  شیفت به راست $a >> $b; بیت های a$ را به اندازه b$ تا به سمت راست انتقال می دهد.
    READ MORE
  • متغیر ها و توابع Static

    Wiki

    به متغیر ها و توابع static برخلاف متغیر ها و توابع معمولی می توانند بدون ایجاد شئ از کلاس، دسترسی داشت.

    نحوه دسترسی:

     نام متغیر یا تابعی که static تعریف شده   ::   نام کلاس

    چهار محدوده نمایش وجود دارد:

    1. public : منبع مورد نظر در هر قسمتی قابل استفاده می باشد.
    2. protected : فقط در کلاسی که تعریف شده و کلاس هایی که آن را توسعه می دهند قابل استفاده می باشد.
    3. private : فقط در کلاسی که تعریف شده قابل استفاده می باشد.
    4. final : در هر جایی قابل استفاده می باشد، اما در کلاس های توسعه دهنده نمی تواند دوباره تعریف شود.(final به کلاس ها نیز میتواند تخصیص یابد، کلاس هایی که به صورت final تعریف شده اند، نمی توانند توسعه یابند.)

    مثال: در مثال زیر متغیر name و تابع ()action به صورت static تعریف شده است:

    <?php
    class My_Class{
        static $name="Beyamooz.com is for tutorial\n";
        static function action()
        {
            echo "PHP is easy!!\n";
        }
    }
    My_Class::action();
    echo My_Class::$name;
    $obj=new My_Class();
    $obj->action();
    //echo $obj->name;  Undefined "Property" name
    echo $obj::$name;
    ?>

    خروجی کد بالا:

    PHP is easy!!
    Beyamooz.com is for tutorial
    PHP is easy!!
    Beyamooz.com is for tutorial

    توجه: به متغیرهای Static یک کلاس، نمی توان از طریق شیء و عملگر فلش (<-) دسترسی داشت (با خطای Undefined "Property" name مواجه خواهید شد.)


    ثوابت (const)

    Wiki

    ثابت ها یا همان const ها در کلاس ها همانند متغیر ها هستند با این تفاوت که مقدار آنها قابل تغییر نمی باشد و با این مزیت که در هرجایی میتوانند مورد استفاده قرار گیرند!

    مثال:

    <?php
    class My_Class{
        const name="www.beyamooz.com<br />";
        function test()
        {
            echo self::name;
        }
    }
    echo My_Class::name;
    $obj=new My_Class;
    $obj->test();
    ؟>

     خروجی کد بالا:

    www.beyamooz.com
    www.beyamooz.com

    READ MORE
  • آموزش PHP (پی اچ پی) - مقدمه

    Wiki

    PHP (پی اچ پی) یک زبان اسکریپت نویسی سمت سرور است و می تواند، ابزاری قدرتمند برای ساخت صفحات پویا و داینامیک بحساب آید.

    • گستردگی استفاده
    • رایگان بودن (بدون اهمیت در ایران)
    • جایگزینی مناسب برای ASP ماکروسافت

    آموزش آسان PHP (پی اچ پی) با مثال های فراوان

    Wiki

    مثال های فراوان در آموزش PHP، باعث می شود که PHP را به آسانی فرابگیرید، در این مثال ها، هم کدهای PHP و هم خروجی آن همزمان نمایش داده می شود:

    مثال - آموزش PHP

    <!DOCTYPE html>
    <html>
    <body>

    <?php
    echo "My first PHP script!";
    ?>

    </body>
    </html>

    خروجی کد بالا:

    My first PHP script!

    پیش نیازهای آموزش PHP (پی اچ پی)

    Wiki

    پیشنهاد می شود اگر با آموزش های زیر آشنا نیستید، قبل از ادامه آموزش PHP، آنها را مطالعه فرمایید:


    آموزش PHP (پی اچ پی): PHP چیست؟

    Wiki

    • PHP سرنام واژگان "PHP Hypertext Preprocessor" بحساب می آید.
    • PHPیک نرم افزار کد باز است. (Open Source)
    • PHP زبان اسكریپتی سمت سرویس دهنده می باشد. (server-side)
    • PHP را می توانید بصورت رایگان دانلود و استفاده کرد.
    Note PHP یک زبان جالب و معروف
    PHP آنقدر قدرتمند هست که بتواند هسته بزرگترین سیستم محتوای وب (Joomla) را تشکیل دهد.
    PHP به اندازه کافی توانایی دارد که یکی از بزرگترین جوامع مجازی (Facebook) را اجرا کند.
    همچنین PHP بقدری آسان است که بتواند مورد استفاده تازه کاران قرار بگیرد.

    آموزش PHP (پی اچ پی): فایل PHP چیست؟

    Wiki

    • فایل های PHP می تواند شامل متن، تگ های HTML، خصوصیت های CSS، دستورات JavaScript و دستورات PHP باشد.
    • دستورات PHP سمت سرور اجرا می شوند و نتیجه بصورت HTML به مرورگر کاربر ارسال می شود.
    • فایل های PHP با پسوند php. ذخیره می شوند.

    آموزش PHP (پی اچ پی): قابلیت های PHP

    Wiki

    • PHP می تواند صفحات با محتوای داینامیک را ایجاد کند.
    • PHP می تواند سمت سرور فایل ها را ایجاد کند، حذف کند، باز کند، بخواند، ویرایش کند و ببندد.
    • PHP می تواند داده های فرم را جمع آوری کند.
    • PHP می تواند Cookieها را ارسال و دریافت کند.
    • PHP می تواند داده ها را در پایگاه داده اضافه، حذف و ویرایش کند.
    • PHP می تواند دسترسی کاربران وب سایتتان را به بعضی از صفحات محدود کند.
    • PHP می تواند داده ها را رمزنگاری کند.

    با PHP هیچ محدودیتی در تولید HTML ندارید. شما می توانید تصاویر، فایل های PDF و حتی فایل های Flash را ایجاد نمایید. همچنین می توانید هر متنی مانند XHTML و XML را در خروجی چاپ نمایید.


    آموزش PHP (پی اچ پی): چرا PHP؟

    Wiki

    • یکی از برترین مزایای PHP (پی اچ پی) سازگاری آن با اکثر سیستم عامل ها و نرم افزارهای وب سرور مانند IIS و Appache است.
    • PHP (پی اچ پی) ساختار و ترکیبی بسیار شبیه C دارد.
    • استفاده و دانلود PHP (پی اچ پی) رایگان است.
    • PHP (پی اچ پی) یکی از سریع ترین زبان ها در نوع خود است.

    در آموزش PHP از کجا شروع کنم؟

    Wiki

    • PHP (پی اچ پی) برای اجرا نیاز به یک Web-Server دارد، ساده ترین Web-Server برای شما احتمالاً IIS خواهد بود. (PHP & IIS)
    • طبیعتاً برای اجرای فایل های PHP (پی اچ پی) نیاز به یک مرورگر وب دارید که مسلماً رایجترین آن IE است.
    • برای ایجاد فایل های PHP (پی اچ پی)، نیاز به یک ویرایشگر ساده متنی مثل Notpad یا Wordpad دارید.
    • PHP (پی اچ پی) و در صورت نیاز MySql را نصب کنید.

    در ادامه آموزش PHP،خواهید دید که با نصب بسته XAMPP، همزمان PHP و MySQL و Apache  نصب خواهد شد.


    توجه: شما می توانید، مطالب آموزش PHP بالا را از پنل سمت راست همین صفحه دنبال فرمایید.

    READ MORE
  • جلسه ی هشتم طراحی یک فروشگاه اینترنتی-نمایش تعداد کالاهای سبد خرید

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


    آنچه که در قسمت قبل طراحی شد

    در قسمت قبل، موارد کلی زیر آموزش داده شدند:

    1.  نحوه ی حذف کالاها از سبد خرید با استفاده از ajax

    مشاهده ی آنچه که در قسمت قبل طراحی شد:

     


    آنچه که در قسمت 'نمایش تعداد کالاهای سبد خرید' خواهید آموخت

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

    توضیح مختصر:

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


    نمایش تعداد کالاهای سبد خرید

     به سراغ نرم افزار دریم ویور می رویم و دو فایل left.php و top.php را باز می کنیم. در اینجا، قبل از تابع deletesabad که در جلسه ی قبل آن را نوشتیم، تابع جدیدی را می نویسیم  و نام آن را tedadkol قرار می دهیم. این تابع تعداد کل را برای ما محاسبه می کند. حالا یک متغیر به نام number تعریف می کنیم و مقدار آن را برابر با 0 می گذاریم:

    حالا کاری که باید انجام دهیم تا بتوانیم تعداد کل محصولات موجود در سبد خرید را به دست بیاوریم، این است که به داخل سبد خرید خود برویم و تک تک قسمت هایی که مربوط به تعداد هست و درون liها قرار دارد را باید درون هرکدام از آنها بگردیم و فیلد تعداد را پیدا کنیم و عددش را دریافت کنیم و سپس آنها را با هم جمع کنیم تا تعداد کل به دست بیاید. همان طور که می دانید، قبلا ما این عددها را که مربوط به تعداد محصول هست را در داخل یک span قرار دادیم و آی دی آنها را tedad قرار دادیم:

     

    دوباره به سراغ نرم افزار دریم ویور می رویم و کدهای جی کوئری مان را می نویسیم:

     


    دسترسی به موارد آموزشی بالا در بسته ی خریداری شده:

    • شماره جلسه: 8
    • نام فایل ویدئو: 32
    • فرمت فایل: mp4.

    نقطه ی شروع بحث بالا (نمایش تعداد کالاهای سبد خرید) در ویدئو: 00:00

    READ MORE
تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت پرداخت آنلاین - بانک پارسیان پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان