Blog Kategorileri

Son Eklenen Konular

php ile mysql tabloları xml olarak dışarı aktarmak
Resim

C# ile yazdığım bir projede webdeki veri tabanı bilgilerine kendime özgü bir xml formatında  ihtiyacım olmuştu, bunun üzerine alttaki gibi bir uygulama yazmıştım. Bunu burda paylaşma sebebime gelirsek, buna benzer bir uygulamaya ihtiyacı olanlar kendilerine göre uyarlayıp kullansınlar.

 

Kod içerisinde ilginizi çekebilecek noktalar:
Mysql veri tabanında tablo isimlerini okuma, okunan tabloların field ve bilgileri, okunan tabloların index bilgileri gibi sql sorgularınıda görebilirsiniz.

 

php

<?php
	error_reporting(E_ALL & ~E_NOTICE);
	ini_set('error_reporting', E_ALL & ~E_NOTICE); 
	 
	  $db_host = "localhost"; 	// burasi genelde aynidir
	  $db_kullanici = "root";   // Db kullanici adiniz 
	  $db_sifre = "";           // Db sifreniz 
	  $db_adi = "hebeleHubele";       // Db adiniz 
	//****************************************************
	

	  @$baglanti = mysql_connect($db_host,$db_kullanici,$db_sifre); 
	  @ mysql_select_db($db_adi,$baglanti); 
	  if (mysql_errno()) 
	  { 
	    echo 'Veritabanina baglanilamiyor ...'; 
	    exit; 
	  } 
	mysql_query("SET NAMES utf8");
	mysql_query("SET CHARACTER SET utf8");
	mysql_query("SET COLLATION_CONNECTION='utf8_turkish_ci'");
	
	function prele($arr){
		echo '<pre>';
			print_r($arr);
		echo '</pre>';
	}
	
	function tabloIndexBilgileri($table){
		$result = mysql_query("SHOW KEYS FROM $table");
		if(!$result){return null;}
		while ($m = mysql_fetch_assoc($result)){
			if($m['Key_name'] == 'PRIMARY'){ continue; }
			//prele($m);
			$fieldInfo[$m['Index_type']][] = array($m['Column_name'],$m['Non_unique']);
		}
		return $fieldInfo;
	} 
	
	$export = '<?xml version="1.0" encoding="utf-8"?>'; $export .= "\n";
	$export .= '<db name="'.$db_adi.'">'; $export .= "\n";
	
	$tableName = array();
	$res = mysql_query("SHOW TABLES");
	while($m = mysql_fetch_row($res)){
		$tableName[] = $m[0];
	}
	
	foreach ($tableName as $key => $value) {
		$export .= '<table name="'.$value.'">';$export .= "\n";
		$sor = mysql_query("describe $value");
		
		while($m = mysql_fetch_assoc($sor)){
			$fieldType = preg_replace('#(.*?)\(.*?\)#is','$1', $m['Type']);
			$export .= '<field name="'.$m['Field'].'" type="'.$fieldType.'" key="'.$m['Key'].'" null="'.$m['Null'].'" default="'.$m['Default'].'" extra="'.$m['Extra'].'"></field>'; $export .= "\n";
		}
		$indexInfo = tabloIndexBilgileri($value);
		if(is_array($indexInfo)){
			foreach ($indexInfo as $k => $v) {
				foreach ($v as $i => $d) {
					$export .= '<index name="'.$d[0].'" type="'.$k.'" benzersiz="'.($d[1] == 1 ? '0' : '1').'"></index>';$export .= "\n";
				}
			}
		}
		$export .= '</table>';$export .= "\n";
	}
		
	$export .= '</db>';	
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="tr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
	<body>
		<textarea><?=$export;?></textarea>
	</body>
</html>

 

Çalıştırdığınızda textarea içerisinde xml kodunu görebilirsiniz.


Örnek bir çıktı:

html

<?xml version="1.0" encoding="utf-8"?>
<db name="tabloadi">
<table name="bln_moduliliski">
<field name="mid" type="int" key="" null="NO" default="" extra=""></field>
<field name="modulid" type="int" key="" null="NO" default="" extra=""></field>
<field name="urunid" type="int" key="" null="NO" default="" extra=""></field>
<field name="zorunlu" type="tinyint" key="" null="NO" default="" extra=""></field>
</table>
<table name="bln_urun">
<field name="urunid" type="int" key="PRI" null="NO" default="" extra="auto_increment"></field>
<field name="catid" type="int" key="" null="NO" default="" extra=""></field>
<field name="urunadi" type="varchar" key="MUL" null="NO" default="" extra=""></field>
<field name="urunresmi" type="varchar" key="" null="NO" default="" extra=""></field>
<field name="urunaciklama" type="text" key="" null="NO" default="" extra=""></field>
<field name="tags" type="varchar" key="MUL" null="NO" default="" extra=""></field>
<field name="fiyat" type="float" key="" null="NO" default="" extra=""></field>
<field name="ozelalanlar" type="text" key="" null="NO" default="" extra=""></field>
<index name="urunadi" type="FULLTEXT" benzersiz="0"></index>
<index name="tags" type="FULLTEXT" benzersiz="0"></index>
</table>
</db>

 

comments powered by Disqus