Formdan Gönderilen Verileri Sırasıyla Listeleme

Bu konuyu okuyanlar

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Merhabalar. Şu resme bakabilir misiniz? 3 adet yanyana "card" kullandım. Admin panelindeki formdan "resim, başlık, konu, ekleyen, yayınlanma zamanı" olarak veritabanına bölümler oluşturdum. Formdaki gönder butonuna bastığımda veritabanına kayıt olduğu gibi aynı anda listeleme yapacak. Yani forumlarda konu açatken olduğu gibi. Forumdan gönderdiğim veriyi veritabanına yazdırıyorum ve listeleme yapıyorum ve şu anda sadece konu alanını çektim. Çektim ama mesela "konu" alanının hepsini çekiyor aşağıdaki kodla.
PHP:
<?php
$query = $db->query("SELECT * FROM haberlerekle", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
   foreach( $query as $row ){
      echo $row['haberekle_konu']." ".$row['haberekle_id']."<br />";
   }
}
?>
Benim istediğim web editöründen mesela ckeditor den resimi yükleyeceğim, başlığı yazıp konuyu yazıp paylaşacağım ve anasayfada çıkacak.
Yukarıdaki kodlarla "haberlerekle_konu" alanında kaç id varsa hepsini çekiyor. Tek tek nasıl yapabilirim ve ekledikçe sırasıyla "index.php" de oluşacak şekilde?
Mesaj otomatik birleştirildi:

Arkadaşlar yukarıda sorduğum şeylerden "haber başlığı, haberin konusu, haberi ekleyen" kısımlarını güzel bir şekilde ekledim. Şimdi takıldığım nokta ise aşağıdaki resimde. İlk "card" a bakın. Başlık, konu ve ekleyen tamam ama konunun bittiği yere bakar mısınız. Ben konu alanına veritabanında 155 karakter verdim. Yazdığım konu 154. karaktere geldiğinde aşağıya inmiş. Kötü bir görüntü oluyor. Yani en fazla üç satırlık bir konu olabilir ama aşağıya taşmasın. Engellemek mümkün mü veya ne yapılabilir.
Adsız4.png
 

Ekli dosyalar

  • Adsız3.png
    Adsız3.png
    373.8 KB · Görüntüleme: 92
Son düzenleme:

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Bir de bu "card" ı veri eklerken nasıl oluşturabilirim? Yani Sadece 1 adet "card" olacak ve ben veri eklerken kartla beraber veri içine yazılacak? "Card" varken verileri içine ekleyebiliyorum ama "card" ı oluşturmayı yapamıyorum.
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Son 3 veriyi almak için MySQL komutumuzu değiştirelim;
PHP:
<?php
$komut= $db->query("SELECT * FROM haberlerekle ORDER BY id DESC LIMIT 3");
//ORDER BY id ile verileri ID'ye göre listeledik, DESC LIMIT 3 ile son 3 veriyi aldık.

$query= $komut->fetchAll(PDO::FETCH_ASSOC);
//Sunucunun döndürdüğü verilerin hepsini çektik.
?>

Verileri yazdırmak için "Foreach" fonksiyonunu kullanabiliriz, 3 adet indeximiz olduğu için foreach komutu 3 defa bu verileri yazacaktır;
PHP:
<?php
foreach ($query as $habercek){
?>

<div class="card">
  <img class="card-img-top" src="<?=$habercek['resimurl'] ?>" alt="<?=$habercek['baslik'] ?>">
  <div class="card-body">
    <h5 class="card-title"><?=$habercek['baslik'] ?></h5>
    <p class="card-text"><?=$habercek['icerik'] ?></p>
    <a href="https://websitem.com/haber/<?=$habercek['sefurl'] ?>" class="btn btn-primary">Devamını Oku...</a>
  </div>
</div>

<? } ?> //Foreach döngüsünü sonlandırdık.
Mesaj otomatik birleştirildi:

