v2.5.2
Giriş yap

PHP de veri eklerken aynı veriden 2 kez oluşturması

ilkertuncer
367 defa görüntülendi

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>';
                    
                       
                }
            
            }
            
            ?>
Cevap yaz
Cevaplar (6)
rephp7
703 gün önce

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;

ilkertuncer
703 gün önce

Çok teşekkür ederim abi işe yaradı :D

ilkertuncer
704 gün önce

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

rephp7
704 gün önce

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.

ilkertuncer
704 gün önce

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.

rephp7
706 gün önce

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;