article

نحوه رسم چارت و نمودار آماری با PHP و MySQL

php-chart

گستره استفاده از زبان برنامه نویسی PHP در ارتباط با سیستم مدیریت پایگاه داده MySQL صرفا به ذخیره و بازیابی اطلاعات محدود نمی شود، به عنوان مثال می توانیم اطلاعات خام موجود در جداول را تجزیه تحلیل کرده و مقادیر پارامترها را با هم مقایسه و نهایتا نتیجه را به صورت نمودار آماری ترسیم کنیم، از این شیوه می توان به فرض در نمایش جزئیات بازدیدها و نمودارهای آماری در سایت هایی که با اعداد و ارقام سر و کار دارند استفاده نمود، از این رو با توجه به پرکاربرد بودن این مبحث در آموزش پیش رو اسکریپتی کاربردی را قرار داده ایم که علی رغم ساختار کدنویسی ساده، سبکی و حجم کم، کاربرد و انعطاف پذیری خوبی دارد، این اسکریپت برای رسم نمودارها و مقایسه آماری داده ها چه به صورت استاتیک و چه به صورت داینامیک و با اطلاعات موجود در دیتابیس به راحتی قابل استفاده است.

دانلود اسکریپت رسم چارت و نمودار آماری

با PHP و MySQL


رسم چارت و نمودار آماری در وب با روش های متعدد مبتنی بر زبان های سمت سرور یا سمت کاربر میسر است، در اسکریپتی که در این آموزش بررسی می کنیم رسم چارت توسط کلاسی به زبان PHP انجام می شود، در کنار کلاس اصلی اسکریپت چند نمونه فایل نیز کدنویسی کرده ایم تا با نحوه استفاده از برنامه به صورت مستقل یا در ارتباط با پایگاه داده MySQL آشنا شویم، برای شروع فایل فشرده اسکریپت را از آدرس زیر دریافت می کنیم:
دانلود اسکریپت رسم چارت و نمودار آماری با PHP و MySQL - حجم: کمتر از 15 کیلوبایت
بسته بالا حاوی چند فایل و دایرکتوری با نام ها و کارکردهای مختلف به شرح زیر است:
- فایل php-chart.php جهت تست برنامه در حالت مستقل (بدون استفاده از دیتابیس) کاربرد دارد، برای اجرای این فایل نیاز به انجام تنظیمات خاصی نیست و کافی است در مرورگر آن را مشابه نمونه زیر فراخوانی کنیم:
localhost/test/php-chart.php
این فراخوانی در حالت لوکال هاست است و قاعدتا در سایت آنلاین باید آدرس سایت را جایگزین کنیم.
- فایل mysql-chart.php جهت تست برنامه در حالت اتصال با پایگاه داده MySQL کاربرد دارد، برای اجرای این فایل لازم است که ابتدا یک دیتابیس در سرور خود ایجاد و تنظیماتی را به شرحی که در ادامه خواهیم گفت انجام دهیم.
- فایل chart_config.php در دایرکتوری config حاوی تنظیمات اتصال به دیتابیس (عنوان دیتابیس، نام کاربری، کلمه عبور) و مواردی مانند نام جدول است، این اطلاعات باید مطابق با دیتابیس ایجاد شده تنظیم شوند در غیر اینصورت ارتباط برنامه با دیتابیس برقرار نخواهد شد و احیانا خطایی مشابه به متن زیر دریافت خواهیم کرد:
Warning: mysqli_connect(): (HY000/1044): Access denied for user ''@'localhost' to database 'dbname' in www\test\mysql-chart.php on line 29
- فایل chart-table.php در دایرکتوری table جهت ایجاد جدول و درج نمونه اطلاعات اولیه در دیتابیس کاربرد دارد، کافی است بعد از اعمال تنظیمات اتصال این فایل را به صورت نمونه زیر در مرورگر فراخوانی کنیم:
localhost/test/table/chart-table.php
نام جدول و مقادیر کاملا دلخواه و فرضی هستند.
- فایل chart_class.php در دایرکتوری chart حاوی کدنویسی کلاس اصلی برنامه است که وظیفه ترسیم نمودار در دو حالت عمودی و افقی را برعهده دارد، نمودارهای ترسیم شده از تصاویر موجود در فولدر image و استایل فایل style.css پیروی می کنند که جهت سفارشی سازی می توانیم آنها را مطابق نیاز و سلیقه خود تغییر داده و ویرایش کنیم.