Karakter problemi için CSS üzerinden -webkit-line-clamp özelliğini kullanabilirsiniz;
CSS:
.habericerik{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3; /* Satır sayısı */
-webkit-box-orient: vertical;
    }
Çıktı:
blablabal /Görünür
balblabal /Görünür
blablabla... /Görünür
balbalblbaa /Görünmez

Karakter sayısına göre yapmak isterseniz PHP ile mümkün;
PHP:
          <p class="habericerik"><?
            mb_internal_encoding("UTF-8"); //Türkçe karakter problemi ile karşılaşmamak için karakter setini UTF-8 olarak belirledik.
          $trimstring = mb_substr($habercek["icerik"], 0, 380).'...<a class="btn btn-primary" href="haberler/'.$habercek['sefurl'].'"> Devamını Oku</a>';
         //Haber içeriğini çekerken 0. karakterden başlayıp 380. karaktere kadar çektik.
          echo strip_tags($trimstring, '<b>');
        //Çekilen içerikte sadece <b> etiketine izin verdik.
          ?></p>

Çıktı:
blablablabla 380. karakte... Devamını Oku
 
Son düzenleme:

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Özür dileyerek başlayayım. Son olarak yaptığım şeyleri buraya eklemeden ikinci kere soru sordum. Siz de konu başlangıcındaki kodları referans alarak yazmışsınız. Tekrar özür diliyorum. Şu kodlara göre anlatayım tekrar problemimi.

PHP:
<form>
  Başlık <br>
  <input name="haberekle_baslik" size="100"></input><br><br>
  <textarea name="editor1" cols="150" rows="30"></textarea><br>
  Ekleyen <br>
  <input name="haberekle_ekleyen" size="100"></input><br><br>
  <input type="submit" name="submit" value="Yayınla" style="margin-top:5px;">
  <a href="index.php" class="btn btn-info" role="button" style="margin-top:5px;">Yeni Ekle</a>
  </form>
              
  <?php
  if (isset($_GET['submit'])) {
      
    if (isset($_GET['editor1']) && !empty($_GET['editor1'])) {
    $baslik = $_GET['haberekle_baslik'];
    $content = $_GET['editor1'];       
    $ekleyen = $_GET['haberekle_ekleyen'];
    
    } else {
    echo "Lütfen Metin Alanını Doldurunuz";
    }
      if (isset($content) && !empty($content)) {
        $haberekle = $db->prepare("INSERT INTO haberlerekle SET haberekle_baslik=?, haberekle_konu=?, haberekle_ekleyen=?");
        $haberekle->execute([$baslik, $content, $ekleyen]); 
        if ($haberekle) {
            echo "<center><h1>"."Haberler Eklendi"."</h1></center>";
        } else {
            echo "Haberler Eklenemedi";
        }
      }
  }
      
  ?>

Ben yukarıdaki kodlarla alttaki ilk card resminde olduğu gibi verilerimi çektim.
Adsız5.png


Konunun başlarında paylaştığım ilk resme bakarsanız 3 tane card yanyana duruyor. Ben bu "card" lardan birisini sildim ve hemen üstteki resimde görüldüğü gibi boyut olarak büyüdü. Bu "card" ı bire düşürdüğümde bütün sayfayı kaplıyor. Ben sadece ilkinin içinde listeleme yaptırdım. Benim istediğim 3 "card" yanyana olacak şekilde ben ekleme yaptığımda "index.php" de yani anasayfamda listelenecek. Gönder butonuna bastığımda hem bir adet "card" eklenecek; hem de eklenen "card" ın içine verilerim listelenecek.

Listeleme kodlarını da yazayım. Yalnız "index.php" de sayfalama yaptırmaya çalışıyordum. Şu an sayfalama kodlarıyla birlikte listeleme kodlarını birbiriyle içiçe geçti biraz. Şu an ayıramıyorum. Ben size kodları yazayım ve anlatmaya çalışayım.

