tag:blogger.com,1999:blog-63638495078170278242024-03-18T20:43:14.135-07:00VeblebiUnknownnoreply@blogger.comBlogger18125tag:blogger.com,1999:blog-6363849507817027824.post-15812972719137305602017-05-13T23:21:00.001-07:002017-05-13T23:37:15.916-07:00Netbeans Form içinde Form – JinternalFrame to a JDesktopPane<h3>
Java ile Netbeans IDE üzerinde, MDIForm içerisinde form görüntüleme.</h3>
Aşağıdaki resimdeki gibi, <b>yeni bir proje</b> oluşturuyoruz.<br />
<img alt="new-project-java" class="aligncenter size-full wp-image-1480" height="659" src="https://veblebi.com/wp-content/uploads/new-project-java.jpg" width="845" /><br />
Next Sonrası resimde görüldüğü gibi projemize isim(<b><span style="color: green;">mdifrm</span></b>) veriyoruz ve klasörü belirledikten sonra finish diyoruz.<br />
<a name='more'></a><br />
<img class="aligncenter wp-image-1502 size-full" height="507" src="https://veblebi.com/wp-content/uploads/new-project-java-finish.jpg" width="737" /><br />
Ardından ilk iş, resimde görüldüğü gibi Create Main Class seçeneğini kaldırmadıysak, <b>Source Package</b> içerisinde oluşturulmuş olan mdifm.java dosyasını siliyoruz. mdifrm paket resmine sağ tıklayıp, <b><span style="color: green;">frm_mdi</span></b> ismiyle, <b><span style="color: green;">New->Jframe</span> <span style="color: green;">Form</span> </b>ekliyoruz. Bu ana formumuz olacak.<img alt="jpanel-form" class="aligncenter size-full wp-image-1483" height="507" src="https://veblebi.com/wp-content/uploads/jpanel-form.jpg" width="755" /><br />
Tıkladıktan sonra açılan pencerede ismi verip <span style="color: purple;">finish </span>diyoruz.<br />
<img alt="jpanel-form-finish" class="aligncenter size-full wp-image-1484" height="507" src="https://veblebi.com/wp-content/uploads/jpanel-form-finish.jpg" width="737" /><br />
Soldaki <b><span style="color: purple;">Projects </span></b>menüsünde, <b><span style="color: green;">frm_mdi.java</span></b> çift tıklıyoruz. Açılan panelde, üst taraftan <span style="color: purple;"><b>Design</b></span>‘e tıklıyoruz. 1 Adet <b>menu bar ve menu</b> ekleyeceğiz. Aşağıdaki resimde görüldüğü gibi <b><span style="color: purple;">Menu Bar</span></b> butonunu seçip, form üzerine sürükleyip bırakacağız.<br />
<img alt="add-menu-bar" class="aligncenter size-full wp-image-1485" height="506" src="https://veblebi.com/wp-content/uploads/add-menu-bar.jpg" width="1051" /><br />
Şimdi 1 adet de <span style="color: purple;"><b>Desktop Pane</b></span> ekleyeceğiz. Diğer formları, bu panel içerisine çağıracağız.<br />
<img alt="add-desktop-pane" class="aligncenter size-full wp-image-1486" height="298" src="https://veblebi.com/wp-content/uploads/add-desktop-pane.jpg" width="737" /><br />
Eklediğimiz paneli, boyutlandırma kutularıyla büyütüp, form ebadında genişletiyoruz(böylece tüm formu kaplayacak)<br />
Şimdi eklemiş olduğumuz <span style="color: purple;">menu</span>‘ye item ekleyeceğiz(formu çağıracığımız). “Edit” yazısına, Mouse sağ tıklayıp, resimdeki gibi <b><span style="color: purple;">Edit Text</span></b> diyeceğiz, yeni bir isim vereceğiz. Örnek uygulamada, “<span style="color: purple;">Forms</span>” ismini verdim.<br />
<img alt="menu-bar-edit-text" class="aligncenter size-full wp-image-1487" height="288" src="https://veblebi.com/wp-content/uploads/menu-bar-edit-text.jpg" width="1052" /><br />
Şimdi ilgili menüye item eklemek için, yine sağ tıklayıp, resimde görüldüğü gibi, açılan pencerede <b><span style="color: purple;">Menu Item</span></b> ekleyeceğiz. Eklediğimizde isimlendirmek için yine yukarıdaki gibi, item ismine sağ tıklayıp <b><span style="color: purple;">Edit Text</span></b> diyebilirsiniz. Uygulamada ben item ismini, <b><span style="color: purple;">Form1</span> </b>olarak belirledim.<br />
<img alt="menu-bar-add-item" class="aligncenter size-full wp-image-1488" height="279" src="https://veblebi.com/wp-content/uploads/menu-bar-add-item.jpg" width="737" /><br />
<br />
Şimdi 1 adet <b><span style="color: purple;">JinternalFrame Form</span></b> ekleyeceğiz. Ugulamada ismini <span style="color: green;"><b>Form1</b> </span>olarak belirledim.<br />
<img alt="add-jinternal-frame-form" class="aligncenter size-full wp-image-1490" height="416" src="https://veblebi.com/wp-content/uploads/add-jinternal-frame-form.jpg" width="737" /><br />
Şimdi <b><span style="color: #993300;">frm_mdi.java</span></b> çift tıklayıp, source kısmında resimdeki yeri buluyoruz. Ve <b><span style="color: teal;">frm1 </span></b>adında bir değişken ekliyoruz.<br />
<img alt="add-form1-variable" class="aligncenter size-full wp-image-1489" height="495" src="https://veblebi.com/wp-content/uploads/add-form1-variable.jpg" width="1051" /><br />
Sonra menüde, event kısmına kod girebilmek için, ilgili item
üzerine(üst resmlerde menüdeki form1 item) sağ tıklayıp, aşağıda,
resimdeki yolu takip ediyoruz.<br />
<img alt="right-click-action" class="aligncenter size-full wp-image-1491" height="601" src="https://veblebi.com/wp-content/uploads/right-click-action.jpg" width="737" /><br />
İlgili kısımda ve resimdeki kod bloğunda olduğu gibi, yukarıda
oluşturduğumuz formu(form1.java), MDIForm içindeki Dektop pane içerisine
çağıracağız. İlgili Kodlar yazıyla;<br />
<div class="container">
<blockquote class="tr_bq">
<div class="line number1 index0 alt2">
<code class="java keyword">private</code> <code class="java keyword">void</code> <code class="java plain">jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) { </code></div>
<div class="line number2 index1 alt1">
<code class="java spaces"> </code><code class="java comments">// TODO add your handling code here:</code></div>
<div class="line number3 index2 alt2">
<code class="java spaces"> </code><code class="java keyword">if</code> <code class="java plain">(frm1 == </code><code class="java keyword">null</code> <code class="java plain">|| frm1.isClosed()) {</code></div>
<div class="line number4 index3 alt1">
<code class="java spaces"> </code><code class="java plain">frm1 = </code><code class="java keyword">new</code> <code class="java plain">form1();</code></div>
<div class="line number5 index4 alt2">
<code class="java spaces"> </code><code class="java comments">// center form - formu ortala</code></div>
<div class="line number6 index5 alt1">
<code class="java spaces"> </code><code class="java plain">frm1.setLocation(</code><code class="java keyword">this</code><code class="java plain">.getWidth()/</code><code class="java value">2</code> <code class="java plain">- frm1.getWidth()/</code><code class="java value">2</code><code class="java plain">, </code></div>
<div class="line number7 index6 alt2">
<code class="java spaces"> </code><code class="java keyword">this</code><code class="java plain">.getHeight()/</code><code class="java value">2</code> <code class="java plain">- frm1.getHeight()/</code><code class="java value">2</code><code class="java plain">);</code></div>
<div class="line number8 index7 alt1">
<code class="java spaces"> </code><code class="java plain">jDesktopPane1.add(frm1); </code></div>
<div class="line number9 index8 alt2">
<code class="java spaces"> </code><code class="java plain">frm1.setVisible(</code><code class="java keyword">true</code><code class="java plain">);</code></div>
<div class="line number10 index9 alt1">
<code class="java spaces"> </code><code class="java plain">}</code></div>
<div class="line number11 index10 alt2">
<code class="java plain">}</code></div>
</blockquote>
<div class="line number11 index10 alt2">
</div>
<div class="line number11 index10 alt2">
MDIFormumuzun açılışta maximum boyutlarda açılmasını istiyorsak
aşağıda resimde olduğu gibi, run() fonksiyonu içerisine kod yazacağız.<br />
<img alt="mdi-maximized" class="aligncenter size-full wp-image-1492" height="353" src="https://veblebi.com/wp-content/uploads/mdi-maximized.jpg" width="1051" /><br />
Kodlar yazıyla;<br />
<div class="container">
<blockquote class="tr_bq">
<div class="line number1 index0 alt2">
<code class="java plain">java.awt.EventQueue.invokeLater(</code><code class="java keyword">new</code> <code class="java plain">Runnable() {</code></div>
<div class="line number2 index1 alt1">
<code class="java spaces"> </code><code class="java keyword">public</code> <code class="java keyword">void</code> <code class="java plain">run() {</code></div>
<div class="line number3 index2 alt2">
<code class="java spaces"> </code><code class="java comments">// maxsimized - max boyutla ac</code></div>
<div class="line number4 index3 alt1">
<code class="java spaces"> </code><code class="java plain">frm_mdi f_mdi = </code><code class="java keyword">new</code> <code class="java plain">frm_mdi();</code></div>
<div class="line number5 index4 alt2">
<code class="java spaces"> </code><code class="java plain">f_mdi.setExtendedState(MAXIMIZED_BOTH);</code></div>
<div class="line number6 index5 alt1">
<code class="java spaces"> </code><code class="java plain">f_mdi.setVisible(</code><code class="java keyword">true</code><code class="java plain">);</code></div>
<div class="line number7 index6 alt2">
<code class="java spaces"> </code><code class="java comments">//new frm_mdi().setVisible(true);</code></div>
<div class="line number8 index7 alt1">
<code class="java spaces"> </code><code class="java plain">}</code></div>
<div class="line number9 index8 alt2">
<code class="java plain">});</code></div>
</blockquote>
<div class="line number9 index8 alt2">
</div>
<div class="line number9 index8 alt2">
Son olarak projemizi çalıştıracağız. Ilk açılıştaki varsayılan java
dosyasını sildiğimiz için, run tuşuna bastığımızda bir uyarı mesajıyla
karşılaşırız, varsayılan açılış dosyasını, mesajda belirttiği gibi
seçip, onaylamalıyız. ya da resimde görüldüğü gibi, pakete sağ tıklayıp,
properties seçip, açılan ekranda, main class’ı resimde görüldüğü gibi
belirleyebiliriz.<br />
<img alt="project-properties-run" class="aligncenter size-full wp-image-1493" height="685" src="https://veblebi.com/wp-content/uploads/project-properties-run.jpg" width="1051" /><br />
Çalıştırdığımızda, menüdeki <b>Forms->form1</b> tıkladığımızda formumuz açılmış olacak.<br />
<img alt="proje-run" class="aligncenter size-full wp-image-1494" height="625" src="https://veblebi.com/wp-content/uploads/proje-run.jpg" width="1000" /><br />
<br /></div>
</div>
</div>
</div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-44901636001848157092017-05-13T23:15:00.000-07:002017-05-13T23:37:51.573-07:00QT C++ SQLITE ile Telefon Defteri<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfvgsARrC12cTrEEVQ2-phbOmJQWx66m9-jTVQaTG3CPLUsYV1mBfY6GXaYrlqmn1aLrRzo5KiUERlBZpWVev4YMvmwHxvbQ01PhFYgUMOJaywZj9l3e2UgvKt4751vZOh5QC24FtErQ2T/s1600/telefon-defteri.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="577" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfvgsARrC12cTrEEVQ2-phbOmJQWx66m9-jTVQaTG3CPLUsYV1mBfY6GXaYrlqmn1aLrRzo5KiUERlBZpWVev4YMvmwHxvbQ01PhFYgUMOJaywZj9l3e2UgvKt4751vZOh5QC24FtErQ2T/s640/telefon-defteri.jpg" width="640" /></a></div>
QT DESIGNER 4.0.0 ile SQLITE Kullanarak Telefon Defteri yapıyoruz.
(resimleri, üzerine tıklayarak orijinal boyutlarda görebilirsiniz)
<br />
<a href="https://www.qt.io/download-open-source/" target="_blank">Programı Buradan İndiriyor ve Kuruyoruz</a><br />
Programı çalıştırıyoruz. Karşılama ekranında <span style="color: maroon;">“New Project”</span> diyoruz veya “<span style="color: maroon;">File</span>” menüsünden “<span style="color: maroon;">New File or Project..</span>” tıklıyoruz.<br />
<a name='more'></a><br />
<br />
<a data-rel="lightbox-1" href="http://veblebi.com/wp-content/uploads/proje_olustur.jpg" title=""><img alt="proje_olustur" class="aligncenter wp-image-1400 size-full" height="558" src="https://veblebi.com/wp-content/uploads/proje_olustur.jpg" width="896" /></a><br />
Projemize isim veriyor ve hangi klasörde oluşturacağımızı “Browse” seçiyoruz.<br />
<a data-rel="lightbox-2" href="http://veblebi.com/wp-content/uploads/proje_olustur2.jpg" title=""><img alt="proje_olustur2" class="aligncenter wp-image-1401 size-full" height="454" src="https://veblebi.com/wp-content/uploads/proje_olustur2.jpg" width="916" /></a><br />
<a data-rel="lightbox-3" href="http://veblebi.com/wp-content/uploads/ana_ekran.png" title=""><img alt="ana_ekran" class="aligncenter wp-image-1402 size-full" height="860" src="https://veblebi.com/wp-content/uploads/ana_ekran.png" width="1171" /></a><br />
Tüm dosyalarımız oluşturuldu…<br />
“<span style="color: maroon;">mainwindow.h</span>” dosyasına çift tıklıyor ve düzenliyoruz. Üst bölüme kullanılacak kütüphaneleri ekliyoruz.<br />
Giriş kısımı şu şekilde olmalı.<br />
<br />
<div>
<div class="syntaxhighlighter cpp" id="highlighter_441065">
<div class="container">
<div class="line number1 index0 alt2">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#ifndef MAINWINDOW_H</code></span></div>
<div class="line number2 index1 alt1">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#define MAINWINDOW_H</code></span></div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QMainWindow></code></span></div>
<div class="line number5 index4 alt2">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QtSql></code></span></div>
<div class="line number6 index5 alt1">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QtDebug></code></span></div>
<div class="line number7 index6 alt2">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QRect></code></span></div>
<div class="line number8 index7 alt1">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QMessageBox></code></span></div>
<div class="line number9 index8 alt2">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QSqlQuery></code></span></div>
<div class="line number10 index9 alt1">
<span style="font-family: "courier new" , "courier" , monospace;"><code class="cpp preprocessor">#include <QSqlQueryModel></code></span></div>
<div class="line number10 index9 alt1">
</div>
</div>
</div>
</div>
SQLITE kullanacağız, bu halde SQL işlemleri için gerekli kütüphaneleri eklememiz gerekiyor. Bunlar (<<span style="color: maroon;">QtSql</span>>,<<span style="color: maroon;">QSqlQuery</span>>)<br />
Pencere genişleyip daraldığında içerideki alanlarında buna göre pozisyon alması ve ölçümler için (<<span style="color: maroon;">QRect</span>>) kütüphanesini ekliyoruz.<br />
<div class="brush:cpp">
<<span style="color: maroon;">QMessageBox</span>> ise mesaj penceresi için…</div>
<h2 class="brush:cpp">
“<span style="color: maroon;">mainwindow.h</span>” içeriği</h2>
<div>
<div class="syntaxhighlighter cpp" id="highlighter_523605">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="code"><div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#ifndef MAINWINDOW_H</code></div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#define MAINWINDOW_H</code></div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="cpp preprocessor">#include <QMainWindow></code></div>
<div class="line number5 index4 alt2">
<code class="cpp preprocessor">#include <QtSql></code></div>
<div class="line number6 index5 alt1">
<code class="cpp preprocessor">#include <QtDebug></code></div>
<div class="line number7 index6 alt2">
<code class="cpp preprocessor">#include <QRect></code></div>
<div class="line number8 index7 alt1">
<code class="cpp preprocessor">#include <QMessageBox></code></div>
<div class="line number9 index8 alt2">
<code class="cpp preprocessor">#include <QSqlQuery></code></div>
<div class="line number10 index9 alt1">
<code class="cpp preprocessor">#include <QSqlQueryModel></code> </div>
<div class="line number12 index11 alt1">
</div>
<div class="line number13 index12 alt2">
<code class="cpp keyword bold">namespace</code> <code class="cpp plain">Ui {</code></div>
<div class="line number14 index13 alt1">
<code class="cpp keyword bold">class</code> <code class="cpp plain">MainWindow;</code></div>
<div class="line number15 index14 alt2">
<code class="cpp plain">}</code></div>
<div class="line number16 index15 alt1">
</div>
<div class="line number17 index16 alt2">
<code class="cpp keyword bold">class</code> <code class="cpp plain">MainWindow : </code><code class="cpp keyword bold">public</code> <code class="cpp plain">QMainWindow</code></div>
<div class="line number18 index17 alt1">
<code class="cpp plain">{</code></div>
<div class="line number19 index18 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">Q_OBJECT</code></div>
<div class="line number20 index19 alt1">
</div>
<div class="line number21 index20 alt2">
<code class="cpp keyword bold">public</code><code class="cpp plain">:</code></div>
<div class="line number22 index21 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">explicit</code> <code class="cpp plain">MainWindow(QWidget *parent = 0);</code></div>
<div class="line number23 index22 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">~MainWindow();</code></div>
<div class="line number24 index23 alt1">
</div>
<div class="line number25 index24 alt2">
<code class="cpp keyword bold">private</code> <code class="cpp plain">slots:</code></div>
<div class="line number26 index25 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_btn_kaydet_clicked();</code></div>
<div class="line number27 index26 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_tbl_liste_doubleClicked(</code><code class="cpp keyword bold">const</code> <code class="cpp plain">QModelIndex &index);</code></div>
<div class="line number28 index27 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_btn_yeni_clicked();</code></div>
<div class="line number29 index28 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_btn_sil_clicked();</code></div>
<div class="line number30 index29 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_btn_sil_2_clicked();</code></div>
<div class="line number31 index30 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">on_txt_ara_textChanged(</code><code class="cpp keyword bold">const</code> <code class="cpp plain">QString &arg1);</code></div>
<div class="line number32 index31 alt1">
</div>
<div class="line number33 index32 alt2">
<code class="cpp keyword bold">private</code><code class="cpp plain">:</code></div>
<div class="line number34 index33 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">Ui::MainWindow *ui;</code></div>
<div class="line number35 index34 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">resizeEvent(QResizeEvent* evt) Q_DECL_OVERRIDE;</code></div>
<div class="line number36 index35 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">void</code> <code class="cpp plain">listele(QString sql);</code></div>
<div class="line number37 index36 alt2">
<code class="cpp plain">};</code></div>
<div class="line number38 index37 alt1">
</div>
<div class="line number39 index38 alt2">
<code class="cpp preprocessor">#endif // MAINWINDOW_H</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
<div class="brush:cpp">
<br />
Burada kullanacağımız sınıflar ve fonksiyonları
tanımlıyoruz, “kullanıcı fonksiyonları” olarak 2 adet bize özel
fonksiyonumuz olacak(diğerleri <a href="http://veblebi.com/tag/program/" title="program ">program </a>tarafından otomatik oluşturulacak).</div>
<div class="brush:cpp">
<span style="color: blue;"> void resizeEvent(QResizeEvent* evt) Q_DECL_OVERRIDE;<br />
void listele(QString sql);</span></div>
<div class="brush:cpp">
<span style="color: maroon;">resizeEvent</span>
fonksiyonu, pencerenin(form) ebadlarının anlık değiştirilmesine göre
tetiklenen fonksiyondur.(Böylece kullandığımız bileşenleri ekrana göre
konumlandırabileceğiz)</div>
<span style="color: maroon;">listele</span> fonksiyonu ise, kullanacağımız “QTableView” bileşeninin güncelenmesi için.<br />
Bu dosya ile işimiz buraya kadar(dosyada tanımlamalar, yukarıda
özellikle belirttiğim 2 fonksiyon hariç, QT programı ile otomatik
oluşturulacaktır)<br />
Şimdi sıra PROJE dosyamızda QT değişkenine, “<span style="color: maroon;">sql</span>“‘ide eklemeye geldi.<br />
<h2>
“<span style="color: maroon;">TelefonDefteri.pro</span>” işlemler</h2>
ilgili dosyayı açtığımızda<br />
<div>
<div class="syntaxhighlighter cpp" id="highlighter_740379">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="gutter"><div class="line number1 index0 alt2">
1</div>
</td><td class="code"><div class="container">
<div class="line number1 index0 alt2">
<code class="cpp plain">QT += core gui</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
bu satırı göreceğiz, ardına “<span style="color: maroon;">sql</span>” eklememiz gerekir.<br />
<div>
<div class="syntaxhighlighter cpp" id="highlighter_771141">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="gutter"><div class="line number1 index0 alt2">
1</div>
</td><td class="code"><div class="container">
<div class="line number1 index0 alt2">
<code class="cpp plain">QT += core gui sql</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
Bu dosya ile de işimiz bitti…<br />
<h1>
SQLITE Database oluşturmak</h1>
Ücretsiz ve açık kaynak kodlu(open source) <span style="color: maroon;">SqliteBrowser</span> programını kullanıyoruz.<br />
<a href="http://sqlitebrowser.org/" target="_blank">http://sqlitebrowser.org/</a><br />
Kullandığımız işletim sistemine göre indirip, kuruyor ve programı çalıştırıyoruz.<br />
New Database diyoruz ve yeni veritabanımızı ilgili proje dosyamızın olduğu dizinde oluşturuyoruz(örnek projede “<span style="color: maroon;">database.db</span>” ismiyle oluşturdum)<br />
Sonra ilgili programda “Execute SQL” kısmını açıp alanları
ekleyelim(aşağıdaki kodları olduğu gibi kopyalayıp,
yapıştırabilirsiniz).. <br />
<div>
<div class="syntaxhighlighter sql" id="highlighter_642141">
<div class="container">
<blockquote class="tr_bq">
<div class="line number1 index0 alt2">
<code class="sql keyword">CREATE</code> <code class="sql keyword">TABLE</code> <code class="sql plain">`TELEFON` (</code></div>
<div class="line number2 index1 alt1">
<code class="sql spaces"> </code><code class="sql plain">`id` </code><code class="sql keyword">INTEGER</code> <code class="sql color1">NOT</code> <code class="sql color1">NULL</code> <code class="sql keyword">PRIMARY</code> <code class="sql keyword">KEY</code> <code class="sql plain">AUTOINCREMENT,</code></div>
<div class="line number3 index2 alt2">
<code class="sql spaces"> </code><code class="sql plain">`adsoyad` TEXT,</code></div>
<div class="line number4 index3 alt1">
<code class="sql spaces"> </code><code class="sql plain">`telefon` TEXT,</code></div>
<div class="line number5 index4 alt2">
<code class="sql spaces"> </code><code class="sql plain">`cep` TEXT,</code></div>
<div class="line number6 index5 alt1">
<code class="sql spaces"> </code><code class="sql plain">`mail` TEXT</code></div>
</blockquote>
<div class="line number7 index6 alt2">
<blockquote>
<code class="sql plain">);</code></blockquote>
<code class="sql plain"></code><b>veya</b></div>
</div>
</div>
</div>
“Database Structure” kısmında “Create Database” tıklayıp tablo
ismi(“TELEFON”) verdikten sonra tek, tek alanları
oluşturabilirsiniz(ilgili ekranda “<span style="color: maroon;">Add field</span>” butonu).<br />
database.db dosyamızın, Proje ile aynı klasörde olduğuna dikkat
etmeliyiz, çünkü “mainwindow.cpp” açılışında, ilgili dosyanın
bulunduğumuz dizinde(current directory) olduğunu belirteceğiz…<br />
Resimde görüldüğü gibi<br />
<a data-rel="lightbox-4" href="http://veblebi.com/wp-content/uploads/database-yol.jpg" title=""><img alt="database-yol" class="aligncenter wp-image-1403 size-full" height="434" src="https://veblebi.com/wp-content/uploads/database-yol.jpg" width="883" /></a><br />
<h2>
FORM ALANLARININ OLUŞTURULMASI “<span style="color: maroon;">mainwindow.ui</span>“</h2>
programda, “mainwindow.ui” tıklıyor ve açıyoruz, karşımıza tasarım(design) ekranı gelecek…<br />
İlk etap, sol bileşen menüsünden 1 adet “Widget” ekliyoruz, bu tüm
diğerleri için dış conteyner(container) olacak, böylece tüm diğer
elemanları derli toplu biçimde, dahili tutacağız.<br />
<a data-rel="lightbox-5" href="http://veblebi.com/wp-content/uploads/tasarim-ekrani.jpg" title=""><img alt="tasarim-ekrani" class="aligncenter wp-image-1404 size-large" height="483" src="https://veblebi.com/wp-content/uploads/tasarim-ekrani-1024x550.jpg" width="900" /></a><br />
İlgili alanların arka plan, font vb renkleri, kullanımına dair burada
detay vermeyeceğim, zira ekte vereceğim örnek projede ilgili alanlara
sağ tıklayıp, ilgili style kodlarını görebilirsiniz.<br />
<a data-rel="lightbox-6" href="http://veblebi.com/wp-content/uploads/style-islemleri.jpg" title=""><img alt="style-islemleri" class="aligncenter size-full wp-image-1405" height="767" src="https://veblebi.com/wp-content/uploads/style-islemleri.jpg" width="680" /></a><br />
Neyse<br />
text alanlarımız “Line Edit”, sırasıyla isimleri <span style="color: maroon;">txt_adsoyad, txt_tel, txt_cep ve txt_mail</span><br />
<h2>
“<span style="color: maroon;">mainwindow.cpp</span>” Asıl işi yaptığımız dosya</h2>
Girişte, “mydb” değişkenimizin bir database sınıfı olacağını ve “SQLITE” kullanacağımızı belirtiyoruz.<br />
İçinde bulunduğumuz dizini buluyoruz (<i><span style="color: maroon;">pwd = QDir::currentPath();</span></i>)<br />
böylece <span style="color: maroon;">database.db</span> dosyamıza bağlantı sağlıyoruz.<br />
<i><span style="color: maroon;">mydb.setDatabaseName(pwd);</span></i><br />
<blockquote class="tr_bq">
<div>
<div class="syntaxhighlighter cpp" id="highlighter_236022">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp preprocessor">#include "mainwindow.h"</code></div>
<div class="line number2 index1 alt1">
<code class="cpp preprocessor">#include "ui_mainwindow.h"</code></div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="cpp comments">// database</code></div>
<div class="line number5 index4 alt2">
<code class="cpp plain">QSqlDatabase mydb = QSqlDatabase::addDatabase(</code><code class="cpp string">"QSQLITE"</code><code class="cpp plain">);</code></div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
<code class="cpp plain">MainWindow::MainWindow(QWidget *parent) :</code></div>
<div class="line number8 index7 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QMainWindow(parent),</code></div>
<div class="line number9 index8 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui(</code><code class="cpp keyword bold">new</code> <code class="cpp plain">Ui::MainWindow)</code></div>
<div class="line number10 index9 alt1">
<code class="cpp plain">{</code></div>
<div class="line number11 index10 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->setupUi(</code><code class="cpp keyword bold">this</code><code class="cpp plain">);</code></div>
<div class="line number12 index11 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_id->hide();</code></div>
<div class="line number13 index12 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">// EKRANI KAPLA (!)</code></div>
<div class="line number14 index13 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QMainWindow::showMaximized();</code></div>
<div class="line number15 index14 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">// veritabani yol (current path)</code></div>
<div class="line number16 index15 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString pwd = </code><code class="cpp string">""</code><code class="cpp plain">;</code></div>
<div class="line number17 index16 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">pwd = QDir::currentPath();</code></div>
<div class="line number18 index17 alt1">
</div>
<div class="line number19 index18 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">pwd += </code><code class="cpp string">"/database.db"</code><code class="cpp plain">;</code></div>
<div class="line number20 index19 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">pwd.replace(</code><code class="cpp string">"\\"</code><code class="cpp plain">,</code><code class="cpp string">"/"</code><code class="cpp plain">);</code></div>
<div class="line number21 index20 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">mydb.setDatabaseName(pwd);</code></div>
<div class="line number22 index21 alt1">
</div>
<div class="line number23 index22 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QMessageBox msg;</code></div>
<div class="line number24 index23 alt1">
<code class="cpp spaces"> </code><code class="cpp comments">// BAGLANILAMAZSA HATA BILDIR</code></div>
<div class="line number25 index24 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(!mydb.open()) {</code></div>
<div class="line number26 index25 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setWindowTitle(</code><code class="cpp string">"Hata"</code><code class="cpp plain">);</code></div>
<div class="line number27 index26 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"Veritabanı Bağlantısı Yapılamadı."</code><code class="cpp plain">);</code></div>
<div class="line number28 index27 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setIcon(QMessageBox::Information);</code></div>
<div class="line number29 index28 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number30 index29 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">} </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div>
<div class="line number31 index30 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString sql = </code><code class="cpp string">"SELECT *FROM TELEFON"</code><code class="cpp plain">;</code></div>
<div class="line number32 index31 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">listele(sql);</code></div>
<div class="line number33 index32 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number34 index33 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_adsoyad->setFocus();</code></div>
<div class="line number35 index34 alt2">
<code class="cpp plain">}</code></div>
<div class="line number36 index35 alt1">
</div>
<div class="line number37 index36 alt2">
<code class="cpp comments">// TABLOYU SORGUYA GORE LISTELE (FONKSIYON)</code></div>
<div class="line number38 index37 alt1">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::listele(QString sql) {</code></div>
<div class="line number39 index38 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QSqlQuery query(mydb);</code></div>
<div class="line number40 index39 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QSqlQueryModel *model = </code><code class="cpp keyword bold">new</code> <code class="cpp plain">QSqlQueryModel();</code></div>
<div class="line number41 index40 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">//ui->txt_adsoyad->setText(sql);</code></div>
<div class="line number42 index41 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">query.exec(sql);</code></div>
<div class="line number43 index42 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">model->setQuery(query);</code></div>
<div class="line number44 index43 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->tbl_liste->setModel(model);</code></div>
<div class="line number45 index44 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->tbl_liste->hideColumn(0);</code></div>
<div class="line number46 index45 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->tbl_liste->setColumnWidth(1,200);</code></div>
<div class="line number47 index46 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->tbl_liste->setColumnWidth(4,140); </code><code class="cpp comments">// email alanı</code></div>
<div class="line number48 index47 alt1">
<code class="cpp plain">}</code></div>
<div class="line number49 index48 alt2">
</div>
<div class="line number50 index49 alt1">
<code class="cpp comments">// PENCERE GENISLERSE WIDGET ORTALA</code></div>
<div class="line number51 index50 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::resizeEvent(QResizeEvent *){</code></div>
<div class="line number52 index51 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QPoint ort = ( MainWindow::window()->rect().center() - ui->widget->rect().center());</code></div>
<div class="line number53 index52 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->widget->move(ort);</code></div>
<div class="line number54 index53 alt1">
<code class="cpp plain">}</code></div>
<div class="line number55 index54 alt2">
</div>
<div class="line number56 index55 alt1">
<code class="cpp plain">MainWindow::~MainWindow(){</code></div>
<div class="line number57 index56 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">delete</code> <code class="cpp plain">ui;</code></div>
<div class="line number58 index57 alt1">
<code class="cpp plain">}</code></div>
<div class="line number59 index58 alt2">
</div>
<div class="line number60 index59 alt1">
<code class="cpp comments">// KAYIT ISLEMLERI</code></div>
<div class="line number61 index60 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_btn_kaydet_clicked(){</code></div>
<div class="line number62 index61 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QMessageBox msg;</code></div>
<div class="line number63 index62 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString adsoyad = ui->txt_adsoyad->text().trimmed();</code></div>
<div class="line number64 index63 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">id = ui->txt_id->text().toInt();</code></div>
<div class="line number65 index64 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">//ui->txt_telefon->setText(QString::number(id));</code></div>
<div class="line number66 index65 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_adsoyad->setText(adsoyad);</code></div>
<div class="line number67 index66 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(adsoyad == </code><code class="cpp string">""</code><code class="cpp plain">) {</code></div>
<div class="line number68 index67 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"Ad Soyad Boş Bırakılamaz!"</code><code class="cpp plain">);</code></div>
<div class="line number69 index68 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number70 index69 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number71 index70 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div>
<div class="line number72 index71 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString telefon = ui->txt_telefon->text().trimmed();</code></div>
<div class="line number73 index72 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString cep = ui->txt_cep->text().trimmed();</code></div>
<div class="line number74 index73 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString mail = ui->txt_mail->text().trimmed();</code></div>
<div class="line number75 index74 alt2">
<code class="cpp spaces"> </code><code class="cpp comments">// guncelle</code></div>
<div class="line number76 index75 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(id > 0) {</code></div>
<div class="line number77 index76 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString sql = </code><code class="cpp string">"UPDATE TELEFON SET adsoyad='"</code><code class="cpp plain">+adsoyad+</code><code class="cpp string">"', "</code></div>
<div class="line number78 index77 alt1">
<code class="cpp spaces"> </code><code class="cpp string">"telefon='"</code> <code class="cpp plain">+ telefon + </code><code class="cpp string">"', cep='"</code><code class="cpp plain">+cep+</code><code class="cpp string">"', mail='"</code><code class="cpp plain">+mail+</code><code class="cpp string">"'"</code></div>
<div class="line number79 index78 alt2">
<code class="cpp spaces"> </code><code class="cpp string">" WHERE id="</code><code class="cpp plain">+QString::number(id);</code></div>
<div class="line number80 index79 alt1">
</div>
<div class="line number81 index80 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QSqlQuery query(mydb);</code></div>
<div class="line number82 index81 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">rc = query.exec(sql);</code></div>
<div class="line number83 index82 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(rc == </code><code class="cpp keyword bold">true</code><code class="cpp plain">) {</code></div>
<div class="line number84 index83 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setWindowTitle(</code><code class="cpp string">"İşlem Tamam"</code><code class="cpp plain">);</code></div>
<div class="line number85 index84 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"Güncellendi"</code><code class="cpp plain">);</code></div>
<div class="line number86 index85 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setIcon(QMessageBox::Information);</code></div>
<div class="line number87 index86 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number88 index87 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">sql = </code><code class="cpp string">"SELECT *FROM TELEFON"</code><code class="cpp plain">;</code></div>
<div class="line number89 index88 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">listele(sql);</code></div>
<div class="line number90 index89 alt1">
</div>
<div class="line number91 index90 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">} </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div>
<div class="line number92 index91 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setWindowTitle(</code><code class="cpp string">"Hata"</code><code class="cpp plain">);</code></div>
<div class="line number93 index92 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"HATA"</code><code class="cpp plain">+query.lastError().text());</code></div>
<div class="line number94 index93 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setIcon(QMessageBox::Warning);</code></div>
<div class="line number95 index94 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number96 index95 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number97 index96 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number98 index97 alt1">
<code class="cpp spaces"> </code><code class="cpp comments">//kaydet</code></div>
<div class="line number99 index98 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div>
<div class="line number100 index99 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString sql = </code><code class="cpp string">"INSERT INTO TELEFON VALUES(NULL,'"</code><code class="cpp plain">+adsoyad+</code><code class="cpp string">"','"</code><code class="cpp plain">+telefon+</code><code class="cpp string">"',"</code></div>
<div class="line number101 index100 alt2">
<code class="cpp spaces"> </code><code class="cpp string">"'"</code><code class="cpp plain">+cep+</code><code class="cpp string">"','"</code><code class="cpp plain">+mail+</code><code class="cpp string">"');"</code><code class="cpp plain">;</code></div>
<div class="line number102 index101 alt1">
</div>
<div class="line number103 index102 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QSqlQuery query(mydb);</code></div>
<div class="line number104 index103 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">rc = query.exec(sql);</code></div>
<div class="line number105 index104 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(rc == </code><code class="cpp keyword bold">true</code><code class="cpp plain">) {</code></div>
<div class="line number106 index105 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">sql = </code><code class="cpp string">"SELECT *FROM TELEFON"</code><code class="cpp plain">;</code></div>
<div class="line number107 index106 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">listele(sql);</code></div>
<div class="line number108 index107 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString son_id = query.lastInsertId().toString();</code></div>
<div class="line number109 index108 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_id->setText(son_id);</code></div>
<div class="line number110 index109 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setWindowTitle(</code><code class="cpp string">"İşlem Tamam"</code><code class="cpp plain">);</code></div>
<div class="line number111 index110 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"Kaydedildi"</code><code class="cpp plain">);</code></div>
<div class="line number112 index111 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setIcon(QMessageBox::Information);</code></div>
<div class="line number113 index112 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number114 index113 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">} </code><code class="cpp keyword bold">else</code> <code class="cpp plain">{</code></div>
<div class="line number115 index114 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setWindowTitle(</code><code class="cpp string">"Hata"</code><code class="cpp plain">);</code></div>
<div class="line number116 index115 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setText(</code><code class="cpp string">"HATA"</code><code class="cpp plain">+query.lastError().text());</code></div>
<div class="line number117 index116 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msg.setIcon(QMessageBox::Warning);</code></div>
<div class="line number118 index117 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msg.exec();</code></div>
<div class="line number119 index118 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number120 index119 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">} </code><code class="cpp comments">// guncelle - kaydet</code></div>
<div class="line number121 index120 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">} </code><code class="cpp comments">// else</code></div>
<div class="line number122 index121 alt1">
<code class="cpp plain">}</code></div>
<div class="line number123 index122 alt2">
</div>
<div class="line number124 index123 alt1">
<code class="cpp comments">//TABLE VIEW alanındaki içerikleri al ve kutulara yansıt</code></div>
<div class="line number125 index124 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_tbl_liste_doubleClicked(</code><code class="cpp keyword bold">const</code> <code class="cpp plain">QModelIndex &index){</code></div>
<div class="line number126 index125 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code> <code class="cpp plain">(index.isValid()) {</code></div>
<div class="line number127 index126 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString id = index.sibling(index.row(), 0).data().toString();</code></div>
<div class="line number128 index127 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString adsoyad = index.sibling(index.row(), 1).data().toString();</code></div>
<div class="line number129 index128 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString telefon = index.sibling(index.row(), 2).data().toString();</code></div>
<div class="line number130 index129 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString cep = index.sibling(index.row(), 3).data().toString();</code></div>
<div class="line number131 index130 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QString mail = index.sibling(index.row(), 4).data().toString();</code></div>
<div class="line number132 index131 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_id->setText(id);</code></div>
<div class="line number133 index132 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_adsoyad->setText(adsoyad);</code></div>
<div class="line number134 index133 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_telefon->setText(telefon);</code></div>
<div class="line number135 index134 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_cep->setText(cep);</code></div>
<div class="line number136 index135 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_mail->setText(mail);</code></div>
<div class="line number137 index136 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number138 index137 alt1">
<code class="cpp plain">}</code></div>
<div class="line number139 index138 alt2">
</div>
<div class="line number140 index139 alt1">
<code class="cpp comments">// YENI KAYIT TIKLANIRSA TUM TEXT ALANLARINI BOSALT</code></div>
<div class="line number141 index140 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_btn_yeni_clicked(){</code></div>
<div class="line number142 index141 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_id->setText(</code><code class="cpp string">""</code><code class="cpp plain">);</code></div>
<div class="line number143 index142 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_adsoyad->setText(</code><code class="cpp string">""</code><code class="cpp plain">);</code></div>
<div class="line number144 index143 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_telefon->setText(</code><code class="cpp string">""</code><code class="cpp plain">);</code></div>
<div class="line number145 index144 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_cep->setText(</code><code class="cpp string">""</code><code class="cpp plain">);</code></div>
<div class="line number146 index145 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_mail->setText(</code><code class="cpp string">""</code><code class="cpp plain">);</code></div>
<div class="line number147 index146 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">ui->txt_adsoyad->setFocus();</code></div>
<div class="line number148 index147 alt1">
<code class="cpp plain">}</code></div>
<div class="line number149 index148 alt2">
</div>
<div class="line number150 index149 alt1">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_btn_sil_clicked(){</code></div>
<div class="line number151 index150 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QMessageBox msgBox;</code></div>
<div class="line number152 index151 alt1">
</div>
<div class="line number153 index152 alt2">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">id = ui->txt_id->text().toInt();</code></div>
<div class="line number154 index153 alt1">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(id <1 ) {</code></div>
<div class="line number155 index154 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setWindowTitle(</code><code class="cpp string">"Hata"</code><code class="cpp plain">);</code></div>
<div class="line number156 index155 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setText(</code><code class="cpp string">"Kayıt Seçilmemiş."</code><code class="cpp plain">);</code></div>
<div class="line number157 index156 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setIcon(QMessageBox::Information);</code></div>
<div class="line number158 index157 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.exec();</code></div>
<div class="line number159 index158 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">return</code><code class="cpp plain">;</code></div>
<div class="line number160 index159 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number161 index160 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setWindowTitle(</code><code class="cpp string">"İşlemi Onayla"</code><code class="cpp plain">);</code></div>
<div class="line number162 index161 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setIcon(QMessageBox::Critical);</code></div>
<div class="line number163 index162 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setText(</code><code class="cpp string">"İşlemin geri dönüşü yoktur. Emin misiniz?"</code><code class="cpp plain">);</code></div>
<div class="line number164 index163 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);</code></div>
<div class="line number165 index164 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">msgBox.setDefaultButton(QMessageBox::Cancel);</code></div>
<div class="line number166 index165 alt1">
<code class="cpp spaces"> </code><code class="cpp color1 bold">int</code> <code class="cpp plain">ret = msgBox.exec();</code></div>
<div class="line number167 index166 alt2">
<code class="cpp spaces"> </code><code class="cpp keyword bold">if</code><code class="cpp plain">(ret == QMessageBox::Yes ) {</code></div>
<div class="line number168 index167 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString sql = </code><code class="cpp string">"DELETE FROM TELEFON WHERE id="</code><code class="cpp plain">+QString::number(id);</code></div>
<div class="line number169 index168 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">QSqlQuery query(mydb);</code></div>
<div class="line number170 index169 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">query.exec(sql);</code></div>
<div class="line number171 index170 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">on_btn_yeni_clicked();</code></div>
<div class="line number172 index171 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">sql = </code><code class="cpp string">"SELECT *FROM TELEFON"</code><code class="cpp plain">;</code></div>
<div class="line number173 index172 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">listele(sql);</code></div>
<div class="line number174 index173 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">}</code></div>
<div class="line number175 index174 alt2">
<code class="cpp plain">}</code></div>
<div class="line number176 index175 alt1">
</div>
<div class="line number177 index176 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_btn_sil_2_clicked(){</code></div>
<div class="line number178 index177 alt1">
<code class="cpp spaces"> </code><code class="cpp functions bold">exit</code><code class="cpp plain">(0);</code></div>
<div class="line number179 index178 alt2">
<code class="cpp plain">}</code></div>
<div class="line number180 index179 alt1">
</div>
<div class="line number181 index180 alt2">
<code class="cpp keyword bold">void</code> <code class="cpp plain">MainWindow::on_txt_ara_textChanged(</code><code class="cpp keyword bold">const</code> <code class="cpp plain">QString &arg1){</code></div>
<div class="line number182 index181 alt1">
<code class="cpp spaces"> </code><code class="cpp plain">QString sql = </code><code class="cpp string">"SELECT *FROM TELEFON WHERE adsoyad LIKE '%"</code><code class="cpp plain">+arg1+</code><code class="cpp string">"%'"</code><code class="cpp plain">;</code></div>
<div class="line number183 index182 alt2">
<code class="cpp spaces"> </code><code class="cpp plain">listele(sql);</code></div>
<div class="line number184 index183 alt1">
<code class="cpp plain">}</code></div>
</div>
</div>
</div>
</blockquote>
Aslında kodlardan da anlaşılacağı üzere<br />
ui->txt_adsoyad->setText(/* yeni icerik */);<br />
adsoyad kutusuna yeni içerik atamamızı sağlar.<br />
<div>
<div class="syntaxhighlighter cpp" id="highlighter_439627">
<table border="0" cellpadding="0" cellspacing="0"><tbody>
<tr><td class="gutter"><div class="line number1 index0 alt2">
1</div>
</td><td class="code"><div class="container">
<div class="line number1 index0 alt2">
<code class="cpp plain">ui->txt_adsoyad->text(</code><code class="cpp comments">/* kutudaki icerik */</code><code class="cpp plain">).trimmed();</code></div>
</div>
</td></tr>
</tbody></table>
</div>
</div>
<b><span style="color: maroon;">->text()</span></b> fonksiyonu ise, ilgili alanın <b><span style="color: maroon;">içeriğini</span> </b>almamızı sağlar, sonraki trimmed() fonksiyonu ise sağlı, sollu boşlukları kırpmamızı sağlar.<br />
önemli olan konuya değinmiş oldum, text kutusundan içerik almak veya
atamak. Bundan sonrası alınan içeriğin kontrolü ve elbette veritabanına
eklenmesi sorunudur.<br />
SQLITE Kullanımı da, <a href="http://veblebi.com/tag/mysql/" target="_blank" title="MYSQL ">MYSQL </a>kullanımı gibidir… Sorgu stringi(cümlesi) oluşturup, sonrasında bunu işlemek mantığına dayalı.<br />
örneğin yukarıdaki kodlara göre KAYIT kısmında, önce txt_id değerine
bakıyoruz, eğer “0” ise demek ki bu bir yeni kayıttır, değilse
güncellemedir. KAYDETME işlemi(MYSQL gibi)<br />
<blockquote class="tr_bq">
<div>
<div class="syntaxhighlighter cpp" id="highlighter_849709">
<div class="container">
<div class="line number1 index0 alt2">
<code class="cpp plain">QString sql = </code><code class="cpp string">"INSERT INTO TELEFON VALUES(NULL,'"</code><code class="cpp plain">+adsoyad+</code><code class="cpp string">"','"</code><code class="cpp plain">+telefon+</code><code class="cpp string">"',"</code></div>
<div class="line number2 index1 alt1">
<code class="cpp spaces"> </code><code class="cpp string">"'"</code><code class="cpp plain">+cep+</code><code class="cpp string">"','"</code><code class="cpp plain">+mail+</code><code class="cpp string">"');"</code><code class="cpp plain">;</code></div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="cpp plain">QSqlQuery query(mydb);</code></div>
<div class="line number5 index4 alt2">
<code class="cpp comments">// SORGUYU İŞLE</code></div>
<div class="line number6 index5 alt1">
<code class="cpp color1 bold">int</code> <code class="cpp plain">rc = query.exec(sql);</code></div>
</div>
</div>
</div>
</blockquote>
<h4>
DEBUG İŞLEMLERİ</h4>
RELEASE seçmek ve çıktı dizinini seçmek<br />
<a data-rel="lightbox-7" href="http://veblebi.com/wp-content/uploads/release-ve-klasor.jpg" title=""><img alt="release-ve-klasor" class="aligncenter size-full wp-image-1406" height="860" src="https://veblebi.com/wp-content/uploads/release-ve-klasor.jpg" width="969" /></a><br />
Böylece debug ve release dosyaları, projeminizin olduğu dizinde
olacak, bu işlemi yapmasaydık, projenin bir üstünde-dışında
oluşturacaktı…<br />
daha sonra sol aşağıdaki, Yeşil Play butonuna basıp derlemeyi yapıyoruz.<br />
Şimdi Release klasörü içinde <span style="color: maroon;">“.exe”</span> dosyamız oluşturuldu.<br />
Ancak eksikler var, birincisi <span style="color: red;">database.db dosyamız orada değil</span>, bir dış klasörden kopyalayıp, bu klasöre atıyoruz.<br />
<span style="color: red;">Fakat hala sorunlar bitmedi, “.dll”
dosyaları eksik hatası alıyoruz ve programımız çalışmıyor, o halde
ilgili “.dll” dosyalarını da bulup eklememiz gerekecek.</span><br />
peki hangi dosyalar bize gerekli?<br />
Kestirme bir yol olarak şu <b><span style="color: red;">programı</span> </b>tavsiye ediyorum;<br />
<b><span style="color: green;">Dependency Walker</span></b><br />
Buradan indiriyor ve kuruyoruz<br />
<a href="http://www.dependencywalker.com/" target="_blank">http://www.dependencywalker.com/</a><br />
programı çalıştırıp Release dosyasındaki “.exe” dosyamızı SEÇİYORUZ,
şimdi ekranda hangi “.dll” DOSYALARININ EKSİK OLDUĞUNU KIRMIZI YAZI
RENGİYLE GÖRÜYORUZ.<br />
<b><span style="color: #993300;">Peki gerekli dosyalar nerede?</span></b><br />
<b>QT programının bulunduğu dizini açıyoruz(bendeki aşağıdaki
gibi, QT ana klasör içinde versiyon klasörü içinde aşağıdaki dizine
geçiyoruz).</b><br />
<span style="color: blue;"><b><span style="color: green;"><span style="color: red;">C:\Qt\</span>5.6\mingw49_32\bin</span></b></span><br />
EKSK “.DLL” dosyalarını buluyor kopyalıyor ve release dosyamıza
yapıştırıyoruz. Aşağıdaki rResimde ilgili “.dll” dosyaları işaretlendi.<br />
<a data-rel="lightbox-8" href="http://veblebi.com/wp-content/uploads/release-ve-dll.jpg" title=""><img alt="release-ve-dll" class="aligncenter size-full wp-image-1407" height="662" src="https://veblebi.com/wp-content/uploads/release-ve-dll.jpg" width="635" /></a><br />
<b><span style="color: red;">EK, ÖRNEK PROJE</span></b><br />
<a href="http://veblebi.com/wp-content/uploads/TelefonDefteri.zip" target="_blank">TelefonDefteri </a>ilgili proje “Telefondefteri.pro”, QT programıyla açıyoruz..Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-802676890197785342017-05-13T23:06:00.000-07:002017-05-13T23:06:07.201-07:00PHP Startup: Illegal encoding ignored<em><a href="http://veblebi.com/tag/php/" title="PHP ">PHP </a>Warning: PHP Startup: Illegal encoding ignored: ” in Unknown on line 0</em><br />
Hatası ve çözümü<br />
<span style="color: maroon;"><strong>php.ini</strong></span> dosyasında, aşağıdaki bölümü bulup değiştirmeli..<br />
<strong>Bul(Find)</strong><br />
<pre>[exif]
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
exif.encode_unicode =
exif.decode_unicode_motorola =
exif.decode_unicode_intel =
exif.encode_jis =
exif.decode_jis_motorola =
exif.decode_jis_intel =</pre>
<strong>Değiştir(replace)</strong><br />
<pre>[exif]
; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS.
; With mbstring support this will automatically be converted into the encoding
; given by corresponding encode setting. When empty mbstring.internal_encoding
; is used. For the decode settings you can distinguish between motorola and
; intel byte order. A decode setting cannot be empty.
exif.encode_unicode = "UTF-8"
exif.decode_unicode_motorola = "UTF-8"
exif.decode_unicode_intel = "UTF-8"
exif.encode_jis = "UTF-8"
exif.decode_jis_motorola = "UTF-8"
exif.decode_jis_intel = "UTF-8"</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-3350593606717160052017-05-13T23:04:00.002-07:002017-05-13T23:06:20.632-07:00PHP Time & StrtotimeBu yazımda, daha önce <a href="http://www.veblebi.com/php-time-stamp/" target="_blank">şurada bahsetmiş olduğum</a>, time() işlemlerini, şimdi gün, hafta, ay ve yıl gibi çevirilerle ifade edeceğim. Diyelim ki veritabanımızda Bu Günün kayıtlarını, günün başlangıcından, o ana kadar almak istiyoruz…<br />
<h4>
Bugünün başlangıcını bulmak. </h4>
<blockquote class="tr_bq">
<div class="container">
<div class="line number1 index0 alt2">
<code class="php plain"><?php </code></div>
<div class="line number2 index1 alt1">
<code class="php variable">$bugun</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">);</code></div>
<div class="line number3 index2 alt2">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$bugun</code><code class="php plain">);</code></div>
<div class="line number4 index3 alt1">
<code class="php variable">$bugun</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp(); </code><code class="php comments">// 1445288078</code></div>
<div class="line number5 index4 alt2">
<code class="php plain">?></code></div>
</div>
</blockquote>
<h4>
<span style="font-weight: normal;">Yukarıdaki işlem sayesinde bu günkü tarihin ilk başlangıcı değeri
alınmış oldu(1445288078). Bu halde eğer veritabanımızda sorgu yapmak
isteseydik, demek ki veritabanımızdaki ilgili tarih bulduğumuz değere
eşit ve yüksek olan kayıtları çekmemiz gerekecekti. Kısaca
veritabanımızdaki alan adı, “db_tarih” olsun, bu halde sorgu kısımı</span></h4>
<span style="color: teal;">” WHERE db_tarih>=$bugun”</span><br />
şeklinde olacaktı.<br />
Peki 1 gün önceki kayıtları getirme isteseydik, bu halde sorgu
mantığı, dün satarttan büyük ve eşit, bugün starttan küçük olan kayıtlar
olacaktı(between yöntemi de kullanılabilir, ben anlaşılması için büyük,
küçük işaretli kullanımına değiniyorum).,<br />
<h4>
Dün’ün başlangıcını bulmak</h4>
<div class="container">
<blockquote class="tr_bq">
<div class="line number1 index0 alt2">
<code class="php variable">$bugun</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">(</code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">);</code></div>
<div class="line number2 index1 alt1">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$start</code><code class="php plain">);</code></div>
<div class="line number3 index2 alt2">
<code class="php variable">$bugun</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp(); </code><code class="php comments">// 1445288078</code></div>
<div class="line number4 index3 alt1">
<code class="php variable">$dun</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">( </code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">, </code><code class="php functions">strtotime</code> <code class="php plain">( </code><code class="php string">'-1 day'</code> <code class="php plain">. </code><code class="php variable">$start</code> <code class="php plain">) );</code></div>
<div class="line number5 index4 alt2">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$dun</code><code class="php plain">);</code></div>
<div class="line number6 index5 alt1">
<code class="php variable">$dun</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp();</code></div>
</blockquote>
İşte hem dün zaman başlangıç değerini hem de bu günün başlangıç değerini almış olduk. Bu halde sorgu yapacak olsaydık
<span style="color: teal;">” WHERE db_tarih>=$dun AND db_tarih<$bugun”</span><br />
olacaktı. Yukarıda görüldüğü gibi strtotime ve -1 gün kullandık. Hafta, ay ve yıl için ise aşağıdaki gibi kullanabiliriz. <br />
<div class="container">
<blockquote class="tr_bq">
<div class="line number1 index0 alt2" style="text-align: left;">
<code class="php comments">// hafta</code></div>
<div class="line number2 index1 alt1" style="text-align: left;">
<code class="php variable">$hafta</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">( </code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">, </code><code class="php functions">strtotime</code> <code class="php plain">( </code><code class="php string">'-1 week'</code> <code class="php plain">. </code><code class="php variable">$start</code> <code class="php plain">) );</code></div>
<div class="line number3 index2 alt2" style="text-align: left;">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$hafta</code><code class="php plain">);</code></div>
<div class="line number4 index3 alt1" style="text-align: left;">
<code class="php variable">$hafta</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp();</code></div>
<div class="line number5 index4 alt2" style="text-align: left;">
</div>
<div class="line number6 index5 alt1" style="text-align: left;">
<code class="php comments">// ay</code></div>
<div class="line number7 index6 alt2" style="text-align: left;">
<code class="php variable">$ay</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">( </code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">, </code><code class="php functions">strtotime</code> <code class="php plain">( </code><code class="php string">'-1 month'</code> <code class="php plain">. </code><code class="php variable">$start</code> <code class="php plain">) );</code></div>
<div class="line number8 index7 alt1" style="text-align: left;">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$ay</code><code class="php plain">);</code></div>
<div class="line number9 index8 alt2" style="text-align: left;">
<code class="php variable">$ay</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp();</code></div>
<div class="line number10 index9 alt1" style="text-align: left;">
</div>
<div class="line number11 index10 alt2" style="text-align: left;">
<code class="php comments">// yil</code></div>
<div class="line number12 index11 alt1" style="text-align: left;">
<code class="php variable">$yil</code> <code class="php plain">= </code><code class="php functions">date</code><code class="php plain">( </code><code class="php string">'Y-m-d 00:00:00'</code><code class="php plain">, </code><code class="php functions">strtotime</code> <code class="php plain">( </code><code class="php string">'-1 year'</code> <code class="php plain">. </code><code class="php variable">$start</code> <code class="php plain">) );</code></div>
<div class="line number13 index12 alt2" style="text-align: left;">
<code class="php variable">$gdate</code> <code class="php plain">= </code><code class="php keyword">new</code> <code class="php plain">DateTime(</code><code class="php variable">$yil</code><code class="php plain">);</code></div>
<div class="line number14 index13 alt1" style="text-align: left;">
<code class="php variable">$yil</code> <code class="php plain">= </code><code class="php variable">$gdate</code><code class="php plain">->getTimestamp();</code></div>
</blockquote>
<div class="line number14 index13 alt1">
<code class="php plain"></code>Önceki yazımdaki yöntemle, gün, dün, hafta, ay ve yıl kullanımına örnek vermiş oldum.</div>
<div class="line number14 index13 alt1">
Dilerseniz “-3 day” ile evvel 3 günü “-3 week” ile evvel 3 haftayı ve
ay ve yıl içinde yine ” – ” ve rakam belirterek geçmiş herhangi bir ay
ve yılı bulabilirsiniz.<code class="php plain"></code></div>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-18163509487278586782017-05-13T23:00:00.002-07:002017-05-13T23:00:27.903-07:00String URL EncodeJQUERY’de POST ve GET işlemleri ve özel karakterleri URL biçimine
çevirmek için, serialize() fonksiyonunu kullanırız, tek bir string alan
için ise bu fonksiyon hata verecektir çünkü obje içermemektedir(name ve
value değerli).<br />
<b>Çözüm 1</b>,<span style="color: red;"><b> encodeURIComponent</b> </span>kullanmak.<br />
<blockquote>
<div class="container">
<div class="line number1 index0 alt2">
<code class="js keyword">var</code> <code class="js plain">rCRLF = /\r?\n/g;</code></div>
<div class="line number2 index1 alt1">
<code class="js plain">$(</code><code class="js string">'#sortable li'</code><code class="js plain">).each(</code><code class="js keyword">function</code><code class="js plain">() {</code></div>
<div class="line number3 index2 alt2">
<code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">elm = $(</code><code class="js keyword">this</code><code class="js plain">);</code></div>
<div class="line number4 index3 alt1">
<code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">name = elm.children(</code><code class="js string">'img'</code><code class="js plain">).attr(</code><code class="js string">'title'</code><code class="js plain">);</code></div>
<div class="line number5 index4 alt2">
<code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">src = elm.children(</code><code class="js string">'.galeri_src'</code><code class="js plain">).attr(</code><code class="js string">'data-v'</code><code class="js plain">);</code></div>
<div class="line number6 index5 alt1">
<code class="js spaces"> </code><code class="js comments">//name.ht</code></div>
<div class="line number7 index6 alt2">
<code class="js spaces"> </code><code class="js plain">src.replace( rCRLF, </code><code class="js string">"\r\n"</code> <code class="js plain">);</code></div>
<div class="line number8 index7 alt1">
<code class="js spaces"> </code><code class="js plain">src = encodeURIComponent(src);</code></div>
<div class="line number9 index8 alt2">
<code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">fd = </code><code class="js string">"name="</code><code class="js plain">+name+</code><code class="js string">"&galeri_resim="</code><code class="js plain">+src;</code></div>
<div class="line number10 index9 alt1">
<code class="js spaces"> </code><code class="js comments">// ajax</code></div>
<div class="line number11 index10 alt2">
<code class="js spaces"> </code><code class="js plain">$.ajax({</code></div>
<div class="line number12 index11 alt1">
<code class="js spaces"> </code><code class="js plain">url: post_url,</code></div>
<div class="line number13 index12 alt2">
<code class="js spaces"> </code><code class="js plain">type: </code><code class="js string">"POST"</code><code class="js plain">,</code></div>
<div class="line number14 index13 alt1">
<code class="js spaces"> </code><code class="js plain">data: fd,</code></div>
<div class="line number15 index14 alt2">
<code class="js spaces"> </code><code class="js plain">}).done(</code><code class="js keyword">function</code><code class="js plain">( c ) {</code></div>
<div class="line number16 index15 alt1">
<code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">(c != 0) {</code></div>
<div class="line number17 index16 alt2">
<code class="js spaces"> </code><code class="js plain">console.log( c ); </code></div>
<div class="line number18 index17 alt1">
<code class="js spaces"> </code><code class="js plain">}</code></div>
<div class="line number19 index18 alt2">
<code class="js spaces"> </code><code class="js plain">});</code></div>
<div class="line number20 index19 alt1">
</div>
<div class="line number21 index20 alt2">
<code class="js plain">});</code></div>
</div>
</blockquote>
Yukarıdaki örneğimiz AJAX POST işlemi ile, Galeri alanına girilen <b>çok</b> sayıda Resimin kaydedilmesi işlemini yansıtan bir karedir. Bu halde resimin kaynak kodlarını okuyarak <a href="http://veblebi.com/tag/resim/" title="resim ">resim </a>kutusu
içerisine “img” olarak ekliyor(aşağıdaki resim), “src” kısmına
alıyoruz, böylelikle seçilen resimle görüntü olarak karşımıza çıkıyor ve
kaynak kodları da “src” alanında oluyor.<br />
<br />
<br />
<a data-rel="lightbox-0" href="https://www.veblebi.com/wp-content/uploads/galeri-resim.jpg" target="_blank" title=""><img alt="galeri-resim" class="aligncenter size-full wp-image-1338" height="230" src="https://www.veblebi.com/wp-content/uploads/galeri-resim.jpg" width="924" /></a><br />
Resimin kaynak kodlarında ise bazı sorunlu karakterler olacaktır(=?/)… İşte bunların çevrilmesi gerekir. “<b>encodeURIComponent” </b>fonksiyonu ise tek satırla bu işlemi gerçekleştirir. Yani “<b>urlencode</b>“, olumsuz etkilere sebep olacak karakterleri çevirir.<br />
Örneğin<br />
<b>?</b> -> %3F<br />
<b>/</b> -> %2F<br />
<b>=</b> -> %3D<br />
gibi..<br />
Ajax ile GET, POST metoduyla veri yolluyoruz<br />
Resim kaynak kodlarını “FileReader” ile okuduk.<br />
var kaynak = oFREvent.target.result;<br />
komutu ile aldık. Resim kaynağımız;<br />
<b>“data:image<span style="color: red;">/</span>jpeg;base64,<span style="color: red;">/</span>9j<span style="color: red;">/</span>4AAQSkZJRgABAgAAAQABAAD<span style="color: red;">/</span>…”</b><br />
Şeklinde başlar ve kırmızı ile işaretlediğim gibi bazı özel karakterler barındırır. Bu kaynağı POST üzerinden bir <a href="http://veblebi.com/tag/php/" title="PHP ">PHP </a>dosyasına
gönderdiğimizi düşünür ve kaynağı alıp bir resim dosyası olarak
kaydedersek, yükseklik ve genişlikte sorun olmadığı halde, simsiyah bir
resimle karşılaşırız(kısaca resim doğru olarak kaydedilememiştir). İşte
buna sebep olan işlenmemiş/filtrelenmemiş kaynaktır.<br />
Çözüm ise bu yazının başında ve ayrıca kullandığımız yöntem (each
döngüsü ile) çok sayıda ve yüksek limtilerde içerik göndermemizi de
sağladı. 10 Resimi <a href="http://veblebi.com/tag/html/" title="HTML ">HTML </a>form
üzerinden gönderseydik ve atıyorum POST Limit 2 MB ile sınırlı olsaydı,
gönderdiğimiz resimler ise 2 MB üzeri olsa idi, işlemi
gerçekleştiremeyecektik. <a href="http://veblebi.com/tag/javascript/" title="Javascript ">Javascript </a>ile, resimleri döngü içerisine alarak, birer, birer yollamak ise bu konuda ayrıca çözüm sunmuş oluyor. <br />
<b>JQUEY ile yapmış olsaydık?</b> O halde “.param” kullanabilirdik;<br />
örneğimize göre değiştirirsek;<br />
<b>Çözüm 2 </b><br />
<blockquote class="tr_bq">
<div class="container">
<div class="line number1 index0 alt2">
<code class="js keyword">var</code> <code class="js plain">params = { name:name, galeri_resim:src};</code></div>
<div class="line number2 index1 alt1">
<code class="js keyword">var</code> <code class="js plain">fd = jQuery.param( params );</code></div>
<div class="line number3 index2 alt2">
<code class="js comments">//name="img_name"&src="data"</code></div>
<div class="line number4 index3 alt1">
<code class="js comments">// olurdu...</code></div>
</div>
</blockquote>
<b><span style="color: red;">“encodeURIComponent” </span></b>ve <b><span style="color: red;">“param”</span></b> ikisi de geçerli.<br />
<br />
<a href="http://veblebi.com/string-url-encode/" target="_blank">http://veblebi.com/string-url-encode/ </a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-53423899973066082442016-04-30T12:43:00.000-07:002016-04-30T12:50:30.192-07:00 Ratione Responsive WordPress Teması<img alt="ratione-screen" class="aligncenter wp-image-1287 size-full" src="http://www.veblebi.com/wp-content/uploads/ratione-screen.png" height="450" style="border: 1px solid #ddd; width: 100%;" width="600" /><br />
<h4>
<b>Özellikler:</b></h4>
<ul>
<li>Tema ayarları</li>
<li>Extra widget alanı (toplam:12)</li>
<li>Tema dahili sayfalandırma</li>
<li>Yazılarda etiketler, 1 defa geçmek koşuluyla, <b>otomatik olarak linke</b> dönüştürülür.</li>
<li>Kısakodlar(Shortcodes)</li>
<li>Editor -> Yazı Tipi, Yazı Boyutu, Yazı Arka Plan renklendirme, Table, Gülücükler</li>
<li>Tema ayrlarlarından, temaya zarar vermeden alt sayfa içeriği ve
copyright düzenlemesi yapılabilir. HTML, arama motorlarınca verilenler
kodlar da eklenebilir.</li>
</ul>
<i>For English</i><br />
<b>Features:</b><br />
<ul>
<li>Theme options</li>
<li>Extra widget-ready areas (12 in total)</li>
<li>Theme page navi</li>
<li><b>Auto link tags</b> in post content</li>
<li>Shortcodes</li>
<li><span class="" id="result_box" lang="en"><span class="hps">Editor –</span>> <span class="hps">Font,</span> <span class="hps">Font Size</span>, Highlight<span class="hps">,</span> <span class="hps">Table,</span> S<span class="hps">miles</span></span></li>
<li>Editable footer text-remove the theme credit without harming the theme</li>
</ul>
<ul>
</ul>
<a href="http://templates.veblebi.com/ratione/" target="_blank" title="Önizle">Preview – Önizle</a> – <a href="http://store.veblebi.com/item/Ratione-100-7" target="_blank">Download – İndir</a><br />
<br />
<a href="http://themecheck.org/score/wordpress_theme_ratione.html" target="_blank">Theme check</a> - <a href="http://validator.w3.org/check?uri=http%3A%2F%2Ftemplates.veblebi.com%2Fratione%2F" target="_blank" title="Check W3">Check W3C Markup</a><br />
<div class="gallery galleryid-1286 gallery-columns-4 gallery-size-thumbnail" id="gallery-1">
<br />
<br />
<figure class="gallery-item">
<div class="gallery-icon landscape">
<a href="http://www.veblebi.com/wp-content/uploads/ratione-customize.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="ratione-customize" class="attachment-thumbnail size-thumbnail" src="http://www.veblebi.com/wp-content/uploads/ratione-customize-150x150.jpg" height="150" width="150" /></a>
</div>
</figure><figure class="gallery-item">
<div class="gallery-icon landscape">
<a href="http://www.veblebi.com/wp-content/uploads/ratione-editor.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="ratione-editor" class="attachment-thumbnail size-thumbnail" src="http://www.veblebi.com/wp-content/uploads/ratione-editor-150x150.png" height="150" width="150" /></a>
</div>
</figure><figure class="gallery-item">
<div class="gallery-icon landscape">
<a href="http://www.veblebi.com/wp-content/uploads/ratione-html.png" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img alt="ratione-html" class="attachment-thumbnail size-thumbnail" src="http://www.veblebi.com/wp-content/uploads/ratione-html-150x150.png" height="150" width="150" /></a>
</div>
</figure><figure class="gallery-item">
<div class="gallery-icon landscape">
<a href="http://www.veblebi.com/wp-content/uploads/ratione-shortcodes.png" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="ratione-shortcodes" class="attachment-thumbnail size-thumbnail" src="http://www.veblebi.com/wp-content/uploads/ratione-shortcodes-150x150.png" height="150" width="150" /></a>
</div>
</figure>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-18135514666903558462016-04-30T12:39:00.004-07:002016-04-30T12:39:44.622-07:00 JQUERY-JSON Category Select<div style="text-align: center;">
<a href="http://www.veblebi.com/wp-content/uploads/categories-json.jpg"><img alt="categories-json" class="aligncenter size-full wp-image-1360" src="http://www.veblebi.com/wp-content/uploads/categories-json.jpg" height="190" width="400" /></a> </div>
Ana
ve Alt kategori sorgularında, her defasında sunucu ve veritabanından
sorgu çekmektense, bir defada kategori ve alt kategorileri JSON formatında alıp, JQUERY ile basit bir sorgu-eşleştirme işlemi kullanabiliriz.<br />
<br />
<div style="text-align: center;">
<a href="http://www.veblebi.com/demolar/json-categories/" target="_blank">DEMO</a> <a href="http://www.veblebi.com/demolar/json-categories/JSON-CATEGORIES.zip" target="_blank">İNDİR(DOWNLOAD)</a></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-46021542475409532932016-04-30T12:35:00.001-07:002016-04-30T12:36:24.155-07:00WordPress Xmlrpc.php Atak Engelleme<img alt="Attacks-WordPress-XMLRPC-2015" class="size-full wp-image-1367 aligncenter" height="562" src="http://www.veblebi.com/wp-content/uploads/Attacks-WordPress-XMLRPC-2015.jpg" width="1004" /> <br /><br />
2015 den bugüne “xmlrpc.php” dosyası üzerinden gittikçe artan sayıda saldırılara maruz kalınan wordpress sitelerinde, ataklardan korunmak için;<br /><br />
<br /><br />
<a href="http://www.veblebi.com/wordpress-xmlrpc-php-atak-engelleme/">WordPress Xmlrpc.php Atak Engelleme</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-69270111158484847322015-10-19T16:20:00.001-07:002015-10-19T16:20:15.713-07:00PHP Time & SrtotimeBu yazımda, daha önce <a data-mce-href="http://www.veblebi.com/php-time-stamp/" href="http://www.veblebi.com/php-time-stamp/" target="_blank">şurada bahsetmiş olduğum</a>, time() işlemlerini, şimdi gün, hafta, ay ve yıl gibi çevirilerle ifade edeceğim.<br />
Diyelim ki veritabanımızda Bu Günün kayıtlarını, günün başlangıcından, o ana kadar almak istiyoruz...<br />
<h4>
Bugünün başlangıcını bulmak.</h4>
<pre class="brush:php"><?php
$bugun = date('Y-m-d 00:00:00');
$gdate = new DateTime($start);
$bugun = $gdate->getTimestamp(); // 1445288078
?>
</pre>
Yukarıdaki işlem sayesinde bu günkü tarihin ilk başlangıcı
değeri alınmış oldu(1445288078). Bu halde eğer veritabanımızda sorgu
yapmak isteseydik, demek ki veritabanımızdaki ilgili tarih bulduğumuz
değere eşit ve yüksek olan kayıtları çekmemiz gerekecekti. Kısaca
veritabanımızdaki alan adı, "db_tarih" olsun, bu halde sorgu kısımı<br />
<span data-mce-style="color: #008080;" style="color: teal;">" WHERE db_tarih>=$bugun"</span><br />
şeklinde olacaktı.<br />
Peki
1 gün önceki kayıtları getirme isteseydik, bu halde sorgu mantığı, dün
satarttan büyük ve eşit, bugün starttan küçük olan kayıtlar
olacaktı(between yöntemi de kullanılabilir, ben anlaşılması için büyük,
küçük işaretli kullanımına değiniyorum).,<br />
<h4>
Dün'ün başlangıcını bulmak</h4>
<pre class="brush:php">$bugun = date('Y-m-d 00:00:00');
$gdate = new DateTime($start);
$bugun = $gdate->getTimestamp(); // 1445288078
$dun = date( 'Y-m-d 00:00:00', strtotime ( '-1 day' . $start ) );
$gdate = new DateTime($dun);
$dun = $gdate->getTimestamp();</pre>
İşte hem dün zaman başlangıç değerini hem de bu günün başlangıç değerini almış olduk. Bu halde sorgu yapacak olsaydık<br />
<span data-mce-style="color: #008080;" style="color: teal;">" WHERE db_tarih>=$dun AND db_tarih<$bugun"</span><br />
olacaktı. Yukarıda görüldüğü gibi strtotime ve -1 gün kullandık. Hafta, ay ve yıl için ise aşağıdaki gibi kullanabiliriz.<br />
<pre class="brush:php">// hafta
$hafta = date( 'Y-m-d 00:00:00', strtotime ( '-1 week' . $start ) );
$gdate = new DateTime($hafta);
$hafta = $gdate->getTimestamp();
// ay
$ay = date( 'Y-m-d 00:00:00', strtotime ( '-1 month' . $start ) );
$gdate = new DateTime($ay);
$ay = $gdate->getTimestamp();
// yil
$yil = date( 'Y-m-d 00:00:00', strtotime ( '-1 year' . $start ) );
$gdate = new DateTime($yil);
$yil = $gdate->getTimestamp();</pre>
Önceki yazımdaki yöntemle, gün, dün, hafta, ay ve yıl kullanımına örnek vermiş oldum.<br />
Dilerseniz
"-3 day" ile evvel 3 günü "-3 week" ile evvel 3 haftayı ve ay ve yıl
içinde yine " - " ve rakam belirterek geçmiş herhangi bir ay ve yılı
bulabilirsiniz.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-87930871643615713232014-12-27T19:24:00.000-08:002014-12-27T19:24:58.292-08:00Veblebi Responsive WordPress Teması<h2>
Veblebi Responsive Wordpress Blog Theme</h2>
Şu an sitede de kullanmakta olduğum tema.<br />
<br />
<h4>
<b><span data-mce-style="color: #ff6600;" style="color: #ff6600;">Özellikler:</span></b></h4>
<ul>
<li>Tema ayarları</li>
<li>Extra widget alanı (toplam:11)</li>
<li>Tema dahili sayfalandırma</li>
<li>Yazılarda etiketler, 1 defa geçmek koşuluyla, <b>otomatik olarak linke</b> dönüştürülür.</li>
<li>Tema<br />
ayrlarlarından, temaya zarar vermeden alt sayfa içeriği ve copyright <br />
düzenlemesi yapılabilir. HTML, arama motorlarınca verilenler kodlar da <br />
eklenebilir.</li>
</ul>
<i>For English</i><br />
<br />
<b><span data-mce-style="color: #ff6600;" style="color: #ff6600;">Features:</span></b><br />
<br />
<ul>
<li>Theme options</li>
<li>Extra widget-ready areas (11 in total)</li>
<li>Theme page navi</li>
<li><b>Auto link tags</b> in post content</li>
<li>Editable footer text-remove the theme credit without harming the theme</li>
</ul>
<a class="btn btn-success" data-mce-href="http://templates.veblebi.com/veblebi/" href="http://templates.veblebi.com/veblebi/" target="_blank" title="Önizle">Preview - Önizle</a> <a class="btn btn-danger" data-mce-href="http://www.veblebi.com/wp-content/uploads/veblebi.zip" href="http://www.veblebi.com/wp-content/uploads/veblebi.zip">Download - İndir</a><br />
<br />
<img alt="screenshot" class="aligncenter size-full wp-image-1253" data-mce-src="http://www.veblebi.com/wp-content/uploads/screenshot.jpg" src="http://www.veblebi.com/wp-content/uploads/screenshot.jpg" height="489" width="640" />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-24866187932695278682014-01-07T23:41:00.001-08:002015-10-19T16:24:04.549-07:00simplexml_load_string Döviz Kuru Almak<a href="http://www.veblebi.com/simplexml_load_string-doviz-kuru-almak/" target="_blank">Bu örneğimizde, simplexml_load_string yöntemini kullanarak TCMB, XML kaynağı üzerinden döviz kurlarını alıyoruz. Önce doviz bilgilerini alacak ve işleyecek olan fonksiyonumuzu yazalım.</a><br />
<br />
kodlar.<br />
doviz.php<br />
<br />
<span style="color: #666666; font-size: x-small;"><?php</span><br />
<span style="color: #666666; font-size: x-small;">date_default_timezone_set('Europe/Istanbul');</span><br />
<span style="color: #666666; font-size: x-small;">function modul_doviz() {</span><br />
<span style="color: #666666; font-size: x-small;">$saat = date('Hi',time());</span><br />
<span style="color: #666666; font-size: x-small;">// URL VE YOLLAR</span><br />
<span style="font-size: x-small;"><span style="color: #666666;">$dir = str_replace('\\','/', pathinfo(__FILE__, PATHINFO_DIRNAME ) ).'/';</span></span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span style="color: #666666; font-size: x-small;"> </span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// doviz XML Yolu</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$d_url = 'http://tcmb.gov.tr/kurlar/today.xml';</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$ctx=stream_context_create(array('http'=></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>array(</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>'timeout' => 3 // 3 saniye</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>)</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>));</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// Lokal XML dosya yolumuz</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$file_xml = $dir.'doviz.xml';</span><br />
<span style="color: #666666;"><span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// XML dosyasi olusturma veya yazma</span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if( !file_exists( $file_xml ) ) {</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> $al = file_get_contents($d_url,false,$ctx);</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> file_put_contents($file_xml,$al); // dosya yoktu olusuturldu</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="color: #666666;"><span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$al = file_get_contents($file_xml);</span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj = (object) null; // nesne degiskeni olusturuyoruz</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// dunku tarihi buluyoruz</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$szaman = date('d.m.Y', time()-86400);</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$gun = date('w'); // haftanin hangi gununde oldugumuzu buluyoruz</span><br />
<span class="Apple-tab-span" style="white-space: pre;"><span style="color: #666666; font-size: x-small;"> </span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$xml = simplexml_load_string($al); // dosyamizi okuyoruz</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->zaman = $xml->attributes()->Tarih; // dosyamizda kur tarihini okuyoruz</span><br />
<span style="color: #666666;"><span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// eger gunlerden cumartesi ve pazar degilse</span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if( $gun != 0 AND $gun != 6 ) {</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>// ve eger xml dosyamizin tarihi dune esit degil ve saat 15:30 - 16:00 arasi ise</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if( $obj->zaman != $szaman OR ($saat < 1600 && $saat > 1530 ) ) {</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> $al = file_get_contents($d_url,false,$ctx);</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> file_put_contents($file_xml,$al);</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> $xml = simplexml_load_string($al);</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span> $obj->zaman = $xml->attributes()->Tarih;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br />
<span style="color: #666666;"><span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->dolar_alis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[0]->ForexBuying;</span></span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->dolar_satis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[0]->ForexSelling;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->euro_alis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[11]->ForexBuying;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->euro_satis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[11]->ForexSelling;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->frank_alis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[5]->ForexBuying;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>$obj->frank_satis<span class="Apple-tab-span" style="white-space: pre;"> </span>= $xml->Currency[5]->ForexSelling;</span><br />
<span style="color: #666666; font-size: x-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>return $obj;</span><br />
<span style="color: #666666; font-size: x-small;">}</span><br />
<span style="color: #666666;"><span style="font-size: x-small;"><br /></span>
<span style="font-size: x-small;">include $dir.'doviz.tmp.php';</span></span><br />
<div>
<br /></div>
<br />
Bundan sonrası artık Temamızda ( <b><?php $obj = modul_doviz()?></b> ) fonksiyonu çağırmaktır.<br />
<br />
Örneğimizde ayrıca array değişken yerine $obj değişkeni üzerinden, nesne(object) değişken kullanımına da örnek vermiş oldum.<br />
<br />
Tema dosyası içeriğini buraya almayacağım, zira vereceğim örnekte tema dosyaı olacağı gibi, indireceğiniz örnek dosya at->çalışsın biçimindedir.<br />
<br />
<br />
<a href="http://www.veblebi.com/demolar/dovizkuru/doviz.php/">Demoyu incelemek için tıklayın</a> <a href="http://www.veblebi.com/demolar/dovizkuru/dovizkuru.zip">Uygulamayı indirmek için tıklayın</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-1109796922069421482012-10-27T10:35:00.003-07:002015-10-19T16:24:50.591-07:00PHP SimpleXML - Youtube XML Feed<a href="http://www.veblebi.com/wp-content/uploads/xmlfeedyoutube-300x194.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://www.veblebi.com/wp-content/uploads/xmlfeedyoutube-300x194.jpg" /></a><br />
PHP <b>simplexml_load_file </b>fonksiyonu ile, örnek olarak Youtube’da video arama ve görüntüleme scripti..<br /><br />Arama kutusuna anahtar kelimelerimizi giriyor ve ara butonu ile arıyoruz. Listede video resimlerine tıklayarak videoları izleyebiliyoruz..<br />Ayrıca, videoları izlenme oranı, oylama oranı, eklenme zamanı ve sayfa başına video adedi seçenekleriyle listeleyebiliyoruz. <a href="http://www.veblebi.com/php-simplexml-youtube-xml-feed/" target="_blank">Yazının Devamı..</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-70593313649448719662012-10-24T14:52:00.005-07:002015-10-19T16:25:28.134-07:00Wordpress V_Pure Teması<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.veblebi.com/wp-content/uploads/v_pure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.veblebi.com/wp-content/uploads/v_pure.png" width="190" /></a></div>
Wordpress V_Pure Teması<br />
<br />
Temada toplam 12 Widget alanı mevcut. Header(üst), Sidebar, Ana sayfa menü altına 2 adet(sadece Ana sayfa da görünürler), içerik üstüne ve altına 2 şer adet ve alt bölüme(footer) 4 kutu biçiminde….<br />
Ana Sayfa alanlarının ikisi birlikte kullanılırsa görünüm yanyana 2 kutu halinde olurken, sadece birisi kullanılırsa görünüm tek bir kutu halinde olacaktır... [..] <a href="http://www.veblebi.com/veblebi-sade-temasi/" target="_blank">Detaylar</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-44242461117181021642012-07-18T03:16:00.002-07:002015-10-19T16:25:12.903-07:00JQUERY Form Kontrolü<br />
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding: 0px; text-align: justify;">
<span style="background-color: white;">Daha Önce basit bir şekilde, JQUERY ile PHP veri gönderme, alma işlemine değinmiştim..</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding: 0px; text-align: justify;">
<span style="background-color: white;">Şimdi ise, form verilerini JQUERY ile kontrol edeceğiz ve text kutuları boş ise, kırmızı oklarla belirtecek ve işlem yapmayacağız. Eğer kutular dolu ise PHP dosyamıza verileri gönderecek ve cevabı alacağız…</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding: 0px; text-align: justify;">
<span style="background-color: white;">Örnek Uygulamayı <a href="http://www.veblebi.com/demolar/loginform/login.html" style="color: #376c76; margin: 0px; padding: 0px; text-decoration: none;" target="_blank">Buradan İnceleyebilirsiniz</a>..</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding: 0px; text-align: justify;">
<span style="background-color: white;">Örneği <a href="http://www.veblebi.com/wp-content/uploads/loginform1.zip" style="color: #376c76; margin: 0px; padding: 0px; text-decoration: none;" target="_blank">buradan indirebilirsiniz</a>..</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding: 0px; text-align: justify;">
<span style="background-color: white;"><a href="http://www.veblebi.com/tag/jquery/" target="_blank">Yazının Devamını buradan okuyabilirsiniz.</a></span></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-52368124448813903782011-11-06T10:08:00.000-08:002012-07-18T03:13:33.411-07:00JQUERY İLE BASİT BİR LOGİN FORMULogin formumuzda, kullanıcı Giriş butonuna bastığında girilen bilgileri PHP dosyamıza gönderip, değerleri kontrol ediyoruz. Bu işlem boyunca ekrana "Veriler Kontrol Ediliyor Lütfen Bekleyiniz..." mesajı veriyoruz. Tabi bu mesajımızı ekranı tamamen karartan bir efektle(fade) yapıyoruz ve PHP dosyası ile alışveriş bittikten sonra eğer giriş başarılı ise sayfamızı yönlendiriyoruz, hatalı ise ekranımız tekrar aydınlanarak form tekrar işlevli hale getirilmiş oluyor...
Görselliğe önem vermedim ve kalabalık olmaması için, sade ve basit bir arayüz üzerinde hazırladım.<br />
<br />
<a href="http://www.veblebi.com/jquery-ile-basit-bir-login-formu/" target="_blank">Devamını Buradan Okuyabilirsiniz</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-67573247746138075132011-11-06T10:02:00.000-08:002011-11-06T10:02:45.181-08:00Resimlerin Otomatik Boyutlandırılması<br />
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<span class="Apple-style-span" style="background-color: white;">Bu yazımda CSS ile resimlerin otomatik boyutlandırmasına değineceğim.</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<span class="Apple-style-span" style="background-color: white;">Varsayalım bir site tasarlıyoruz ve kullanıcıların eklediği<span style="color: blue;"> resimlerin tasarım alanlarımızın dışına taşmasına engel olmak</span> istiyor, engel olurken de resmin görünümünü bozmadan küçültmek istiyoruz. Ya da bizim dışımızda üyelerinde veri girdiği bir paylaşım sitemiz var ve böylesi bir sorunla karşı karşıyayız… Bu sorunu çözmek için, kod yazarak resmin boyutlarını alıp, yeniden orantılı biçimde düzenleyerek uğraştığımız ya da uğraşanlar olmuştur.</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<span class="Apple-style-span" style="background-color: white;">Öncelikle ne demek istediğimi aşağıdaki resimle ifade etmiş olayım;</span></div>
<div style="color: grey; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<a href="http://www.veblebi.com/wp-content/uploads/ilk.jpg" style="background-color: white; color: #ee6217; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"><img alt="" class="alignnone size-full wp-image-95" height="125" src="http://www.veblebi.com/wp-content/uploads/ilk.jpg" style="border-bottom-color: rgb(172, 208, 216); border-bottom-style: solid; border-bottom-width: 0px; border-color: initial; border-left-color: rgb(172, 208, 216); border-left-style: solid; border-left-width: 0px; border-right-color: rgb(172, 208, 216); border-right-style: solid; border-right-width: 0px; border-style: initial; border-top-color: rgb(172, 208, 216); border-top-style: solid; border-top-width: 0px; margin-bottom: 10px; margin-left: 10px; margin-right: 10px; margin-top: 10px;" title="ilk" width="682" /></a></div>
<div style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 12px; margin-top: 12px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<span class="Apple-style-span" style="background-color: white; color: grey;">Resimde ok ile işaretlediğim noktaya dikkat edersek, ilgili resim bizim alanımızın dışına taşmış durumda. CSS ile maksimum genişlik belirterek resmin genişliğini sınırlayabiliriz. </span><span class="Apple-style-span" style="background-color: #3d85c6; color: white;"> <a href="http://www.veblebi.com/css-ile-resimlerin-otomatik-boyulandirilmasi/" target="_blank"><span class="Apple-style-span" style="color: white;">Devamı... </span></a></span></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-41862387737228654432011-11-06T08:08:00.001-08:002011-11-06T10:35:53.317-08:00İngilizce OkuyucuBu yazımda İngilizce çalışırken telaffuz için kullandığım bir programı <a href="http://www.veblebi.com/ingilizce-okuyucu/" target="_blank">paylaşmak istiyorum</a>.
Sol tarafdan önceden hazırladığınız okuma parçalarını seçebilir, yeni ekleyebilir ve kaydedebilirsiniz.. Böylelikle pratik yapmanız kolaylaşmış olur. İstediğiniz zaman ara verebilir, bitirebilir ve okuma hızı ve ses ayarını yapabilirsiniz...<br />
<br />
<a href="http://www.veblebi.com/wp-content/uploads/OKUYUCU_SETUP.zip" title="Kurulum Dosyasını Buradan İndirebilirsiniz...">Kurulum Dosyasını Buradan İndirebilirsiniz...</a><br />
<br />
<br />
<img alt="" class="alignnone size-full wp-image-171" src="http://www.veblebi.com/wp-content/uploads/okuyucu.jpg" title="okuyucu" />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6363849507817027824.post-4860938624012937452011-11-06T07:58:00.000-08:002011-11-06T07:58:02.631-08:00PHP ile Düzenli Metin KesmekUzun yazıları kırptığımızda, son kelimenin kalan kısımı görünmez oluyor ve anlamsız bir kelime, bazende tek bir harf olabiliyor. Örneğin;<br />
<br />
<span style="color: #666699;"><span style="color: #3366ff;">$icerik </span>= '<span style="color: #993300;">Uzun yazıları kırptığımızda, son kelimenin kalan kısımı görünmez oluyor ve anlamsız bir kelime bazende tek bir harf olabiliyor.'</span>;</span><br />
<br />
Yukarıdaki içeriği <span style="color: blue;">substr()</span> fonksiyonu ile, 60 karakterle sınırlarsak çıktı; <span style="color: #333399;"><em>"Uzun yazıları kırptığımızda, son kelimenin kalan <span style="color: red;">kıs</span>" </em></span>oluyor.<br />
<br />
Düzenli bir metin bölme işlemi için PHP de 2 satır kod yazmamız yeterli olacaktır...<br />
<br />
<br />
if( preg_match('/(.*?)\s/i', substr( $icerik, 60), $dizi) )<br />
$icerik = substr($icerik, 0, 60+strlen($dizi[0]));<br />
<br />
Çıktı;<br />
<br />
<em>"<span style="color: #333399;">Uzun yazıları kırptığımızda, son kelimenin kalan kısımı</span>"</em><br />
<br />
Eğer içeriğimiz sadece text değil, html de içerisyorsa bu durumda, ...<span class="Apple-style-span" style="background-color: #9fc5e8;"><a href="http://www.veblebi.com/php-duzenli-metin-kesmek/" target="_blank"> Devamı...</a></span>Unknownnoreply@blogger.com0