نحوه استفاده از اسکریپت رسم چارت و نمودار آماری

با PHP و MySQL


- برای استفاده از کد ابتدا فایل chart_class.php را در صفحه مورد نظر وارد می کنیم، برای مثال ما این کار را در نمونه صفحات php-chart.php و mysql-chart.php به صورت include_once انجام داده ایم:
include_once('chart/chart_class.php');
- سپس برای اعمال استایل ظاهری مناسب فایل style.css موجود در دایرکتوری chart را به صورت آدرس دهی صحیح در صفحه وارد می کنیم (می توانیم از کدنویسی صفحات موجود الگوبرداری کنیم):
<link rel="stylesheet" href="chart/style.css">
- در گام آخر کافی است مقادیر را برای نمایش آمار به صورت مستقل یا در ارتباط با پایگاه داده در قالب متغیر تعیین کنیم (در فایل php-chart.php به صورت استاتیک مقادیری را جهت مثال قرار داده ایم و در فایل mysql-chart.php این مقادیر به صورت داینامیک از دیتابیس دریافت و به متغیر statistical نسبت داده می شوند) و در نهایت کلاس displayChart را در دو حالت عمودی و افقی فراخوانی می کنیم:
$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت افقی', 0, 500, 250, true, 1);

$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت عمودی', 1, 500, 250, false, 2);
همان طور که مشخص است هسته اصلی اسکریپت به صورت شی گرا نوشته شده است.

سفارشی سازی برنامه رسم چارت و نمودار آماری با PHP و MySQL

کلاس رسم چارت و نموداری آماری که در این آموزش بررسی کردیم قابلیت های خوبی برای سفارشی سازی و اعمال تغییرات دلخواه به شرح زیر دارد:
- نمایش به صورت عمودی یا افقی: بدین منظور کافی است مقدار 0 یا 1 را در هنگام فراخوانی کلاس به عنوان آرگیومنت سوم جایگزین کنیم، به طور مثال فراخوانی کلاس در حالت زیر نمودار را به شکل افقی نمایش می دهد.
$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت افقی', 0, 500, 250, true, 2);
و با تغییر مقادیر از 0 به 1، نمودار به صورت عمودی ترسیم می شود.
$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت عمودی', 1, 500, 250, true, 2);
- تعداد ستون های چارت: تعداد ستون های چارت بستگی به تعداد پارامتری دارد که به صورت آرایه (Array Index) تعریف و مقداردهی می کنیم، در مثال پیش فرض روزهای هفته را در متغیر statistical با اطلاعات آماری فرضی قرار داده ایم و در نتیجه هفت ستون در نمودار به صورت عمودی یا افقی ترسیم می شود.
- تنظیمات ظاهری: تنظیمات ظاهری اصلی برنامه از طریق فایل CSS آن موجود در دایرکتوری chart قابل اعمال است، همچنین در صورت آشنایی با PHP در خود فایل chart_class.php می توانیم تغییراتی در خروجی HTML نهایی اعمال کنیم.
- استفاده از رنگ ثابت یا متغیر: برای استفاده از رنگ ثابت در ستون های آماری باید مقادیر متغیر various_colors را در متد displayChart به صورت false مقداردهی کنیم، همچنین اگر می خواهیم هر کدام از ستون های نمودار رنگی اتفاقی داشته باشند به جای false مقدار true را تنظیم می کنیم، این پارامتر در هنگام فراخوانی متد به صورت آرگیومنت پنجم مشخص است:
$mc->displayChart('نمودار آماری - نمایش به صورت عمودی', 1, 500, 250, false, 2);

محتویات فایل های اسکریپت رسم چارت و نمودار آماری

با PHP و MySQL


محتویات فایل php-chart.php، جهت بررسی برنامه به صورت مستقل:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ترسیم نمودار آماری با PHP</title>
<!-- Webgoo.ir -->
<link rel="stylesheet" href="chart/style.css">
<style>
body {
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
direction: rtl;
}
</style>
</head>
<body>
<?php
//متغیر پیش فرض
@$statistical = array();