PHP:
<?php

    $veriler       = $db->query("SELECT * FROM haberlerekle",PDO::FETCH_ASSOC)->fetchAll();
    $verisayisi    = count($veriler);
    $gosterilecek   = 5;
    $sayfasayisi   = ceil($verisayisi/$gosterilecek);
    if (isset($_GET['sayfa'])) {
        $sayfa = $_GET['sayfa'];
    } else {
        $sayfa = 1;
    }
    if ($sayfa > $sayfasayisi) {
        $sayfa = 1;
    } elseif (!is_numeric($sayfa) || $sayfa < 1) {
        $sayfa = 1;
    }
    
    
    $baslangic = ($gosterilecek*$sayfa)-$gosterilecek;
    $veriler   = $db->query("SELECT * FROM haberlerekle limit $baslangic,$gosterilecek",PDO::FETCH_ASSOC)->fetchAll();
    
    ?>
                
            <?php foreach ($veriler as $row) {  ?>
            <div class="col">
              <div class="card ilk-kart">
               <img src="images/kucuk-slider/slider-1.jpg" class="card-img-top" alt="...">
               <div class="card-body">               
               <h5 class="card-title">  <?php echo $row['haberekle_baslik']."<br />"; ?></h5>
               <p class="card-text">  <?php  echo $row['haberekle_konu']."<br />";  ?> </p>
               <h6><?php echo $row['haberekle_ekleyen']."<br />";  ?> </h6>
                
            <?php  }  ?>
            <a href="#" class="btn btn-primary">Go somewhere</a>
            </div>
            </div>           
            </div>

Yukarıdaki kodlarda yanlış anlamıyorsam
PHP:
 $veriler   = $db->query("SELECT * FROM haberlerekle limit $baslangic,$gosterilecek",PDO::FETCH_ASSOC)->fetchAll();
kısmından itibaren başlıyor listeleme işlemi. Yalnız sayfalama kodlarıyla karışık olduğu için kafam biraz karıştı zaten. Ama aşağıdaki alan "card" ve "card" ın içinde veri listelenmesi.

PHP:
<?php foreach ($veriler as $row) {  ?>

            <div class="col">

              <div class="card ilk-kart">

               <img src="images/kucuk-slider/slider-1.jpg" class="card-img-top" alt="...">

               <div class="card-body">               

               <h5 class="card-title">  <?php echo $row['haberekle_baslik']."<br />"; ?></h5>

               <p class="card-text">  <?php  echo $row['haberekle_konu']."<br />";  ?> </p>

               <h6><?php echo $row['haberekle_ekleyen']."<br />";  ?> </h6>

            <?php  }  ?>

            <a href="#" class="btn btn-primary">Go somewhere</a>

            </div>

            </div>           

            </div>

İnşallah çok karmaşık olmamıştır.
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Anladığım kadarıyla son 3 haberi değil tüm haberleri card ile listelemek istiyorsunuz, bir tane haber olduğunda normal olarak sadece bir tane card oluşturuyor ve tek card olduğu zaman da tüm sayfayı kaplıyor. İstediğiniz şey ise tek card olsa bile genişliği/uzunluğu değişmeyecek, kod üç card ekledikten sonra alt satıra geçerek aynı şekilde devam edecek. Doğru mu anladım?
 

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Aynen tek kart olduğu vakit boyut değişmeyecek ve her haber eklediğimde hemen yanına eklenecek ve 1 sayfada sadece üç haber olacak. 4. haber eklenince alttaki resimde olduğu gibi ikinci sayfaya geçecek.
Adsız6.png

Mesaj otomatik birleştirildi:

