• 31-03-2017, 14:08:09
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    MySQL bulunan verileri Türkçe karakterleri bozmadan excele aktarmak istiyor. PHP de herhangi bir bilgiye sahip değilim. Web de bulduğum aşağıdaki iki kodu denedim ama ikisi de excel dosyası oluşturuyor ancak içerik boş olarak geliyor.

    İkisinden birinin olması gerektiği halini iletebilecek biri olursa çok mutlu olurum.

    MySQL bilgileri:


    Web de bulduğum kodlar orjinal halleri:
    1. Kod:
    <?
    // Veritabanı Bağlantısı
    $host="localhost";
    $db="assistte_cagrikaydi";
    $user="yazli";
    $pass="yazili";
    $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");
    
    
    
    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>
    2. Kod:
    <?
          ini_set("display_errors",0);
           
           $domain="localhost";
           $username="yazili";
           $sifre="yazili";
           $dbname="assistte_cagrikaydi";
           
           $dbconnect=@mysql_connect($domain,$username,$sifre);
           @mysql_select_db($dbname,$dbconnect);
           @mysql_query( "SET NAMES 'utf8'" );
           
          $filename = "urunler-".date('Ymd').".xls"; 
          header("Content-Disposition: attachment; filename=\"$filename\""); 
          //header("Content-Type: application/vnd.ms-excel"); 
          header('Content-Type: application/x-msexcel; charset=UTF-8; format=attachment;');
          
          $flag = false; 
          $sqlurunler="select * from cagri where 
          order by ID";
          $sonucurunler=mysql_query($sqlurunler);
          while($row = mysql_fetch_assoc($sonucurunler))
          {
                
                if(!$flag) 
                { 
                        echo implode("\t", array_keys($row)) . "\r\n"; 
                        $flag = true; 
                } 
                
                echo implode("\t", array_values($row)). "\r\n"; 
          } 
          
          exit;

    Selamlar..
  • 31-03-2017, 15:47:38
    #2
    Direkt veritabanından Dışarı Aktar -> Microsoft Excel 2000 seçeneğine tıklayarak verilerinizi excele aktarabilirsiniz.
  • 31-03-2017, 15:57:12
    #3
    Karaman adlı üyeden alıntı: mesajı görüntüle
    Direkt veritabanından Dışarı Aktar -> Microsoft Excel 2000 seçeneğine tıklayarak verilerinizi excele aktarabilirsiniz.
    İlginize teşekkür ederim lakin, PHP MyAdmin den 10 bin veriyi söylediğiniz yöntemle almak imkanız bir durum oluyor. İlerde bu veri kat kat artacak kalıcı bir çözüm değil. Ayrıca PHPMyAdmin den excele veri aktarılınca Türkçe karakterleri bozuyor.
  • 31-03-2017, 16:33:18
    #4
    Alıntı
    $sor=mysql_query("select * from tabloadi");
    while($listele=mysql_fetch_assoc($sor)){
    echo $listele[sutunadi1].",\t";
    echo $listele[sutunadi2].",\t";
    echo $listele[sutunadi3].",\t";
    echo "\r\n";
    };
    Çıktıyı text editör ile .csv formatında kaydedip excel'de açabilirsiniz.
  • 31-03-2017, 16:55:26
    #5
    Datafon adlı üyeden alıntı: mesajı görüntüle
    Çıktıyı text editör ile .csv formatında kaydedip excel'de açabilirsiniz.
    Teşekkür ederim Datafon.

    Kodun başında sonunda olması gereken bilgileri de iletme imkanın var mı? İlettiğim gibi bu konuda bilgi yok. Hazırcılık gibi görünüyor ama ihtiyacen istemek durumunda kalıyorum.

    Selamlar...
  • 31-03-2017, 16:58:48
    #6
    Başında ya da sonunda bir kod bulunmasına gerek yok. <?php ile başlayıp ?> ile bitirmek yeterli olacaktır.
  • 31-03-2017, 17:07:15
    #7
    Datafon adlı üyeden alıntı: mesajı görüntüle
    Başında ya da sonunda bir kod bulunmasına gerek yok. <?php ile başlayıp ?> ile bitirmek yeterli olacaktır.
    Yaptım, Php yi açtığımda sayfa boş geliyor. Herhangi data çekme vs işlem olmuyor.
  • 31-03-2017, 17:09:29
    #8
    Biraz fazla özet geçtim sanırım

    <?php
    mysql_connect("localhost","dbkullaniciadi","dbsifr e");
    mysql_select_db("dbadi");

    $sor=mysql_query("select * from tabloadi");
    while($listele=mysql_fetch_assoc($sor)){
    echo $listele[sutunadi1].",\t";
    echo $listele[sutunadi2].",\t";
    echo $listele[sutunadi3].",\t";
    echo "\r\n";
    };

    ?>

    Php 5 standardına göre örnek verdim.
  • 31-03-2017, 17:24:29
    #9
    Datafon adlı üyeden alıntı: mesajı görüntüle
    Biraz fazla özet geçtim sanırım

    <?php
    mysql_connect("localhost","dbkullaniciadi","dbsifr e");
    mysql_select_db("dbadi");

    $sor=mysql_query("select * from tabloadi");
    while($listele=mysql_fetch_assoc($sor)){
    echo $listele[sutunadi1].",\t";
    echo $listele[sutunadi2].",\t";
    echo $listele[sutunadi3].",\t";
    echo "\r\n";
    };

    ?>
    php 5 standardına göre örnek verdim.

    Maalesef şu anda da tüm ekran viegüllerle dolu farklı bir bilgi yok. Kodu aynen aşağıdaki gibi yapıyorum.

    <?php
    mysql_connect("localhost","yazili","yazili");
    mysql_select_db("assistte_cagrikaydi");
    
    $sor=mysql_query("select * from tabloadi");
    while($listele=mysql_fetch_assoc($sor)){
    echo $listele[sutunadi1].",\t";
    echo $listele[sutunadi2].",\t";
    echo $listele[sutunadi3].",\t";
    echo "\r\n";
    };
    
    ?>
    bir defa da tabloadi yazan yere benim tablo adını yazdım "cagri" ama yine sayfa boş geldi. Sunucunun lokalde çalışması ile umarım bir alakası yoktur bu sorunun.

    Aşağıdaki kod üzerinde düzeltme yapma imkanımız yok mu sanki bu iş görecek gibi aöa hangi bilginin hangi alana yazması hususunda bilgim yok.
    <?
    // Veritabanı Bağlantısı
    $host="localhost";
    $db="assistte_cagrikaydi";
    $user="yazli";
    $pass="yazili";
    $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");
    
    
    
    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>