PHP de veri eklerken aynı veriden 2 kez oluşturması
Merhabalar. Ben bir konu eklerken aynı konuyu bütün kategorilere ekliyor. Oysa ki ben posttaki kategoriyi bir değişkene atayıp o şekilde konu eklerken eklettiriyorum.
Yani benim elimde 2 kategorim var. İnputtan kategorimi seçtirmeme rağmen aynı konuyu iki kategori için de ekliyor.
Kodum şu şekilde ne yapmalıyım?
if (isset($_POST['submit'])){
$url = isset($_POST['url']) ? $_POST['url'] : null;
$title = isset($_POST['title']) ? $_POST['title'] : null;
$content = isset($_POST['content']) ? $_POST['content'] : null;
$short_content = isset($_POST['short_content']) ? $_POST['short_content'] : null;
$status = isset($_POST['status']) ? $_POST['status'] : 0;
$category_id = isset($_POST['category_id']) && is_array($_POST['category_id']) ? implode(',', $_POST['category_id']) : null;
$question1_title = isset($_POST['question1_title']) ? $_POST['question1_title'] : null;
$question2_title = isset($_POST['question2_title']) ? $_POST['question2_title'] : null;
$question3_title = isset($_POST['question3_title']) ? $_POST['question3_title'] : null;
$question4_title = isset($_POST['question4_title']) ? $_POST['question4_title'] : null;
$question5_title = isset($_POST['question5_title']) ? $_POST['question5_title'] : null;
$question1_txt = isset($_POST['question1_txt']) ? $_POST['question1_txt'] : null;
$question2_txt = isset($_POST['question2_txt']) ? $_POST['question2_txt'] : null;
$question3_txt = isset($_POST['question3_txt']) ? $_POST['question3_txt'] : null;
$question4_txt = isset($_POST['question4_txt']) ? $_POST['question4_txt'] : null;
$question5_txt = isset($_POST['question5_txt']) ? $_POST['question5_txt'] : null;
if (!$_POST["url"] || $_POST["url"]) {
$url = seo($title);
}
if (!$title){
echo '<script type="text/javascript">
swal("", "Lütfen Başlık Ekleyin!", "error")
</script>';
} elseif (!$content){
echo '<script type="text/javascript">
swal("", "Lütfen İçerik Ekleyin!", "error")
</script>';
} elseif (!$category_id){
echo '<script type="text/javascript">
swal("", "Lütfen Kategori Seçin!", "error")
</script>';
} else {
require_once 'config.php'; // dosyamızı dahil ediyoruz
require_once 'class.upload.php'; //class dosyamızı dahil ediyoruz
$upload = new upload($_FILES["image"]);
if ($upload->uploaded) {
$upload->file_auto_rename = true;
$upload->process("uploads/resim");
$upload->file_auto_rename = true;
$upload->image_resize = true;
$upload->image_ratio_crop = false;
$upload->image_x = 271;
$upload->image_y = 150;
$upload->process("uploads/kucuk");
if ($upload->processed) {
$e = "" . $upload->file_dst_name . "";
}
}
$e = "" . $upload->file_dst_name . "";
$sorgu = $pdo->prepare("INSERT INTO posts SET title=?, image=?, url=?, content=?, short_content=?, status=?, category_id=?");
$sorgu->execute([$title, $e, $url, $content, $short_content, $status, $category_id]);
echo '<script type="text/javascript">
swal("", "Veri Eklendi!", "success")
</script>';
}
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
select kodunun ordan name="category_id[]"
den köşeli parantezi sil.
name="category_id"
yap. ordaki köşeli parantez çoklu seçim için (dizi yapmak için) lazımdı.
birde daha önce dediğim gibi yap yine çünkü çoklu seçime ihtiyacın yokmuş onun için implode ye de gerek yok;
$category_id = isset($_POST['category_id']) ? $_POST['category_id'] : null;
Merhabalar. İstediğim tek bir kategori seçmek.
Kategoriyi formda kategoriyi seçtiğim yer https://prnt.sc/1dZvhQ5fiO4l
Category_id mi çektriğim yer https://prnt.sc/QCUuYrRqDdsf
Verilerimi eklediğim yer https://prnt.sc/wjUZTcJLRoqb
Umarım daha anlaşılır olmuştur
sen kategori seçimini tekil mi yoksa multiple (çoklu seçimli) mi yaptırıyorsun onu anlamadım?
sanırım tek kategori seçsende yinede tüm kategorileri dahil edip çoklu ekliyor, doğru mu?
<select>
kodlarının olduğu kısmı name=""
alanını da paylaşır mısın?
konunu da düzenler misin? koddan önceki açıklamanı üçlü tırnağın üstüne al bir satır boşluk at. üç tırnaktan sonra php yaz alt satıra kodunu al.
daha okunaklı durur.
Merhabalar @rephp7. Yaptığınız işlem bir sonuç vermedi. Dediğiniz gibi catgehor_id satırımı değiştirdim fakat değiştirince category_id STÜNUNUNA database e array olarak yazdırıyor.
Resmimi kaydettiğim tablo https://prnt.sc/tg65BNZAZuhr
Resmi sizin stünunuz ile kaydedince aldığım çıktı https://prnt.sc/YfDSdlCDu9NM
Sizin kodunuz ile yapmazsam, kendi kodum ile yaparsam 2 kategoriye de aynı veriyi ekliyor
Yardımcı olursanız sevinirim.
Sen burda implode ile kategori id'lerini birleştiriyorsun
$category_id = isset($_POST['category_id']) && is_array($_POST['category_id']) ? implode(',', $_POST['category_id']) : null;
implode' yi kaldırıp dene.
$category_id = isset($_POST['category_id']) ? $_POST['category_id'] : null;