Bir de arkadaşlar ckeditor le birlikte ckfinder ı çalıştıramadım. Ben de kendi resim upload dosyamı oluşturayım dedim. Aşağıdaki kodlar oluşturmak istediğim "card" ların önce resim alanı, sonra başlık alanı, sonra içerik alanı, sonra da ekleyen kişi alanı olacak şekilde yazdım. Resim alanını eklemeden evvel veritabanına kayıt yapabiliyordum. Resim alanını ekledikten sonra kayıt yapamıyorum. Bir bakabilir misiniz nerede hata yapıyorum.
PHP:
  <?php
      
    if (isset($_GET['editor1']) && !empty($_GET['editor1'])) {
    $resimyukle = $_GET['haberekle_resim'];
    $baslik = $_GET['haberekle_baslik'];
    $content = $_GET['editor1'];       
    $ekleyen = $_GET['haberekle_ekleyen'];
    
    } else {
    echo "Lütfen Metin Alanını Doldurunuz";
    }

      if (isset($_GET['submit'])) {
    
    if(isset($_FILES['dosya'])){
    $hata = $_FILES['dosya']['error'];
    if($hata != 0) {
    echo 'Yüklenirken bir hata gerçekleşmiş.';
        } else {
        $boyut = $_FILES['dosya']['size'];
            if($boyut > (1024*1024*3)){
            echo 'Dosya 3MB den büyük olamaz.';
            } else {
            $tip = $_FILES['dosya']['type'];
            $isim = $_FILES['dosya']['name'];
            $uzanti = explode('.', $isim);
            $uzanti = $uzanti[count($uzanti)-1];
                if($tip != 'image/jpeg' || $uzanti != 'jpg') {
                echo 'Yanlızca JPG dosyaları gönderebilirsiniz.';
                } else {
                $dosya = $_FILES['dosya']['tmp_name'];
                copy($dosya, 'dosyalar/' . $_FILES['dosya']['name']);
                echo 'Dosyanız upload edildi!';
                }
            }
        }
    }
      if (isset($content) && !empty($content)) {
        $haberekle = $db->prepare("INSERT INTO haberlerekle SET haberekle_baslik=?, haberekle_konu=?, haberekle_ekleyen=?, haberekle_resim=?");
        $haberekle->execute([$baslik, $content, $ekleyen, $resimyukle]); 
        if ($haberekle) {
            echo "<center><h1>"."Haberler Eklendi"."</h1></center>";
        } else {
            echo "Haberler Eklenemedi";
        }
      }
  }
      
  ?>
 
Son düzenleme:

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Aynen tek kart olduğu vakit boyut değişmeyecek ve her haber eklediğimde hemen yanına eklenecek ve 1 sayfada sadece üç haber olacak. 4. haber eklenince alttaki resimde olduğu gibi ikinci sayfaya geçecek.
Ekli dosyayı görüntüle 103367
PHP:
<?php
$gosterilecek = 3; //Gösterilecek card limitini 3 yapalım
$veriler   = $db->query("SELECT * FROM haberlerekle ORDERY BY id DESC LIMIT $baslangic,$gosterilecek",PDO::FETCH_ASSOC)->fetchAll(); //Son paylaşılan haberleri belirtilen limite göre çekelim
?>
    <div class="row">
<?php foreach ($veriler as $row) {  ?>

            <div class="col-4"> <!-- Col classı maksimum 12 değerini alıyor, biz 3 tane haber çekeceğimiz için 12/3 = 4 bu durumda bir tane haber olsa bile boyut her zaman 3 haberlik satıra göre sabit kalacaktır. Sayı belirtmeden sadece col yaparsak otomatik olarak ayarlayacaktır. -->

              <div class="card ilk-kart">

               <img src="images/kucuk-slider/slider-1.jpg" class="card-img-top" alt="...">

               <div class="card-body">         

               <h5 class="card-title">  <?php echo $row['haberekle_baslik']."<br />"; ?></h5>

               <p class="card-text">  <?php  echo $row['haberekle_konu']."<br />";  ?> </p>

               <h6><?php echo $row['haberekle_ekleyen']."<br />";  ?> </h6>

            <?php  }  ?>

            <a href="#" class="btn btn-primary">Go somewhere</a>

            </div>

            </div>     

            </div>
    </div>

