PHP ile MySQL verilerini Excele Aktarma

MySQL de tuttuğumuz bilgileri bazen Excele aktarmamız gerekebiliyor. Php ile bunu yapmak oldukça basit. Fakat kodlamaya başlamadan önce gidiş haritamızı çizelim. MySQL verilerini aktarırken oluşacak Türkçe karakter sorunlarını çözelim.

  1. Veritabanı bağlantısı oluştur.
  2. Dosya adını belirle.
  3. Hangi tabloyu bastıracağımız belirt.
  4. Döngüye  alarak satırları ve sütunları doldur.
  5. Satır ve sütunlarda oluşacak Türkçe Karakter sıkıntılarını çöz.
  6. Dosyayı serverımıza kaydet.
  7. Yazdırdığımız dosyayı indir.

MySQL veritabanımızı Excele aktarırken öncelikle 2 sayfa oluşturacağız ve bunlar olustur.php ile indir.php adında olacaklar. Ardından aşağıdaki kodları kullanabiliriz.

>> olustur.php

 
<?
// Veritabanı Bağlantısı
$host="alperenozlu.com";
$db="alperenozludatabaseadi";
$user="alperenozlu_kullaniciadi";
$pass="alperenozlu_sifree";
$conn=@mysql_connect($host,$user,$pass) or die("Mysql Baglanamadi");
mysql_select_db($db,$conn) or die("Veritabanina Baglanilamadi");
mysql_set_charset('utf8',$conn);
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci' ");
if(isset($_POST["excelolustur"])){ // FORM SONUC
$dosya = "olusturalacakdosya.xls"; // EXCEL TABLOSU ADI
$yaz = @fopen($dosya,'w+'); 
$tablo_adi = "tabloadi"; // Tablo Adi
$tablo_sorgu = mysql_query("select * from $tabloadi");

fwrite($yaz,"Adt Soyadt Bolumt Emailt Telefont n");
// Bu kod aşağıdaki şemayı çıkarmaktadır.
// A  | B  |   C   |  D  |   E   
// -----------------------------
// ID | Ad | Soyad | Yaş | Email
// -----------------------------

while ($tablo_sonuc = mysql_fetch_row($tablo_sorgu)) {
// Türkçe karakterini çözmek için;
// mb_convert_encoding($tablo_sonuc[sayi], "iso-8859-9", "UTF-8"); kullanılır.
$sutun0 = $tablo_sonuc[0]; // Id olduğu için karakter düzeltmedik. 
$sutun1 = mb_convert_encoding($tablo_sonuc[1], "iso-8859-9", "UTF-8");
$sutun2 = mb_convert_encoding($tablo_sonuc[2], "iso-8859-9", "UTF-8");
$sutun3 = $tablo_sonuc[3]; // Yaş olduğu için karakter düzeltmedik. 
$sutun4 = $tablo_sonuc[4]; // E-posta olduğu için karakter düzeltmedik. 

fwrite($yaz,"$sutun0t $sutun1t $sutun2t $sutun3t $sutun4tn"); 

//Gelen verileri satırlara yazdırdık.
}

mysql_free_result($tablo_sorgu); 
fclose($yaz);
echo "İşlem Tamamlandı"; 
exit;
}
?>
<FORM ACTION="?page=olustur" method="post">
<INPUT TYPE="submit" value="Verileri Aktar" name="excelolustur"> 
</FORM>

İndirme sayfası için ise şöyle bir kod yazabiliriz. ( Bazı excel sürümlerinde otomatik indirmeyebilir, eğer bir hata olursa yorum kısmına yazınız)

>> indir.php

<?php
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="indirelecekdosyaaadi.xls"'); // <-- düzenleyin
header ('Content-Transfer-Encoding: binary');
header('Cache-Control: max-age=0');
$dosyayolu = "uploads/excel.xls"; // <-- düzenleyin
readfile($dosyayolu);

?>

Ardından indir.php’yi çalıştırarak, excel dosyanızı indirebilirsiniz.

Kurumsal Firma Sitesi Kodluyorum

Bu konu hakkında ufak bir araştırma yaptım. Firma sitelerinin verdikleri hizmetleri inceledim ve fiyatları ortaya çıkardım. Server ve domain dahil 90-250 TL arasında değişen fiyatlar mevcut. Peki nasıl oluyor da bu kadar ucuz fiyata web sitesi kurabiliyorlar?