//وارد کردن فایل کلاس ترسیم نمودار
include_once('chart/chart_class.php');

//تعریف مقادیر آمار در متغیر
$statistical["شنبه"] = 20;
$statistical["یکشنبه"] = 30;
$statistical["دوشنبه"] = 60;
$statistical["سه شنبه"] = 25;
$statistical["چهارشنبه"] = 44;
$statistical["پنج شنبه"] = 17;
$statistical["جمعه"] = 66;

//نحوه فراخوانی
$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت افقی', 0, 500, 250, true, 1);

//نحوه فراخوانی
$mc = new Chart($statistical);
$mc->displayChart('نمودار آماری - نمایش به صورت عمودی', 1, 500, 250, false, 2);
?>
<hr>
- ورودی کلاس به صورت آرایه است که در هنگام فراخوانی به عنوان آرگیومنت به کلاس داده می شود.
<br><br>
- متد displayChart شش آرگیومنت دارد که به ترتیب شامل عنوان چارت، عمودی یا افقی بودن، عرض به پیکسل، ارتفاع به پیکسل،
استفاده یا عدم استفاده از رنگ های متنوع و در نهایت عدد رنگ انتخابی کاربر است.
<br><br>
- تعداد رنگ های انتخابی با توجه به تصاویر موجود در دایرکتوری image می تواند از عدد 1 تا 5 متغیر باشد.
</body>
</html>
محتویات فایل mysql-chart.php، جهت بررسی برنامه در ارتباط با MySQL:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ترسیم نمودار آماری با PHP و MySQL</title>
<!-- Webgoo.ir -->
<link rel="stylesheet" href="chart/style.css">
<style>
body {
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
direction: rtl;
}
</style>
</head>
<body>
<?php
//متغیر پیش فرض
@$statistical = array();

//وارد کردن فایل کلاس ترسیم نمودار
include_once('chart/chart_class.php');

//وارد کردن فایل اطلاعات اتصال و تنظیمات پایگاه داده
include_once('config/chart_config.php');

//اتصال با دیتابیس
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$conn) {
    echo "Error!: " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    //سازگاری با حروف فارسی
    $sql = "SET NAMES 'utf8'";
    $query = mysqli_query($conn, $sql);

    //دریافت مقادیر از دیتابیس
    $sql = "SELECT `day`, `stat` FROM $tbl_name LIMIT 10";
    $result = mysqli_query($conn, $sql);

    if(!$result) {
        echo "Selecting From Table $tbl_name: Error! " . mysqli_error($conn);
    } else {
        if(mysqli_num_rows($result) > 0) {
            while($row = mysqli_fetch_assoc($result)) {
                $statistical[$row["day"]] = $row["stat"];
            }

            //نحوه فراخوانی
            $mc = new Chart($statistical);
            $mc->displayChart('نمودار آماری - نمایش به صورت افقی', 0, 500, 250, true, 1);

            //نحوه فراخوانی
            $mc = new Chart($statistical);
            $mc->displayChart('نمودار آماری - نمایش به صورت عمودی', 1, 500, 250, false, 2);
        } else {
            echo "نتیجه ای یافت نشد!";
        }
    }
}