Bir de arkadaşlar ckeditor le birlikte ckfinder ı çalıştıramadım. Ben de kendi resim upload dosyamı oluşturayım dedim. Aşağıdaki kodlar oluşturmak istediğim "card" ların önce resim alanı, sonra başlık alanı, sonra içerik alanı, sonra da ekleyen kişi alanı olacak şekilde yazdım. Resim alanını eklemeden evvel veritabanına kayıt yapabiliyordum. Resim alanını ekledikten sonra kayıt yapamıyorum. Bir bakabilir misiniz nerede hata yapıyorum.

Resim yükleme sistemi için daha kısa ve basit bir yol bulunuyor.
PHP:
<?php
if (!empty($_FILES['dosya'])) {
        $dosyaUzantisi = substr($_FILES["img"]["name"], -4, 4); //Dosya uzantısını aldık.

        $dosyaAdi = uniqid('i') . $dosyaUzantisi; //Benzersiz isim verdik.

        $fotograf = "../img/haber/kucukresim/" . $dosyaAdi; //Dosyanın taşınacağı yolu belirledik.

        if ($uzanti == "image/jpeg" || $uzanti == "image/png" || $uzanti == "image/gif") { //Eğer jpeg, png veya gif ise onay verdik.
            if (is_uploaded_file($_FILES["dosya"]["tmp_name"])) { //Upload durumunu kontrol ettik
                move_uploaded_file($_FILES["dosya"]["tmp_name"], $fotograf); //Temp klasöründen hedef klasöre taşıdık.
            }
        }
    }

$fotograf; //Değişkeni, yüklediğimiz resmin yolunu verecektir.

    ?>
 
Son düzenleme:

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Resim yolunu nasıl vermem lazım. Yani mesela benim çalıştığım dosya, "www" içindeki "admin" klasörünün içindeki "adminpaneli" klasörünün içindeki "yapım" klasörünün içinde. Kök klasör "www" nun içinde "image" klasörü var. Yüklenecek resimleri "image" klasörü içinde bir klasörde tutabilirim. Yani resmi yükleyeceğim dosyam "www/admin/adminpaneli/yapım" içinde. Yani en son yapım klasörü var. Yolu nasıl belrtebilirim acaba?
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Mesela bu işlemi admin/adminpaneli/yapım/islem klasöründe bulunan bir dosyada yapıyorsunuz diyelim, bu durumda image klasörü bir üst dizinde olduğu için geriye çıkmamız lazım bunun için "../" işaretini kullanabiliriz.
Toparlamamız gerekirse;
İşlem yapılan dosyanın dizini -> admin/adminpaneli/yapım/islem/fonksiyonlar.php
Resim dizini -> admin/adminpaneli/yapım/images

fonksiyonlar.php dosyasından images dosyasına yol belirtmek istiyorsak bir geri çıkıp images klasörüne girmemiz lazım, bunun için şöyle bir şey kullanacağız;
$dosyayolu = "../images"
 

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Merhabalar. Resim yüklemeyi yapmadan önce koyu yazılan yere sadece "<form>" şeklindeydi. "Başlık, haber_içeriği, haberi_ekleyen" şeklinde başarılı bir şekilde veritabanına kayıt yapılıyordu. Şimdi ise aşağıdaki hatayı veriyor.

PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/host/www.websitesi.com/httpdocs/admin/panel/yapim/index.php on line 324, referer: websitesi.com -&nbspwebsites i Kaynaklar ve Bilgiler.

index.php --> " www/admin/panel/yapım " klasörü içinde
PHP:
  [B]<form action="" method="POST" enctype="multipart/form-data">[/B]

  <input type="file" name="dosya" />

  Başlık <br>

  <input name="haberekle_baslik" size="100"></input><br><br>

  <textarea name="editor1" cols="150" rows="30"></textarea><br>

  Ekleyen <br>

  <input name="haberekle_ekleyen" size="100"></input><br><br>

  <input type="submit" name="submit" value="Yayınla" style="margin-top:5px;">

  <a href="index.php" class="btn btn-info" role="button" style="margin-top:5px;">Yeni Ekle</a>

  </form>

