İnsert İşlemi Gerçekleşmiyor (PHP)
-
Hocalar insert işlemi gerçekleşmiyor dosyada bişeyimi bozdum dedim eski yedeği yükledim gene yemedi birde siz bakın istedim gözünüze birşeyler çarparmı diye. Şimdiden eyvallah Birde son zamanlar bu tarz konuları çok açıyorum kusurumuza bakmayın :) Ek olarak etiketler konuya kod koyduğum için öyle
<?php $query = $db->query("SELECT * FROM konular ORDER BY id DESC LIMIT 1", PDO::FETCH_ASSOC); if ( $query->rowCount() ){ foreach( $query as $row ){ $kid = $row['id']; } } ?> <!DOCTYPE HTML> <html lang="tr-TR"> <head> <meta charset="iso-8859-9"> <title></title> </head> <body> <?php if($_SERVER['REQUEST_METHOD'] == "POST"){ // post metoduyla çağırıldıysa $file = $_FILES['file']; // formdan gelen dosya adını alıyoruz. $uzantilar = array("jpg", "png", "images/jpeg", "images/png"); // izin verilecek uzantılar $dizin = realpath($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR . "_uploads"; $dizin = "/_uploads/"; // yüklenecek dizini belirle $upload_file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . $dizin . DIRECTORY_SEPARATOR . $file['name']; // yüklenecek dizini belirle //$upload_file = $dizin.basename($file['name']); // yüklenecek dizin ile dosya adını bir araya getir. basename = gelen dizin adından dosya ismini verir $size = $file['size']; // dosya boyutunu al $uzanti = explode(".", $file['name']); // uzantiyi almak için explode ile böl $uzanti = $uzanti[count($uzanti)-1]; // sonuncu eleman uzanti olacağından count-1 $tip = $file['type']; // dosya tipini al if($file['name'] != ""){ // dosya ismi boş değilse if(in_array($tip, $uzantilar) || in_array($uzanti, $uzantilar)){ // izin verilen uzantilar arasında var varsa if($size < (1024*1024*10)){ // size 10M den küçük mü if(move_uploaded_file($file['tmp_name'], $upload_file)){ // yükleme işlemi gerçekleşmişse $query = $db->prepare("INSERT INTO facts SET konu_id = ?, resim = ?, tanim = ?"); $insert = $query->execute(array( $kid, $dizin.$file['name'], $_POST['icerik'] )); if ( $insert ){ $last_id = $db->lastInsertId(); print "insert işlemi başarılı!"; }else{ print "yüklenemedi"; } echo "<h3>Resim başarılı bir şekilde Eklendi!..</h3>"; // olumlu }else{ echo "<h3>Yükleme İşlemi Başarısız, Tekrar deneyin!..</h3>"; // hata } }else{ echo "<h3>Resim boyutu 10M den yüksek olmamalıdır!..</h3>"; // hata } }else{ echo "<h3>Sadece JPG ve PNG uzantılar kabul edilir!..</h3>"; // hata } } } ?> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /></br> <textarea class="ckeditor" name="icerik"></textarea> <button type="submit">Yükle</button> </form> </body> </html>
-
<?php define('DS', DIRECTORY_SEPARATOR); $query = $db->query("SELECT * FROM konular ORDER BY id DESC LIMIT 1", PDO::FETCH_ASSOC); if( $query->rowCount() ) { foreach( $query as $row ) { $kid = $row['id']; } } ?> <!DOCTYPE HTML> <html lang="tr-TR"> <head> <meta charset="iso-8859-9"> <title></title> </head> <body> <?php // post metoduyla çağırıldıysa if( $_SERVER['REQUEST_METHOD'] == "POST" ) { // formdan gelen dosya adını alıyoruz. $file = $_FILES['file']; // izin verilecek uzantılar $uzantilar = array("jpg", "png", "images/jpeg", "images/png"); $dizin = realpath($_SERVER['DOCUMENT_ROOT']) . DS . "_uploads"; // yüklenecek dizini belirle $dizin = "/_uploads/"; // yüklenecek dizini belirle $upload_file = $_SERVER['DOCUMENT_ROOT'] . DS . $dizin . DS . $file['name']; // yüklenecek dizin ile dosya adını bir araya getir. basename = gelen dizin adından dosya ismini verir //$upload_file = $dizin.basename($file['name']); // dosya boyutunu al $size = $file['size']; // uzantiyi almak için explode ile böl $uzanti = explode(".", $file['name']); // sonuncu eleman uzanti olacağından count-1 $uzanti = $uzanti[count($uzanti)-1]; // dosya tipini al $tip = $file['type']; // dosya ismi boş değilse if($file['name'] != "") { // izin verilen uzantilar arasında var varsa if(in_array($tip, $uzantilar) || in_array($uzanti, $uzantilar)) { // size 10M den küçük mü if($size < (1024*1024*10)) { // yükleme işlemi gerçekleşmişse if(move_uploaded_file($file['tmp_name'], $upload_file)){ $query = $db->prepare("INSERT INTO facts SET konu_id = ?, resim = ?, tanim = ?"); $insert = $query->execute(array($kid, $dizin.$file['name'], $_POST['icerik'])); if ( $insert ) { $last_id = $db->lastInsertId(); print "insert işlemi başarılı!"; } else { print "yüklenemedi"; } echo "<h3>Resim başarılı bir şekilde Eklendi!..</h3>"; // olumlu } else { echo "<h3>Yükleme İşlemi Başarısız, Tekrar deneyin!..</h3>"; // hata } } else { echo "<h3>Resim boyutu 10M den yüksek olmamalıdır!..</h3>"; // hata } } else { echo "<h3>Sadece JPG ve PNG uzantılar kabul edilir!..</h3>"; // hata } } } ?> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /></br> <textarea class="ckeditor" name="icerik"></textarea> <button type="submit">Yükle</button> </form> </body> </html>php
İlk önce kodunu bir güzel yaz şöyle benim gibi. Sonra bu şekilde iç içe if else yapma. Bu noktada en azından fonksiyon kullanmalısın, her hata noktasında return yaparak daha okunaklı ve hatasız kod yazabilirsin. Fonksiyonda return çalıştıktan sonra altındaki kodlar çalışmaz. Fonksiyondan çıkılır. Şöyle ki:
<?php define('DS', DIRECTORY_SEPARATOR); define('DR', $_SERVER['DOCUMENT_ROOT']); $query = $db->query("SELECT * FROM konular ORDER BY id DESC LIMIT 1", PDO::FETCH_ASSOC); if($query->rowCount()) { foreach($query as $row) { $kid = $row['id']; } } function aaa() { if( $_SERVER['REQUEST_METHOD'] != "POST" ) { return [0, '']; } // Bize lazım olan verileri topluyoruz. $file = $_FILES['file']; $uzantilar = array("jpg", "png", "images/jpeg", "images/png"); $dizin = realpath(DR) . DS . "_uploads"; $dizin = "/_uploads/"; $upload_file = DR . DS . $dizin . DS . $file['name']; $size = $file['size']; $uzanti = explode(".", $file['name']); $uzanti = $uzanti[count($uzanti)-1]; $tip = $file['type']; if($file['name'] == '') { return [1, 'Dosya adı yok']; } if(!in_array($tip, $uzantilar) && !in_array($uzanti, $uzantilar)) { return [2, 'Sadece JPG ve PNG uzantılar kabul edilmektedir']; } if(move_uploaded_file($file['tmp_name'], $upload_file)) { return [3, 'Yükleme işlemi başarısız, tekrar deneyin']; } $query = $db->prepare("INSERT INTO facts SET konu_id = ?, resim = ?, tanim = ?"); $insert = $query->execute(array($kid, $dizin.$file['name'], $_POST['icerik'])); if( $insert ) { $last_id = $db->lastInsertId(); return [0, 'insert işlemi başarılı']; } else { return [4, 'yüklenemedi']; } } $cikti = aaa(); ?> <!DOCTYPE HTML> <html lang="tr-TR"> <head> <meta charset="iso-8859-9"> <title></title> </head> <body> <?php echo('<pre>'); print_r(aaa()); echo('</pre>'); ?> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="file" /></br> <textarea class="ckeditor" name="icerik"></textarea> <button type="submit">Yükle</button> </form> </body> </html>
Ben çalıştırmadım kodu sen birde böyle bak bakalım. Sorunu yakalayamazsan tekrar sor.
-
@pskpt hocam sağolsun yardımcı oldu hallettik sorunu eyvallah hocalar