//پایان اتصال
mysqli_close($conn);
?>
<hr>
- قبل از اجرای این فایل ابتدا باید یک دیتابیس با نام دلخواه در برنامه phpMyAdmin ایجاد نمائیم.
<br><br>
- در گام دوم فایل chart_config.php موجود در دایرکتوری config را مطابق با اطلاعات دیتابیس خود ویرایش می کنیم.
<br><br>
- سپس فایل chart-table.php موجود در دایرکتوری table را در مرورگر فراخوانی و اجرا می کنیم تا جدول و ستون ها ساخته و نمونه اطلاعات پایگاه داده درج شوند.
<br><br>
- پس از ایجاد دیتابیس، تنظیم اطلاعات اتصال، ساخت جدول، ستون ها و درج نمونه اطلاعات، می توانیم فایل mysql-chart.php را در مرورگر فراخوانی و اجرا
کنیم.
</body>
</html>
محتویات فایل chart_config.php، تنظیمات اتصال به پایگاه داده:
<?php
//اطلاعات اتصال و تنظیمات پایگاه داده
$db_host = "localhost";
$db_user = "dbuser";
$db_pass = "";
$db_name = "dbname";
$tbl_name = "tblname";
محتویات فایل chart-table.php، جهت ساخت جدول و نمونه اطلاعات پیش فرض دیتابیس:
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ساخت جدول و ورود نمونه اطلاعات در MySQL</title>
<!-- Webgoo.ir -->
<style>
body {
font-family: Tahoma, Geneva, sans-serif;
font-size: 12px;
direction: rtl;
}
</style>
</head>
<body>
<?php
//وارد کردن فایل اطلاعات اتصال و تنظیمات پایگاه داده
include_once('../config/chart_config.php');

//اتصال با دیتابیس
$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(!$conn) {
    echo "Error!: " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
    exit;
} else {
    echo "PHP & MySQL Connection: Ok!<br>";

    //سازگاری با حروف فارسی
    $sql = "SET NAMES 'utf8'";
    $query = mysqli_query($conn, $sql);

    //ساخت جدول و ستون ها
    $sql = "CREATE TABLE $tbl_name(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    day VARCHAR(255),
    stat INT(11) UNSIGNED DEFAULT 0)
    ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_persian_ci"
;
    $query = mysqli_query($conn, $sql);
    if(!$query) {
        echo "Creating Table $tbl_name: Error! " . mysqli_error($conn);
    } else {
        echo "Creating Table $tbl_name: OK!<br>";

        //ذخیره نمونه اطلاعات در جدول
        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('شنبه', '12')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('یکشنبه', '45')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('دوشنبه', '143')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('سه شنبه', '121')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('چهارشنبه', '66')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('پنجشنبه', '112')";
        $query = mysqli_query($conn, $sql);

        $sql = "INSERT INTO $tbl_name(`day`, `stat`) VALUES('جمعه', '34')";
        $query = mysqli_query($conn, $sql);

        if(!$query) {
            echo "Inserting Into Table $tbl_name: Error! " . mysqli_error($conn);
        } else {
            echo "Inserting Into Table $tbl_name: OK!";
        }
    }
}

//پایان اتصال
mysqli_close($conn);
?>
<hr>
- قبل از فراخوانی و اجرای این فایل ابتدا باید یک دیتابیس با نام دلخواه در برنامه phpMyAdmin ساخته باشیم.
<br><br>
- اطلاعات اتصال و تنظیمات پایگاه داده در فایل chart_config.php در دایرکتوری config قرار دارد.
<br><br>
- در قسمت تنظیمات اتصال به پایگاه داده در لوکال هاست معمولا می توانیم از نام کاربری root بدون کلمه عبور استفاده کنیم.
<br><br>
- عنوان دیتابیس، جدول، ستون ها و نمونه مقادیر کاملا فرضی هستند و صرفا جهت تست و بررسی نحوه ترسیم نمودار در PHP و MySQL
درج شده اند.
</body>
</html>
محتویات فایل chart_class.php، کلاس اصلی برنامه:
<?php
class Chart {
    var $data// The data array to display
    var $type; // Vertical:1 or Horizontal:0 chart
    var $title; // The title of the chart
    var $width// The chart box width
    var $height; // The chart box height
    var $meta_space_horizontal = 60; // Total space needed for chart title + bar title + bar value
    var $meta_space_vertical = 60; // Total space needed for chart title + bar title + bar value
    var $various_colors;//true or false

    function Chart($data) {
        $this->data = $data;
    }

    function displayChart($title = '', $type, $width = 300, $height = 200, $various_colors = true, $user_color) {
        $this->type = $type;
        $this->title = $title;
        $this->width = $width;
        $this->height = $height;
        $this->various_colors = $various_colors;
        echo '<div class="chartbox" style="width:' . $this->width . 'px; height:' . $this->height . 'px;"><h2>' . $this->title . '</h2>' . "\r\n";
        if($this->type == 1)
            $this->drawVertical($user_color);
        else $this->drawHorizontal($user_color);
        echo '</div>';
    }