<?php

    if (!empty($_FILES['dosya'])) {

        $dosyaUzantisi = substr($_FILES["img"]["name"], -4, 4); //Dosya uzantısını aldık.

        $dosyaAdi = uniqid('i') . $dosyaUzantisi; //Benzersiz isim verdik.

        $fotograf = "../image/../../" . $dosyaAdi; //Dosyanın taşınacağı yolu belirledik.

        if ($uzanti == "image/jpeg" || $uzanti == "image/png" || $uzanti == "image/gif") { //Eğer jpeg, png veya gif ise onay verdik.

            if (is_uploaded_file($_FILES["dosya"]["tmp_name"])) { //Upload durumunu kontrol ettik

                move_uploaded_file($_FILES["dosya"]["tmp_name"], $fotograf); //Temp klasöründen hedef klasöre taşıdık.

            }

        }

    }

$fotograf; //Değişkeni, yüklediğimiz resmin yolunu verecektir.   

?> 

  <?php

    if (isset($_REQUEST['editor1']) && !empty($_REQUEST['editor1'])) {

    $haberekle_resim = $_REQUEST['haberekle_resim'];

    $baslik = $_REQUEST['haberekle_baslik'];

    $content = $_REQUEST['editor1'];       

    $ekleyen = $_REQUEST['haberekle_ekleyen'];

    } else {

    echo "Lütfen Metin Alanını Doldurunuz";

    }

      if (isset($_REQUEST['submit'])) {

      if (isset($content) && !empty($content)) {

        $haberekle = $db->prepare("INSERT INTO haberlerekle SET haberekle_resim=?, haberekle_baslik=?, haberekle_konu=?, haberekle_ekleyen=?");

        $haberekle->execute([$haberekle_resim, $baslik, $content, $ekleyen]); 

        if ($haberekle) {

            echo "<center><h1>"."Haberler Eklendi"."</h1></center>";

        } else {

            echo "Haberler Eklenemedi";

        }

      }

  }

  ?>
 

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Merhabalar. Resim yüklemeyi yapmadan önce koyu yazılan yere sadece "<form>" şeklindeydi. "Başlık, haber_içeriği, haberi_ekleyen" şeklinde başarılı bir şekilde veritabanına kayıt yapılıyordu. Şimdi ise aşağıdaki hatayı veriyor.

PHP Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/host/www.websitesi.com/httpdocs/admin/panel/yapim/index.php on line 324, referer: websitesi.com -&nbspwebsites i Kaynaklar ve Bilgiler.

index.php --> " www/admin/panel/yapım " klasörü içinde
PHP:
$haberekle->execute([$haberekle_resim, $baslik, $content, $ekleyen]); //Yanlış Kullanım
$haberekle->execute(array($haberekle_resim, $baslik, $content, $ekleyen)); //Doğru Kullanım

//Farklı bir taktik
$haberekle = $db->prepare("INSERT INTO haberlerekle (haberekle_resim, haberekle_baslik, haberekle_konu, haberekle_ekleyen) VALUES (:resim, :baslik, :konu, :ekleyen)");
$haberekle->bindValue(':resim', $haberekle_resim, PDO::PARAM_STR);
$haberekle->bindValue(':baslik', $baslik, PDO::PARAM_STR);
$haberekle->bindValue(':konu', $content, PDO::PARAM_STR);
$haberekle->bindValue(':ekleyen', $ekleyen, PDO::PARAM_STR);
$isle = $haberekle->execute();
if($isle) echo 'ok';
else echo 'no';
 

mali2012

Asistan
Katılım
10 Eylül 2012
Mesajlar
157
Reaksiyon puanı
9
Puanları
18
Aşağıdaki kodlarla "admin" klasörüne resim yüklemesi yapabiliyorum.
PHP:
<?php