Her şey daha önceden hazırlanan scriptlerden kaynaklanıyor, haftalarca uğraşıp kodladıkları siteleri ucuz fiyata hizmete sunuyorlar. 1000 kişi bu şekilde satın alsa, gayet makul ücretlere erişiyorlar. Fakat burada unuttukları bir şey var; Tasarım. Normal bilgi düzeyinde olan bir müşteriye arka planda işleyen sistemi ne kadar anlatırsanız anlatın, ne kadar överseniz övün, müşteri karşısında göze hoş gelen bir tasarım görmek istemektedir. Xhtml/Css tasarım kullanarak 200 tema arasından istediğinizi seçin demek maalesef pek estetik durmamaktadır.

Şimdi olayın benle ilgili kısmına gelelim;

Bu işe bende soyundum ve kurumsal firma sitesi kodlayacağım. Bu siteyi çalıştığım firma altında satışa sunacağız ve server dahil fiyatını en az 350 lira düşünüyorum. Peki ben bu araştırmalar sonucu neler ekleyeceğim sistemime?

Öncelikle menü editörü eklemem gerekecek, ya wordpress tarzı menu sistemi olacak ya da basit bir sürükle bırak menü yapacağım. Bu konuda hala kararsızım.

Form oluşturma sistemi olacak , yeni bir sayfa oluşturduğunuzda  buraya form ekleyebileceksiniz.

Örnek: İnsan kaynakları sayfası için başvuru formu.

Modül yönetimi ile social like box, latest tweet gibi özellikler gelecek.

Tabi temalar için wp tarzı tema sistemi ve modern temalar yer alacak. İlk aşamada 20 ye yakın temayı sisteme uyarlayacağım.

Şimdilik bu kadar,

İyi Kodlamalar!

C++ Karekök, Kuvvet, Log ve Trigonometri Hesabı

cpluspluscalculatorC++ projesi olarak farklı bir hesap makinesi yaptım. Hesap makinesi temel 4 mantık üzerine çalışıyor. Karekök Alma, Kuvvet Alma, Logaritma hesaplama ve Trigonometrik Hesap. Bunların hepsi math kütüphanesiyle mümkün oluyor. Programın ana dili İngilizce fakat tanımları Türkçe yazdım. Yazının sonunda .exe indirme linki bulunmaktadır.

Not : System(“Pause”); windows 8 için gerekmemektedir, ama daha önceki sürümler için gerekebilir.

Bu kod şunları içermektedir:

  1. Basit input ve outputlar
  2. Math Kütüphanesi kullanımı
  3. Getch Fonksiyonu
// Alperen Ozlu
// Advanced C++ Calculator 
// Level : Basic
// Recommended Program: Dev C++
// www.alperenozlu.com