    function getMaxDataValue() {
        $max = 0;
        foreach($this->data as $key => $value) {
            if($value > $max)
                $max = $value;
        }
        return $max;
    }

    function getElementNumber() {
        return sizeof($this->data);
    }

    function drawVertical($user_color) {
        $multi = ($this->height - $this->meta_space_horizontal) / $this->getMaxDataValue();
        $max = $multi * $this->getMaxDataValue();
        $barw = floor($this->width / $this->getElementNumber()) - 4;
        $i = 1;
        foreach($this->data as $key => $value) {
            $b = floor($max - ($value * $multi));
            $a = $max - $b;
            if($this->various_colors)
                $color = ($i % 5) + 1;
            else $color = $user_color;
            $i++;
            echo '<div class="barv">' . "\r\n";
            echo '<div class="barvvalue" style="margin-top:' . $b . 'px; width:' . $barw . 'px;">' . $value . '</div>' . "\r\n";
            echo '<div><img src="chart/images/bar' . $color . '.png" width="' . $barw . '" height="' . $a . '" alt="' . $color . '">
</div>'
. "\r\n";
            echo '<div class="barvvalue" style="width:' . $barw . 'px;">' . $key . '</div>' . "\r\n";
            echo '</div>' . "\r\n";
        }
    }

    function drawHorizontal($user_color) {
        $multi = ($this->width - 170) / $this->getMaxDataValue();
        $max = $multi * $this->getMaxDataValue();
        $barh = floor(($this->height - 50) / $this->getElementNumber());
        $i = 1;
        foreach($this->data as $key => $value) {
            $b = floor($value * $multi);
            if($this->various_colors)
                $color = ($i % 5) + 1;
            else $color = $user_color;
            $i++;
            echo '<div class="barh" style="height:' . $barh . 'px;">' . "\r\n";
            echo '<div class="barhcaption" style="line-height:' . $barh . 'px; width:50px;">' . $key . '</div>' . "\r\n";
            echo '<div class="barhimage"><img src="chart/images/barh' . $color . '.png" alt="' . $color . '" style="width:' . $b . 'px; height:' . $barh . 'px;"></div>' . "\r\n";
            echo '<div class="barhvalue" style="line-height:' . $barh . 'px; width:30px;">' . $value . '</div>' . "\r\n";
            echo '</div>';
        }
    }
}
محتویات فایل style.css، اعمال تنظیمات ظاهری:
/* The sorrounding chart box */
.chartbox {
    display: block;
    height: 700px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 11px;
    color: #333;
    text-align: center;
    margin-right: auto;
    margin-left: auto;
    margin-bottom: 8px;
    border: 1px solid #333;
    overflow: hidden;
    background-color: #f9f9f9;
    padding: 4px;
}
.chartbox h2 {
    font-size: 11px;
    padding: 0;
    margin: 10px 0 0 0;
}
/* Vertical chart elements */
.barv {
    margin: 2px;
    display: inline-block;
    float: right;
}
.barvvalue {
    padding: 0;
    margin: 0;
    font-size: 11px;
    text-align: center;
}
/* Horizontal chart elements */
.barh {
    margin: 4px;
    text-align: left;
    clear: both;
}
.barhvalue {
    padding: 0;
    margin: 0 5px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    text-align: left;
    overflow: hidden;
    float: left;
}
.barhcaption {
    padding: 0;
    margin: 0 5px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    text-align: right;
    overflow: hidden;
    float: left;
}
.barhimage {
    float: left;
}

پیش نمایش آنلاین برنامه رسم چارت و نمودار آماری با PHP و MySQL