if (isset($_POST['resimyukle'])) {
   
    if(isset($_FILES['dosya'])) {
    $hata = $_FILES['dosya']['error'];
    if($hata != 0) {
    echo 'Yüklenirken bir hata gerçekleşmiş.';
        } else {
        $boyut = $_FILES['dosya']['size'];
            if($boyut > (1024*1024*3)){
            echo 'Dosya 3MB den büyük olamaz.';
            } else {
            $tip = $_FILES['dosya']['type'];
            $isim = $_FILES['dosya']['name'];
            $uzanti = explode('.', $isim);
            $uzanti = $uzanti[count($uzanti)-1];
                if($tip != 'image/jpeg' || $uzanti != 'jpg') {
                echo 'Yanlızca JPG dosyaları gönderebilirsiniz.';
                } else {
                $dosya = $_FILES['dosya']['tmp_name'];
                copy($dosya, '../' . $_FILES['dosya']['name']);
                echo 'Dosyanız upload edildi!';
                }
            }
        }
    }
}  
  ?>

  <form action="" method="POST" enctype="multipart/form-data">
  <input type="file" name="dosya">
  <input type="submit" name="resimyukle" value="Resmi Yükle"/>
  </form>

Yalnız aşağıdaki kodlara nasıl entegre edeceğim bilemedim.
PHP:
  <form>
  Başlık <br>
  <input name="haberekle_baslik" size="100"></input><br><br>
  <textarea name="editor1" cols="150" rows="30"></textarea><br>
  Ekleyen <br>
  <input name="haberekle_ekleyen" size="100"></input><br><br>
  <input type="submit" name="submit" value="Yayınla" style="margin-top:5px;">
  <a href="index.php" class="btn btn-info" role="button" style="margin-top:5px;">Yeni Ekle</a>
  </form>

  <?php

    if (isset($_REQUEST['editor1']) && !empty($_REQUEST['editor1'])) {
    $baslik = $_REQUEST['haberekle_baslik'];
    $content = $_REQUEST['editor1'];      
    $ekleyen = $_REQUEST['haberekle_ekleyen'];
   
    } else {
    echo "Lütfen Metin Alanını Doldurunuz";
    }

      if (isset($_REQUEST['submit'])) {
   
      if (isset($content) && !empty($content)) {
       
      }
  }
     
    $haberekle = $db->prepare("INSERT INTO haberlerekle (haberekle_baslik, haberekle_konu, haberekle_ekleyen) VALUES (:baslik, :konu, :ekleyen)");
    $haberekle->bindValue(':baslik', $baslik, PDO::PARAM_STR);
    $haberekle->bindValue(':konu', $content, PDO::PARAM_STR);
    $haberekle->bindValue(':ekleyen', $ekleyen, PDO::PARAM_STR);
    $isle = $haberekle->execute();
    if($isle) echo 'ok';
    else echo 'no';
     
  ?>

Şua anki görünüm şu şekilde.
Adsız7.png

Mesaj otomatik birleştirildi:

Resmi ekleyeceğim, başlığı, konuyu ve ekleyen kısmını yazdıktan sonra "Yayınla" butonuna bastığımda veritabanına kayıt etmek istiyorum.
 
Son düzenleme:

CapScroLL

Müdavim
Katılım
22 Ağustos 2014
Mesajlar
3,657
Reaksiyon puanı
2,683
Puanları
113
Yaş
26
Resim yüklemeyi ayrı şekilde yapmak yerine "Yeni Ekle" butonu ile submit ettirebilirsin, daha pratik çözüm olur. Eğer resim yüklenmemiş ise default bir yol belirtirsiniz belirttiğiniz resim eklenir. Ayrıca bu tip gelişmiş form işlemleri için POST metodunu kullanmanız daha sağlıklı olacaktır.