#include <iostream> // Genel Kütüphane
#include <math.h> // Matematik işlemleri için gerekli
#include <conio.h> // Getch komutu için gerekli
using namespace std; // Her satırda std:: yazmayalım.
int main ()
{
	int selectionfirst; // Kullanıcıya 1,2,3,4 seçeneklerini sunuyoruz. Integer olması yeterli.
	double number; // Genel olarak kullanıcıya sorduğumuz ilk sayı
	double power; // 2. İşlem için kuvvet soruyoruz
	do {
		// 1 - Karekök, 2 - Herhangi bir sayının, herhangi bir kuvveti, 3- Bir sayının Logaritması, 4- Trigonometrik Fonksiyonlar
	cout << " Select a number : n 1) Square Root of a number n 2) Any power of any number n 3) Logarithm Calculator n 4) Trigonometric functions n "; 	
	cout << "n " ; cin >> selectionfirst; cout << "n " ; // Kullanıcıdan bir değer alalım

	switch (selectionfirst) // Switch Fonksiyonu
	{
	 case 1: // Eğer selectionfirst değeri 1 ise,
	 	cout << " Square Root of A Number "<< endl; // Olayın başlığı
	 	cout << " Enter A Number : " ; cin >> number ; // Sayıyı Soralım
	 	cout << " Square Root of " << number << " is = "; // *girilensayi* nin karekökü şudur =
	 	number = sqrt (number); // Hesaplama kısmı sqrt(sayi)
	 	cout << number <<endl; // Ekrana yaz

	break;
	   case 2: // Eğer selectionfirst değeri 2 ise,
		cout << " Any Power of Any Number " <<endl; // Olayın başlığı
		cout << " Enter A Number : " ; cin >> number; // Sayıyı Soralım
		cout << " Enter A Power : " ; cin >> power; // Kuvveti Soralım
		cout << " " << number << " ^ " << power << " is = " ; 
		number = pow (number,power); // Hesaplama kısmı pow(sayi,kuvveti)
		cout << number <<endl; // Ekrana yaz

	 break;
	 case 3: // Eğer selectionfirst değeri 3 ise,
	 	 cout << " Logarithm Calculator " <<endl; // Olayın başlığı
	 	 cout << " Enter A Number: " ; cin >> number ; // Sayıyı Soralım
	 	 cout << " Logarithm of " << number << " is = "; 
	 	 number = log10 (number); // 10 tabanında log alalım
	 	 cout << number <<endl; // Ekrana yaz
	 break;
	 case 4: // Eğer selectionfirst değeri 4 ise,
	 	 double answersin,answercos,answertan;

	 	 cout << " Trigonometric Functions " << endl; // Olayın başlığı
		 cout << " Enter A Number: " ; cin >> number ;
		 cout << " Trigonometric Functions of " << number << " is = ";
		 answersin = sin (number*3.14159265/180);
		 answercos = cos (number*3.14159265/180);
		 answertan = tan (number*3.14159265/180);

		 cout << " Sin " << number << " "  << floor(answersin) << endl;
		 cout << " Cos " << number << " "  << floor(answercos) << endl;
		 cout << " Tan " << number << " "  << floor(answertan) << endl;
		 cout << " Cot " << number << " "  << floor(1/answertan) << endl;

	break;
	// Eğer selectionfirst değeri 1,2,3,4 değil ise,
	default:cout << " Unidentified request. Please select again." <<endl;

		}
	cout << " n Please Press Enter, For New Selection." <<endl; // Eğer yeniden işlem yapmak istiyorsanız, ENTER tuşuna basın
} while (getch()==13); // Getch 13 , enter tuşu demektir.
	// system("Pause") ;
	return 0;

}

Bu programı indir ( .RAR olarak, exe dosyası )

WordPress Yorum Güvenliği, Spam’a Son

wplogoblue-stacked-rgbWordPress blogu yorum kısımlarından gelen spam mesajlar bazen canımızı sıkabiliyor. Captcha kodları kullanıcıyı sıkabiliyor veya zor ve okunamaz karakterler gelebiliyor. Bu yüzden kullanıcıya basit bir toplama işlemi sorarak, sistemimizi korumalı bir hale getirmemiz gerekiyor. Maalesef şuan böyle bir eklenti yazacak durumda değilim ama basit 2 kod değiştirerek bunu kolay bir şekilde yapabiliyoruz.

Lütfen adımları dikkatli takip edin ve belirtilen 2 dosyada değişim yapmadan önce yedek almayı unutmayın.

Temamız içinde comment.php dosyasında uygun bir yere bunu ekliyoruz.

<?php
@session_start(); // Session Başlat ve hata vermemesi için @ koyduk.

    $number1 = rand(1,9); // 1.Sayı
    $number2 = rand(1,9); // 2.Sayı
    $sum = $number1+$number2; // Sayıları Topla
    $_SESSION['security_question'] = "$sum";// Session'a Ata
	echo ''.$number1.' + '.$number2.' işleminin cevabı?';
?>

<input type="text" placeholder="Cevabı buraya yazınız" name="security_question" autocomplete="off" size="5">

Php kodları arasında bulunan kısımda, @ işareti koyarak session komutunun verebileceği hatayı ekrandan kaldırdık. ?> ‘dan sonra ki kısımda ise, sonuç kısmını alacağımız bir input koyduk.

Şimdi buradan gelen değeri gönderdiğimizde, bir ekranda kontrol etmemiz gerekiyor. WordPress’i kurduğunuz dizine gelip  wp-comments-post.php dosyasını açıyoruz. Önce yedek alıyoruz ve ardından dosya içeriğini tamamen silerek, aşağıda bulunan kodu yapıştıyoruz.