در لینک زیر پیش نمایش آنلاین برنامه را با آمار استاتیک (بدون استفاده از دیتابیس) جهت تست و بررسی قرار داده ایم.
پیش نمایش آنلاین
sectionدسته بندی: آموزش کاربردی » MySQL
related مطالب بیشتر:
» ایجاد لینک دانلود مدت دار با PHP و MySQL
» آموزش حذف گروهی اطلاعات از MySQL با استفاده از چک باکس
» هوشمند سازی پنل ورود و خروج سایت
» آموزش ساخت فرم عضویت در سایت با PHP و MySQL
» صفحه بندی مطالب و محتوا با PHP و MySQL
commentنظرات (۲۸ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: maryam
زمان: ۰۹:۰۹:۳۲ - تاریخ: ۱۳۹۳/۰۲/۱۵
بسیار متشکرم
نویسنده: رضا لطفی
زمان: ۱۱:۳۰:۵۴ - تاریخ: ۱۳۹۳/۰۴/۱۳
بسیار مهم - باسلام
احتراما در خواست کد نمایش گانت چارت در php را داشته ام لطفا راهنمایی نمایید
gant chart
پاسخ: 
متاسفانه چنین کدی در اختیار نداریم، لطفا در وب و به انگلیسی یا فارسی جستجو کنید.
نویسنده: شهریار پازوکی
زمان: ۱۵:۱۴:۰۵ - تاریخ: ۱۳۹۳/۱۱/۰۵
درود بر شما
سپاس گزارم از کمک بزرگی که انجام دادین یک ایران سپاس
نویسنده: مسعود
زمان: ۲۳:۵۵:۳۸ - تاریخ: ۱۳۹۴/۰۸/۰۳
سلام. کد بالا یه ایراد داره و نمیشه ازش در صفحه چند مورد رو با هم و جداگانه استفاده کرد. مثلا اگر یه نمودار از دیتابیس سه تا ستون باشه نشون میده و برای نمودار دو ستونی بعد 5 ستون نمایش میده که سه تای قبل توی این دومی هم میاد. لطفا راهنمایی فرمائید.
پاسخ: 
نمودار مشکلی ندارد! باید در هر فراخوانی یک آرایه منحصر به فرد برای کلاس اختصاص دهید، مثال:
$mc = new Chart($statistical_1);
$mc = new Chart($statistical_2);
نکته: در هنگام ساخت آرایه نیز باید به منحصر به فرد بودن نام دقت کنید:
$statistical_1 ["Sut"] = 20;
$statistical_2 ["Sut"] = 40;
نویسنده: آرزو
زمان: ۱۹:۰۸:۲۱ - تاریخ: ۱۳۹۵/۰۵/۲۰
سلام. من نمودارها و رسم کردم و به درستی همه موارد انجام میشه. فقط چون اختلاف مقادیر متغیرها زیاده، میله های نمودار خیلی طولش زیاد میشه و انتهاش مشخص نیست دیگه. طول چارت رو هم زیاد می کنم تاثیری نداره. چی کار باید کنم؟
پاسخ: 
آموزش به همراه نمونه کد و نموداری فرضی است و ملاحظه می کنید که مشکل خاصی وجود ندارد، لذا اگر با مسئله ای روبرو شدید لطفا نمودار را در سایت خود آپلود کرده و آدرس صفحه را ارسال کنید تا ابتدا بررسی و در صورت نیاز کدهای PHP شما مورد بازبینی قرار گیرند.
نویسنده: نیلوفر
زمان: ۰۲:۱۶:۵۸ - تاریخ: ۱۳۹۵/۰۷/۲۶
سلام من این کد رو استفاده کردم اما در قسمت افقی. شنبه یکشنبه رو نمینویسه زیر نمودارها.
مشکل از کجاست؟؟
پاسخ: 
کد همراه با پیش نمایش ارائه شده و ملاحظه می کنید که مشکلی وجود ندارد، لذا باید بررسی کنید، ممکن است کدهای CSS برنامه با کدهای دیگری در صفحه شما تداخل داشته باشند، برنامه را به صورت مجزا تست کنید.
نویسنده: هادی
زمان: ۱۴:۱۵:۲۷ - تاریخ: ۱۳۹۶/۰۳/۰۲
درود
از دیتابیس طبق کد زیر خروجی گرفتم که متاسفانه فقط 2 گزینه آخری را نشان میدهد ، ممکن هست بفرمایید کجای کار مشکل هست؟
$sql= $connect->query("SELECT * FROM xfx  ") ;
foreach ($sql as $row){
$jens = $row['plan'];
$tarikh = $row['tarikh'];
$statistical["$jens"]= $tarikh;
}
پاسخ: 
اطلاعات درج شده برای ارائه پاسخ به سوال کافی نیست، در واقع کد صرفا یک پرس و جو را اجرا کرده و نتیجه در حلقه به متغیرها نسبت داده شده که در ظاهر مشکلی وجود ندارد! باید کل کدنویسی را بررسی و تست کرد.
نویسنده: هادی
زمان: ۱۰:۵۲:۰۴ - تاریخ: ۱۳۹۶/۰۳/۰۳
درود پاسخ سوالی که دیروز مطرح کرده بودم را با منحصر به فرد کردن خروجی ها درست کردم ولی یه سوال : چکونه میتونم کاری کنم که کادر خروجی بر اساس تعداد خروجی خودش تغییر سایز دهد
مثلا درصدی از صفحه باشد
$mc->displayChart(' کلی',0,500,150);
پاسخ: 
باید طوری کدنویسی کنید که اعداد مربوط به آرگیومنت ها به صورت داینامیک به کلاس داده شود.
نویسنده: هادی
زمان: ۱۱:۱۰:۱۱ - تاریخ: ۱۳۹۶/۰۳/۰۳
درود مجدد
دوست عزیز قابلیت تغیر خودکار کادر را هم درست کردم ممنونم ازت
نویسنده: جلال
زمان: ۱۷:۴۸:۰۱ - تاریخ: ۱۳۹۶/۰۷/۰۵
سلام
با تشکر و سپاس فراوان . عالی بود
نویسنده: رضا
زمان: ۲۲:۰۱:۰۳ - تاریخ: ۱۳۹۷/۰۸/۲۴
آقا خیلی ممنونم
نویسنده: میلاد
زمان: ۰۲:۳۸:۴۰ - تاریخ: ۱۳۹۸/۰۸/۰۵
باسلام
تشکر از مطالب روان و پرکاربردتان.
در خصوص آموزش مذکور، نحوه و ترفند نمایش محور عمودی در سمت چپ نمودار (مشابه نمودارهای معمول میله ای) اگر راهکاری دارید ارائه فرمایید.
پیشاپیش از پیگیریتان سپاسگزارم.
پاسخ: 
متاسفانه به دلیل محدودیت زمان امکان توسعه بیشتر این کد میسر نیست اما برای سفارشی سازی این برنامه می توانید فایل chart_class.php موجود در دایرکتوری chart را ویرایش و در خط 60 به بعد (در متد drawVertical و بعد از حلقه foreach) خروجی مد نظرتان را اضافه کنید، قاعدتا برای ترسیم محور عمودی نمودار میله ای علاوه بر HTML باید با CSS و PHP آشنایی داشته باشید.
نویسنده: میلاد
زمان: ۲۳:۲۲:۵۵ - تاریخ: ۱۳۹۸/۰۸/۰۵
آشنایی نسبی با css, php و ajax دارم و نمیخام از library های موجود در نت استفاده کنم. خواستم با همین متد که انصافا روان هستش محورها رو اضافه کنم. باتوجه به پاسخ قبلی، اگر امکانش هست عنوان تابع یا پارامتر مورد استفاده برای نمایش محور مقیاس ها رو بفرمایین تا حداقل بشه راجع بهش سرچ کرد. (در حد راهنمایی)
باتشکر
پاسخ: 
اطلاعات مورد نیاز در پاسخ قبلی گفته شد، برای اضافه کردن موارد دلخواه کافی است خروجی HTML مورد نظرتان را با کدهای PHP ایجاد کنید، به فرض متد drawVertical برای ترسیم میله های نمودار به صورت عمودی است، با دقت در نحوه ایجاد خروجی می توانید بعد از حلقه با دستور echo یک بلاک div خروجی دهید و این بلاک را با CSS (خاصیت های width، height، display و...) به شکل محور درآورید، انجام این موارد زمانبر است وگرنه این کار برایتان انجام می شد.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- مواردی که به کلی خارج از موضوع این مطلب هستند را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم، غیرضروری و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ خاصی داده نخواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- تمام یادداشت ها بررسی و برای هر کاربر زمان مشخصی جهت پاسخگویی در نظر گرفته می شود، لذا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.




6 × 9
 refresh
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشد که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
آخرین دیدگاه ها
form adel
در:
سلام با تشکر از سایت خوب شما. یه سوال داشتم چگونه تمام این کدها را در جاوا اسکریپت همزمان قرار دهیم. من مثلا دستور این...
۲۱:۲۵:۴۰ ۱۳۹۸/۰۸/۲۴

form یه سوال کننده
در:
سلام. ببخشید چطور میشه ایمیل هایی رو میفرستن که ریپلای زدن رو ایمیلی که از طرف ما نبوده بیشتر تو تبلیغات دیدم امیدوارم منظورم و...
۰۳:۲۳:۰۸ ۱۳۹۸/۰۸/۲۴

form پرتو
در:
با عرض سلام و خسته نباشید امیدوارم حالتون خوب باشه من دو سه سال پیش وبلاگم رو حذف کردم ایا امکانش هست برگرده؟ ادرس...
۱۴:۵۵:۵۲ ۱۳۹۸/۰۸/۲۰

form علی
در:
سلام من نمی تونم html tag رو چطور در وبلاگم قرار بدم وبلاگم اینه
tagtak.blog.ir
۱۰:۲۳:۳۴ ۱۳۹۸/۰۸/۲۰

form حمید
در:
سلام. خسته نباشید. من میخاستم استایل فیلدهای فرمم رو تغییر بدم منتهی نمیدونم از چه کدهایی باید استفاده کنم. برای اینکه فرمی به شکل...
۱۰:۳۶:۱۹ ۱۳۹۸/۰۸/۱۹

form سمیه
در:
سلام ممنون بابت آموزش مفیدتون توی تگ ها هرچیزی که در تگ head قرار بگیره نمایش داده نمیشه، اما ممنون میشم...
۲۰:۴۹:۲۳ ۱۳۹۸/۰۸/۱۷

form استادمجازی
در:
سلام. از ادمین عزیز و همگی دعوت می کنم آموزش های خوبتون را بصورت آموزش ویدیویی یا صوتی و... در سایت ostadmajazi.com استادمجازی ...
۲۲:۱۲:۲۳ ۱۳۹۸/۰۸/۱۳

form mohamad
در:
سلام و خسته نباشید ، توی فرمی که ساختم چند تا drop down دارم که میخوام با php براشون شرط بذارم به طوری...
۱۳:۵۱:۳۴ ۱۳۹۸/۰۸/۱۰

form رضا
در:
خسته نباشید این جلسه آخر html بود؟؟؟؟
۰۱:۱۵:۰۷ ۱۳۹۸/۰۸/۱۰

form امیرمحمد
در:
سلام و خسته نباشید استاد بنده میخوام بین دو کد زیر که مشخص کردم رو به دست بیارم
// ---------------------set سلام...
۱۹:۳۰:۵۳ ۱۳۹۸/۰۸/۰۸

form حجت
در:
خیلی ممنونم از لطف شما. اوکی شد.
۱۰:۲۸:۳۵ ۱۳۹۸/۰۸/۰۶

form میلاد
در:
آشنایی نسبی با css, php و ajax دارم و نمیخام از library های موجود در نت استفاده کنم. خواستم با همین متد که انصافا روان...
۲۳:۲۲:۵۵ ۱۳۹۸/۰۸/۰۵

form عرفان
در:
با سلام. مدتی بود که بدلایل مشکلات زیاد نتونستم به وبلاگم رسیدگی کنم ولی وقتی برگشتم میبینم که هزاران بازدید داشتم و همشونم به زبان...
۲۲:۴۹:۴۴ ۱۳۹۸/۰۸/۰۵

form raha
در:
سلام وقتتون بخیر ببخشید علامت @ در کل به چه معناست ممنون میشم پاسخ دهید
۲۰:۱۲:۵۹ ۱۳۹۸/۰۸/۰۵

form میلاد
در:
باسلام تشکر از مطالب روان و پرکاربردتان. در خصوص آموزش مذکور، نحوه و ترفند نمایش محور عمودی در سمت چپ نمودار (مشابه...
۰۲:۳۸:۴۰ ۱۳۹۸/۰۸/۰۵