HTML:
  <form method="POST" action="src/islem.php" enctype="multipart/form-data"> <!-- Metod ve form verilerinin gönderileceği sayfayı belirttik-->
  Başlık <br>
  <input type="file" name="dosya" />

      <input name="haberekle_baslik" size="100" /><br><br> <!-- İnputlarda etiketi kapatmak için </input> tagı kullanmanıza gerek yoktur-->
  <textarea name="editor1" cols="150" rows="30"></textarea><br>
  Ekleyen <br>
  <input name="haberekle_ekleyen" size="100" /><br><br>
  <input type="submit" name="icerikyayinla" value="Yayınla" style="margin-top:5px;"> <!-- Verileri "icerikyayinla" adlı buton ile submit edeceğiz, islem.php dosyasında buton adı ile kontrol sağlayacağız.-->
<!-- Yeni ekle butonunu kaldırıyoruz çünkü işlem başarılı olduğu zaman kullanıcıyı sayfaya yönlendirebiliriz. Anasayfa için GET değişkeni oluşturup bu değişkene veri atayarak işlem başarılı mesajını gönderebiliriz.-->
</form>

src klasörü içerisinde ki islem.php dosyası:
PHP:
<?php
if (isset($_POST['icerikyayinla'])) { //Eğer "icerikyayinla" butonu ile veri gönderilmişse...
 
     if (!empty($_FILES['dosya'])) {
        $dosyaUzantisi = substr($_FILES["dosya"]["name"], -4, 4);

        $dosyaAdi = uniqid('i') . $dosyaUzantisi;

        $fotograf = "../../img/post/kucukresim/" . $dosyaAdi;

        $uzanti = $_FILES["dosya"]["type"];

        if ($uzanti == "image/jpeg" || $uzanti == "image/png" || $uzanti == "image/gif") {
            if (is_uploaded_file($_FILES["dosya"]["tmp_name"])) {
                move_uploaded_file($_FILES["dosya"]["tmp_name"], $fotograf);
            }
        }
    } else {
        $fotograf = "../../img/post/kucukresim/default.jpg"; //Eğer fotoğraf eklenmemişse varsayılan fotoğraf eklenecektir.
    }
 
    $baslik = $_POST['haberekle_baslik'];
    $content = $_POST['editor1'];  
    $ekleyen = $_POST['haberekle_ekleyen'];
 
     if(!empty($baslik) && !empty($content) && !empty($ekleyen))
    $haberekle = $db->prepare("INSERT INTO haberlerekle (haberekle_baslik, haberekle_konu, haberekle_ekleyen, haberekle_resim) VALUES (:baslik, :konu, :ekleyen, :resim)");
    $haberekle->bindValue(':baslik', $baslik, PDO::PARAM_STR);
    $haberekle->bindValue(':konu', $content, PDO::PARAM_STR);
    $haberekle->bindValue(':ekleyen', $ekleyen, PDO::PARAM_STR);
    $haberekle->bindValue(':resim', $fotograf, PDO::PARAM_STR);
    $isle = $haberekle->execute();
    if($isle) header("Location:../index.php?post=basarili"); //index.php dosyasında belirlediğimiz "post" değişkenine "basarili" değerini atadık.
    else echo 'no'; //Burada da üstteki gibi yönlendirme yapabilirsiniz, örneğin aynı sayfaya atabilir.
}
  ?>

index.php dosyasında post adlı GET değişkeninin aldığı değere göre sunucuya işlem yaptıralım.
PHP:
<?php

if(isset($_GET['post']) && $_GET['post'] == "basarili") //Eğer post değişkeni tanımlanmış ve değeri "basarili" ise alttaki HTML etiketini yaz.
echo '<div class="alert alert-success">Haber başarıyla eklendi!</div>';

?>

Veritabanında ki ilgili tabloya "haberekle_resim" kolonunu eklemeniz gerekmektedir, resim yolu bu kolona eklenecektir.
 
Üst