<?php
/**
 * Handles Comment Post to WordPress and prevents duplicate comment posting.
 *
 * @package WordPress
 */

if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
	header('Allow: POST');
	header('HTTP/1.1 405 Method Not Allowed');
	header('Content-Type: text/plain');
	exit;
}

session_start();

// Quiz kontrol ediliyor
if($_SESSION['security_question'] != $_POST['security_question']) {
    echo 'Basit bir toplama islemini yanlis yapmis olamazsin degil mi? <br/> <a href="javascript:history.go(-1)">Geri Don</a> ';
    die(); }
else {

/** Sets up the WordPress Environment. */
require( dirname(__FILE__) . '/wp-load.php' );

nocache_headers();

$comment_post_ID = isset($_POST['comment_post_ID']) ? (int) $_POST['comment_post_ID'] : 0;

$post = get_post($comment_post_ID);

if ( empty($post->comment_status) ) {
	do_action('comment_id_not_found', $comment_post_ID);
	exit;
}

// get_post_status() will get the parent status for attachments.
$status = get_post_status($post);

$status_obj = get_post_status_object($status);

if ( !comments_open($comment_post_ID) ) {
	do_action('comment_closed', $comment_post_ID);
	wp_die( __('Sorry, comments are closed for this item.') );
} elseif ( 'trash' == $status ) {
	do_action('comment_on_trash', $comment_post_ID);
	exit;
} elseif ( !$status_obj->public && !$status_obj->private ) {
	do_action('comment_on_draft', $comment_post_ID);
	exit;
} elseif ( post_password_required($comment_post_ID) ) {
	do_action('comment_on_password_protected', $comment_post_ID);
	exit;
} else {
	do_action('pre_comment_on_post', $comment_post_ID);
}

$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;

// If the user is logged in
$user = wp_get_current_user();
if ( $user->exists() ) {
	if ( empty( $user->display_name ) )
		$user->display_name=$user->user_login;
	$comment_author       = $wpdb->escape($user->display_name);
	$comment_author_email = $wpdb->escape($user->user_email);
	$comment_author_url   = $wpdb->escape($user->user_url);
	if ( current_user_can('unfiltered_html') ) {
		if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) {
			kses_remove_filters(); // start with a clean slate
			kses_init_filters(); // set up the filters
		}
	}
} else {
	if ( get_option('comment_registration') || 'private' == $status )
		wp_die( __('Sorry, you must be logged in to post a comment.') );
}

$comment_type = '';

if ( get_option('require_name_email') && !$user->exists() ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		wp_die( __('<strong>ERROR</strong>: please fill the required fields (name, email).') );
	elseif ( !is_email($comment_author_email))
		wp_die( __('<strong>ERROR</strong>: please enter a valid email address.') );
}

if ( '' == $comment_content )
	wp_die( __('<strong>ERROR</strong>: please type a comment.') );

$comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;

$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');

$comment_id = wp_new_comment( $commentdata );

$comment = get_comment($comment_id);
do_action('set_comment_cookies', $comment, $user);

$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
$location = apply_filters('comment_post_redirect', $location, $comment);

wp_safe_redirect( $location );
exit;
}

Kaydedip, yorum kısmını kontrol edelim.

Not :  Wordpress 3.5.1 sürümü için denenmiştir. Lütfen işlem yapmadan önce iki dosyanın da yedeğini alın. Twentyten gibi temalarda yorum kısmı comments.php de bulunmaz, eğer comments.php de kodları göremiyorsak, wp-includes/comment-template.php dosyasına bakmamız gerekiyor.

[Solved] WordPress Contact Form 7 Error on Godaddy

Hello,

In this web site, i was want to do some changes. More importantly thing is about server. As a result, my web site is based in Godaddy Web Servers. Okay, now our problem is about Contact Form 7 Plugin.

Problem : In CF7, when you are trying to send an message, CF7 give an error.

Solution:

  1. Go to WordPress Panel and Enter your Plugins.
  2. Click to “Add New” button and search  Configure SMTP plugin.
  3. Setup it and go to Configure SMTP Settings.
  4. After that enter this information;

SMTP host : relay-hosting.secureserver.net

SMTP port : 25

 Check it here;