Question

I'm using libchart in my PHP but I have problem on how I can count the males and females in my Database. I'm using wampserver:

<?php
    include "../libchart/libchart/classes/libchart.php";

    define('DB_HOST', 'localhost');
    define('DB_NAME', 'login');
    define('DB_USER','root');
    define('DB_PASSWORD','');

    $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to                                        MySQL: " . mysql_error());
    $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());

    header("Content-type: image/png");

    $chart = new PieChart(500, 300);
    $query1= "Select count(*) from users where gender='Male'";
    $query2= "Select count(*) from users where gender='Female'";
    $male=$query1;
    $female=$query2;
    $dataSet = new XYDataSet();
    $dataSet->addPoint(new Point("Male", $male));
    $dataSet->addPoint(new Point("Female", $female));
    $chart->setDataSet($dataSet);

    $chart->setTitle("Number of Female and Male");
    $chart->render();


?>
Was it helpful?

Solution

<?php
    include "../libchart/libchart/classes/libchart.php";

    define('DB_HOST', 'localhost');
    define('DB_NAME', 'login');
    define('DB_USER','root');
    define('DB_PASSWORD','');

    $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to                                        MySQL: " . mysql_error());
    $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error());

    header("Content-type: image/png");

    $chart = new PieChart(500, 300);
    $query = "Select (Select count(*) from users where gender='Male') AS Male, (Select count(*) from users where gender='Female') as Female";
    $data = mysql_query($query);
    $male=$data[0]['Male'];
    $female=$data[0]['Male'];
    $dataSet = new XYDataSet();
    $dataSet->addPoint(new Point("Male", $male));
    $dataSet->addPoint(new Point("Female", $female));
    $chart->setDataSet($dataSet);

    $chart->setTitle("Number of Female and Male");
    $chart->render();


?>

OTHER TIPS

You never bother EXECUTING your queries - all you're doing is defining some strings that have SQL in them. Plus, there's no need for two separate queries:

$sql = "SELECT gender, count(*) AS cnt FROM users WHERE gender IN ('Male', 'Female') GROUP BY gender");
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
    $dataSet->addPoint(new Point($row['gender'], $row['cnt']));
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top