Click here to Skip to main content
15,887,683 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
please help..!! i am tired to fix my code.

What I have tried:

original code
PHP
function jumlah_data($kondisi){

        //sql

        if($kondisi==''){

            $sql = mysql_query("SELECT COUNT(*) FROM data_training $kondisi"); 

        }else{

            $sql = mysql_query("SELECT COUNT(*) FROM data_training WHERE $kondisi");                       

        }      

        $row = mysql_fetch_array($sql); // line 42 error

        $jml = $row['0'];

        return $jml;

    }

rebuild
PHP
//fungsi menghitung jumlah data
  function jumlah_data($kondisi){
    //sql
    if($kondisi==''){
      $query = "SELECT COUNT(*) FROM data_training $kondisi";
      $sql = mysql_query($query) || 
     die("Error SQL: $query". PHP_EOL .mysql_error().");
      //$sql = mysql_query("SELECT COUNT(*) FROM data_training $kondisi");  
    }else{
      $query = "SELECT COUNT(*) FROM data_training WHERE $kondisi";
      $sql = mysql_query($query) || 
      die("Error SQL: $query". PHP_EOL .mysql_error().");
      //$sql = mysql_query("SELECT COUNT(*) FROM data_training WHERE $kondisi");
    }    
    $row = mysql_fetch_array($sql);  
    $jml = $row['0'];
    return $jml;
  } 

But error
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\XAMPP\htdocs\MMM\New folder\fungsi.php on line 48

LEAF
Error SQL: SELECT COUNT(*) FROM data_training WHERE AND target='laku'
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right sy


Full code
PHP
?php
	//fungsi cek nilai atribut
	function cek_nilaiAtribut($field , $kondisi){
		//sql disticnt		
		$hasil = array();
		if($kondisi==''){
			$sql = mysql_query("SELECT DISTINCT($field) FROM data_training");					
		}else{
			$sql = mysql_query("SELECT DISTINCT($field) FROM data_training WHERE $kondisi");					
		}
		$a=0;
		while($row = mysql_fetch_array($sql)){
			$hasil[$a] = $row['0'];
			$a++;
		}	
		return $hasil;
	}	
	//fungsi cek heterogen data
	function cek_heterohomogen($field , $kondisi){
		//sql disticnt
		if($kondisi==''){
			$sql = mysql_query("SELECT DISTINCT($field) FROM data_training");					
		}else{
			$sql = mysql_query("SELECT DISTINCT($field) FROM data_training WHERE $kondisi");					
		}
		//jika jumlah data 1 maka homogen
		if (mysql_num_rows($sql) == 1) {                      
			$nilai = "homogen";
		}else{
			$nilai = "heterogen";
		}		
		return $nilai;
	}	
	//fungsi menghitung jumlah data
	function jumlah_data($kondisi){
		//sql
		if($kondisi==''){
			$sql = mysql_query("SELECT COUNT(*) FROM data_training $kondisi");	
		}else{
			$sql = mysql_query("SELECT COUNT(*) FROM data_training WHERE $kondisi");						
		}		
		$row = mysql_fetch_array($sql);	
		$jml = $row['0'];
		return $jml;
	}
	//fungsi menghitung gain
	function hitung_gain($kasus , $atribut , $ent_all , $kondisi1 , $kondisi2 , $kondisi3 , $kondisi4){
		$data_kasus = '';
		if($kasus!=''){
			$data_kasus = $kasus." AND ";
		}
		//untuk atribut 2 nilai atribut	
		if($kondisi3==''){
			$j_laku1 = jumlah_data("$data_kasus target='laku' AND $kondisi1");
			$j_tidak1 = jumlah_data("$data_kasus target='tidak' AND $kondisi1");
			$jml1 = $j_laku1 + $j_tidak1;
			$j_laku2 = jumlah_data("$data_kasus target='laku' AND $kondisi2");
			$j_tidak2 = jumlah_data("$data_kasus target='tidak' AND $kondisi2");
			$jml2 = $j_laku2 + $j_tidak2;
			//hitung entropy masing-masing kondisi
			$jml_total = $jml1 + $jml2;
			$ent1 = hitung_entropy($j_laku1 , $j_tidak1);
			$ent2 = hitung_entropy($j_laku2 , $j_tidak2);
			$gain = $ent_all - ((($jml1/$jml_total)*$ent1) + (($jml2/$jml_total)*$ent2));
		}
		//untuk atribut 3 nilai atribut
		else if($kondisi4==''){
			$j_laku1 = jumlah_data("$data_kasus target='laku' AND $kondisi1");
			$j_tidak1 = jumlah_data("$data_kasus target='tidak' AND $kondisi1");
			$jml1 = $j_laku1 + $j_tidak1;
			$j_laku2 = jumlah_data("$data_kasus target='laku' AND $kondisi2");
			$j_tidak2 = jumlah_data("$data_kasus target='tidak' AND $kondisi2");
			$jml2 = $j_laku2 + $j_tidak2;
			$j_laku3 = jumlah_data("$data_kasus target='laku' AND $kondisi3");
			$j_tidak3 = jumlah_data("$data_kasus target='tidak' AND $kondisi3");
			$jml3 = $j_laku3 + $j_tidak3;
			//hitung entropy masing-masing kondisi
			$jml_total = $jml1 + $jml2 + $jml3;
			$ent1 = hitung_entropy($j_laku1 , $j_tidak1);
			$ent2 = hitung_entropy($j_laku2 , $j_tidak2);
			$ent3 = hitung_entropy($j_laku3 , $j_tidak3);			
			$gain = $ent_all - ((($jml1/$jml_total)*$ent1) + (($jml2/$jml_total)*$ent2) 
						+ (($jml3/$jml_total)*$ent3));				
		}
		//desimal 3 angka dibelakang koma
		$gain = round($gain,3);	
		if($gain>0){
			echo "Gain ".$atribut." = ".$gain."<br>";
		}		
		mysql_query("INSERT INTO gain VALUES ('','$atribut','$gain')");
	}
	//fungsi menghitung entropy
	function hitung_entropy($nilai1 , $nilai2){
		$total = $nilai1 + $nilai2;
		//jika salah satu nilai 0, maka entropy 0
		if($nilai1==0 or $nilai2==0){
			$entropy = 0;
		}else{
			$entropy = (-($nilai1/$total)*(log(($nilai1/$total),2))) + (-($nilai2/$total)*(log(($nilai2/$total),2)));
		}		
		//desimal 3 angka dibelakang koma
		$entropy = round($entropy, 3);	
		return $entropy;
	}
	//fungsi hitung rasio
	function hitung_rasio($kasus , $atribut , $gain , $nilai1 , $nilai2 , $nilai3){				
		$data_kasus = '';
		if($kasus!=''){
			$data_kasus = $kasus." AND ";
		}
		//menentukan jumlah nilai
			$jmlNilai=3;
			//jika nilai 3 kosong maka nilai atribut-nya 2
			if($nilai3==''){
				$jmlNilai=2;
			}					
		mysql_query("TRUNCATE rasio_gain");		
		if($jmlNilai==3){
			$opsi11 = jumlah_data("$data_kasus ($atribut='$nilai2' OR $atribut='$nilai3')");
			$opsi12 = jumlah_data("$data_kasus $atribut='$nilai1'");
			$tot_opsi1=$opsi11+$opsi12;
			$opsi21 = jumlah_data("$data_kasus ($atribut='$nilai3' OR $atribut='$nilai1')");
			$opsi22 = jumlah_data("$data_kasus $atribut='$nilai2'");
			$tot_opsi2=$opsi21+$opsi22;
			$opsi31 = jumlah_data("$data_kasus ($atribut='$nilai1' OR $atribut='$nilai2')");
			$opsi32 = jumlah_data("$data_kasus $atribut='$nilai3'");
			$tot_opsi3=$opsi31+$opsi32;			
			//hitung split info
			$opsi1 = (-($opsi11/$tot_opsi1)*(log(($opsi11/$tot_opsi1),2))) + (-($opsi12/$tot_opsi1)*(log(($opsi12/$tot_opsi1),2)));
			$opsi2 = (-($opsi21/$tot_opsi2)*(log(($opsi21/$tot_opsi2),2))) + (-($opsi22/$tot_opsi2)*(log(($opsi22/$tot_opsi2),2)));
			$opsi3 = (-($opsi31/$tot_opsi3)*(log(($opsi31/$tot_opsi3),2))) + (-($opsi32/$tot_opsi3)*(log(($opsi32/$tot_opsi3),2)));
			//desimal 3 angka dibelakang koma
			$opsi1 = round($opsi1,3);
			$opsi2 = round($opsi2,3);
			$opsi3 = round($opsi3,3);										
			//hitung rasio
			$rasio1 = $gain/$opsi1;
			$rasio2 = $gain/$opsi2;
			$rasio3 = $gain/$opsi3;
			//desimal 3 angka dibelakang koma
			$rasio1 = round($rasio1,3);
			$rasio2 = round($rasio2,3);
			$rasio3 = round($rasio3,3);
			//cetak
			echo "Opsi 1 : <br>jumlah ".$nilai2."/".$nilai3." = ".$opsi11.
				"<br>jumlah ".$nilai1." = ".$opsi12.
				"<br>Split = ".$opsi1.
				"<br>Rasio = ".$rasio1."<br>";
			echo "Opsi 2 : <br>jumlah ".$nilai3."/".$nilai1." = ".$opsi21.
				"<br>jumlah ".$nilai2." = ".$opsi22.
				"<br>Split = ".$opsi2.
				"<br>Rasio = ".$rasio2."<br>";
			echo "Opsi 3 : <br>jumlah ".$nilai1."/".$nilai2." = ".$opsi31.
				"<br>jumlah ".$nilai3." = ".$opsi32.
				"<br>Split = ".$opsi3.
				"<br>Rasio = ".$rasio3."<br>";
				
			//insert 
			mysql_query("INSERT INTO rasio_gain VALUES 
						('' , 'opsi1' , '$nilai1' , '$nilai2 , $nilai3' , '$rasio1'),
						('' , 'opsi2' , '$nilai2' , '$nilai3 , $nilai1' , '$rasio2'),
						('' , 'opsi3' , '$nilai3' , '$nilai1 , $nilai2' , '$rasio3')");
		}
		$sql_max = mysql_query("SELECT MAX(rasio_gain) FROM rasio_gain");
		$row_max = mysql_fetch_array($sql_max);	
		$max_rasio = $row_max['0'];
		$sql = mysql_query("SELECT * FROM rasio_gain WHERE rasio_gain=$max_rasio");
		$row = mysql_fetch_array($sql);	
		$opsiMax = array();
		$opsiMax[0] = $row[2];
		$opsiMax[1] = $row[3];		
		echo "<br>=========================<br>";
		return $opsiMax;		
	}
?>
Posted
Updated 1-Jul-17 20:58pm
v3

1 solution

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
As you pass the result from mysql_query to mysql_fetch_array, it is clear that mysql_query failed and returned FALSE (a boolean)...
 
Share this answer
 
Comments
Saya Noic 2-Jul-17 3:07am    
@Kornfeld Eliyahu Peter
like this =
/fungsi menghitung jumlah data

function jumlah_data($kondisi){

//sql

if($kondisi==''){

$query = "SELECT COUNT(*) FROM data_training WHERE 0=0 $kondisi";

$sql = mysql_query($query) ||

die("
Error SQL: $query". PHP_EOL .mysql_error()."
");

}else{

$query = "SELECT COUNT(*) FROM data_training WHERE 0=0 $kondisi";

$sql = mysql_query($query) ||

die("
Error SQL: $query". PHP_EOL .mysql_error()."
");

}

$row = mysql_fetch_array($sql);

$jml = $row['0'];

return $jml;

}
Saya Noic 2-Jul-17 3:09am    
like this @Kornfeld Eliyahu Peter

/fungsi menghitung jumlah data

function jumlah_data($kondisi){

//sql

if($kondisi==''){

$query = "SELECT COUNT(*) FROM data_training WHERE 0=0 $kondisi";

$sql = mysql_query($query) ||

die("
Error SQL: $query". PHP_EOL .mysql_error()."
");

}else{

$query = "SELECT COUNT(*) FROM data_training WHERE 0=0 $kondisi";

$sql = mysql_query($query) ||

die("
Error SQL: $query". PHP_EOL .mysql_error()."
");

}

$row = mysql_fetch_array($sql);

$jml = $row['0'];

return $jml;

}

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900