LastInsertID çalışmaması
Arkadaşlar Merhaba. Galeri sayfası için aynı form üzerinden çoklu resim yüklemeyi deniyorum. LastInsertId bi türlü çalıştıramadım. Yardımcı olubilir misiniz ?
if(isset($_POST['galeriKaydet']))
{
$ad=$_POST['galeri_ad'];
$desc=$_POST['galeri_desc'];
$keyword=$_POST['galeri_keyword'];
$aciklama=$_POST['galeri_aciklama'];
$durum=$_POST['galeri_durum'];
$zaman=$_POST['galeri_zaman'];
$sira=$_POST['galeri_sira'];
$uploads_dir ='../../img';
$tmp_name=$_FILES['galeri_resimyol']["tmp_name"];
$benzersizsayi1=rand(20000,32000);
$benzersizsayi2=rand(20000,32000);
$uzanti = '.webp';
$benzersizad=$benzersizsayi1.$benzersizsayi2;
$refingyol=substr($uploads_dir, 3)."/".$benzersizad.$uzanti;
@$tip = pathinfo($_FILES['galeri_resimyol']["name"], PATHINFO_EXTENSION);
if (($tip != "jpg") && ($tip != "png" ) && ($tip != "webp") && ($tip != "gif")) {
/* echo '<div style="width:320px;" class="position-absolute top-0 end-0"><div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Başarısız.!</strong><br>JPG, PNG, GIF veya WEBP Formatında Resim Seçiniz.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div></div>'; */
echo "<script>location.href='../galeri-ekle.php?durum=error'</script>";
}else{
@move_uploaded_file($tmp_name, "$uploads_dir/$benzersizad$uzanti");
$galeri_ekle=$db->prepare("insert into galeri (galeri_ad,galeri_desc,galeri_keyword,galeri_aciklama,galeri_durum,galeri_zaman,galeri_sira,galeri_resimyol) values(?,?,?,?,?,?,?,?)");
$galeri_ekle->execute(array($ad,$desc,$keyword,$aciklama,$durum,$zaman,$sira,$refingyol));
$pid = $db->LastInsertId();
if (isset($_FILES['resim'])) {
$yuklenemeyenler = array(); //yüklenemeyen ve hatası dönen resimleri bu dizide tutacağız.
$uzanti = '.webp';
$klasor = "../../img"; //yükleyeceğimiz klasörü belirledik.
//Artık resimlerimiz dizi olarak geldiği için bir döngü ile tek tek kontrol ve kayıt etmemiz gerekiyor.
$resim_sayisi = count($_FILES['resim']['name']); //kaç tane resim geldiğini öğrendik.
for ($i = 0; $i < $resim_sayisi; $i++) {
//resim sayısı kadar döngüye soktuk.
$resimBoyutu = $_FILES['resim']['size'][$i]; //döngü içerisindeki resmin boyutunu öğrendik.
if ($resimBoyutu > (1024 * 1024 * 12)) {
//buradaki işlem aslında bayt, kilobayt ve mb formülüdür.
//2 rakamını mb olarak görün ve kaç yaparsanız o mb anlamına gelir.
//Örn: (1024* 1024* 3) => 3MB/ (1024* 1024* 4) => 4MB
$yuklenemeyenler[] = $_FILES['resim']['name'][$i] . " - BOYUT";
} else {
$resimtip = $_FILES['resim']['type'][$i]; //resim resimtipini öğrendik.
$resimAdi = $_FILES['resim']['name'][$i]; //resmin adını öğrendik.
if ($resimtip == 'image/jpeg' || $resimtip == 'image/jpg' || $resimtip == 'image/png') { //uzantısnın kontrolünü sağladık. sadece .jpg ve .png yükleyebilmesi için.
move_uploaded_file($_FILES['resim']['tmp_name'][$i],$klasor."/".$_FILES['resim']['name'][$i].$uzanti);
$db->query("insert into resim values ('','$pid','".$klasor."/".$_FILES['resim']['name'][$i].$uzanti."')");
} else {
$yuklenemeyenler[] = $_FILES['resim']['name'][$i] . " UZANTI";
}
}
}
if (count($yuklenemeyenler) > 0) {
echo "Aşağıdaki Resimler Yüklenemedi. <br />";
var_dump($yuklenemeyenler);
} else echo "TÜM RESİMLER BAŞARILI BİR ŞEKİLDE YÜKLENDİ.";
}
if($galeri_ekle)
{
/* echo '<div style="width:320px;" class="position-absolute top-0 end-0"><div class="alert alert-success alert-dismissible fade show" role="alert">
<strong>Başarılı.!</strong><br>Galeri Başarıyla Eklendi.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div></div>'; */
echo "<script>location.href='../galeri.php?durum=ok'</script>";
// header("Location:../production/iletisim_ayar.php?durum=ok");
}
else
{
/* echo '<div style="width:320px;" class="position-absolute top-0 end-0"><div class="alert alert-danger alert-dismissible fade show" role="alert">
<strong>Başarısız.!</strong><br>Ekleme İşlemi Yapılırken Hata Oluştu.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div></div>'; */
echo "<script>location.href='../galeri-ekle.php?durum=no'</script>";
//header("Location:../production/iletisim_ayar.php?durum=no");
}
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (15)
Merhaba,
Resim yükleme işlemi yaparken, bence verotNet 'in resim yükleme sınıfını kullanmanı tavsiye ederim.
Aşağıki kod ile rahatlıkla işlem yapabilirsin.
require_once('class.upload.php');
$image = new Upload( $_FILES[ 'resim' ] );
if ( $image->uploaded ) {
$image->file_name_body_pre = date('YmdHis').'_';
$image->file_new_name_body = time().'_'.rand(100,99999999);
$image->image_convert = 'jpg';
$image->jpeg_quality = 100;
$image->allowed = array ( 'image/*' );
$image->Process('../../img');
if ( $image->processed ) {
$temp = json_encode(array('status'=>'success','message'=>'Resim Yüklendi..'));
$add = $db->insert('galeri')
->set(array(
'baslik' => $_POST['baslik'],
'aciklama' => $_POST['aciklama '],
'kategori' => $_POST['kategori '],
'resim' => $image->file_dst_name,
));
$galeri_son_id = $db->lastInsertId();
if ($add) {
$add__ = $db->insert('resimler')
->set([
'galeri_id' => $galeri_son_id,
]);
if ($add__) {
echo 'Resim Yüklendi';
} else {
echo 'Resim Kayıt Edilemedi';
}
} else {
echo 'SQL Sistemsel kaynaklı hata oluştu.';
}
} else {
echo 'Resim yüklerken bir hata oluştur.. ('.$image->error.')';
}
$image-> Clean();
}else{
echo 'Resim Seçiniz.';
}
<?php
require_once 'db.php';
if(isset($_POST['submit'])){
$baslik = $_POST['baslik'];
$aciklama = $_POST['aciklama'];
$kategori = $_POST['kategori'];
$resim = $_FILES['resim']['name'];
$resim_tmp = $_FILES['resim']['tmp_name'];
$sql = "INSERT INTO galeri (baslik,aciklama,kategori) VALUES ('$baslik','$aciklama','$kategori')";
$query = $db->prepare($sql);
$query->execute();
$last_id = $db->lastInsertId(); // son eklenen verinin id'sini alıyoruz
foreach($resim as $key => $value){
$sql = "INSERT INTO resimler (resim,galeri_id) VALUES ('$value','$last_id')";
$query = $db->prepare($sql);
$query->execute();
}
if($query){
echo "Kayıt başarılı";
}else{
echo "Kayıt başarısız";
}
}
Size naçizane bir tavsiyem, daha temiz bir kod yazmaya çalışın. Her şey birbirine girmiş durumda bu kodlarda. Bunun farkına ileride varacaksınız, bu karmaşık görüntü sizi de rahatsız edecek, ve keşke php kodlamaya youtube'daki o video serisinden başlamasaydım diyeceksiniz. Zira o izlediğiniz seri tam bir php katili serisi. Farklı kurslardan daha güzel algoritmalar geliştirecek şekilde öğrenmenizi tavsiye ediyorum.
Başkasını bilmem ama ben yukarıda yazdığınız kodlara bakınca hiç oturup inceleyesim gelmiyor.
oncelıkle https://www.verot.net/php_class_upload.htm?lang=en-GB bunu kullan sonra onu yaparız