• 08-11-2019, 07:52:12
    #1
    Elimizde bulunan 2 dizi var. Bunlardan biri a dizisi olsun diğeri b dizisi.

    a dizimizin içinde 3 eleman var. (A1,A2,A3)
    b dizimizin içinde 2 eleman var. (B1,B2)

    Bu elemanlar artabilir azalabilir.
    Bu dizideki elemanları kullanarak INSERT işlemi yapmak istiyorum. INSERT yapacağımız tablo örneği olarak;

    ID | A | B
    ------------
    1 | A1 | B1
    2 | A2 | B1
    3 | A3 | B1
    4 | A1 | B2
    5 | A2 | B2
    6 | A3 | B2
    Şeklinde işlem yapmamız lazım. Yani elimizde bulunan elemanlarla her kombinasyonda eşleştirme yapmamız gerekiyor. Bir diğer örnekle gösterecek olsak;

    a dizimizin içinde 2 eleman var. (C4,C5)
    b dizimizin içinde 1 eleman var. (H9)

    ID | A | B
    ------------
    1 | C4 | H9
    2 | C5 | H9
    Şeklinde bir INSERT işlemi yapmak istiyorum. Umarım anlatabilmişimdir, yardımlarınızı bekliyorum iyi çalışmalar.

    - - - - - - - - - - - - DÜZENLEME - - - - - - - - - - - -

    İhtiyacı olanlar için kodun son halini buraya ekliyorum, echo kısımlarında neyin nerede olduğunu bilerek işlem yapmanız için böyle bırakıyorum, kodu çalıştırın kendinize göre düzenleyin.

    $a = array("A1", "A2","A3", "A4");
    $b = array("B1", "B2", "B3");
    
    $array = array();
    foreach ($b as $bArray) {
       $temp = array();
       foreach ($a as $aArray) {
          $temp[] = $aArray;
       }
       $array[$bArray] = $temp;
    }
    
    echo "<pre>";
    print_r($array);
    echo "</pre><br><hr><br>";
    
    foreach ($array as $temp => $value) {
       foreach ($value as $key) {
          echo $temp." - ".$key."<br><br>";
       }
    }
  • 08-11-2019, 08:16:21
    #2
    takipçi sitesimi yapıyorsunuz
  • 08-11-2019, 08:47:09
    #3
    İnsery işlemi kolay. Verileri öncelikle eşleştirme çalışması yapman lazım. Bu bahsettiğin örneklerde ebob ekok var aralarında. Düzenli olarak dağıtamadığın iki total denk geldiği ihtimallerinde nasıl Bi dağıtım yapıcaksın çok bi önemi var mı eşit sayılarda dağılmış olmasının? Hatta bunları veritabanına bu şekilde kaydetmeye de gerek yok. Yalnızca a1 a1 a3 b1 vs tek seferde iki diziyi iki tabloya kaydedip php tarafında eşleştirme yapabilirsin. Yarın öbürgün herhangi bi tabloya ekleme çıkarma yaptığında başın ağrımamış olur
  • 08-11-2019, 09:13:14
    #4
    DeRyaca adlı üyeden alıntı: mesajı görüntüle
    takipçi sitesimi yapıyorsunuz
    Yok hocam farklı bir sistem.
    yavuzk adlı üyeden alıntı: mesajı görüntüle
    İnsery işlemi kolay. Verileri öncelikle eşleştirme çalışması yapman lazım. Bu bahsettiğin örneklerde ebob ekok var aralarında. Düzenli olarak dağıtamadığın iki total denk geldiği ihtimallerinde nasıl Bi dağıtım yapıcaksın çok bi önemi var mı eşit sayılarda dağılmış olmasının? Hatta bunları veritabanına bu şekilde kaydetmeye de gerek yok. Yalnızca a1 a1 a3 b1 vs tek seferde iki diziyi iki tabloya kaydedip php tarafında eşleştirme yapabilirsin. Yarın öbürgün herhangi bi tabloya ekleme çıkarma yaptığında başın ağrımamış olur
    Hocam dediğim şekilde olması gerekiyor. Çünkü her biri ayrı sayfa olarak kullanılacak. Bunların sırası önemli değil, önemli olan dizi içindeki her elemanın eşleşmiş şekilde INSERT işlemi yapılması. Daha farklı bir örnek göstereyim;

    sayfa_karakteri dizisi (batman, spiderman, x-man)
    sayfa_ortami dizisi (gotham, manhattan)

    ID | sayfa_url           | sayfa_adi                | sayfa_karakteri  | sayfa_ortami
    -------------------------------------------------------------------------------------
    1  | gotham-batman       | Batman Gotham'da         | batman           | gotham
    2  | burasi-muhim-degil  | Spiderman Nerede         | spiderman        | gotham
    3  | yine-url            | X-MAN'in Başına Gelenler | x-man            | gotham
    4  | url                 | Batman'e Ne Oldu         | batman           | manhattan
    5  | farkli_url          | Spiderman'i Bilmiyoruz   | spiderman        | manhattan
    6  | x-man-url           | X-MAN Manhattan'da       | x-man            | manhattan
  • 08-11-2019, 09:26:13
    #5
    $arr = array();
    foreach($b as $bdeger) {
    $temp = array();
    foreach($a as $adeger) {
    $temp[] = $adeger;
    }
    $arr[$bdeger] = $temp;
    
    }
    
    $sql = "";
    foreach($arr as $t=>$tkey) {
    foreach($t as $bb) {
    $sql . = "insert into tablo (a,b) values('".$bb."','".$tkey."')";
    }
    
    }
    dikkatle incelerseniz istediğiniz bu olsa gerek. en azından benim anladıgım bu. kolay gelsin.
  • 08-11-2019, 10:15:13
    #6
    crooper adlı üyeden alıntı: mesajı görüntüle
    $arr = array();
    foreach($b as $bdeger) {
    $temp = array();
    foreach($a as $adeger) {
    $temp[] = $adeger;
    }
    $arr[$bdeger] = $temp;
    
    }
    
    $sql = "";
    foreach($arr as $t=>$tkey) {
    foreach($t as $bb) {
    $sql . = "insert into tablo (a,b) values('".$bb."','".$tkey."')";
    }
    
    }
    dikkatle incelerseniz istediğiniz bu olsa gerek. en azından benim anladıgım bu. kolay gelsin.
    İnceledim hocam üzerinde değişiklikler de yaptım fakat foreach($t as $bb) satırında Invalid argument supplied for foreach() hatası alıyorum.

    Değerleri ekrana bastırıp göreyim sonra insert kodlarını yazayım diye şöyle bir düzenleme yaptım fakat yine aynı hata ile karşılaşıyorum.

    $b = array("A1","A2","A3");
    $a = array("B1","B2","B3");
    
    $arr = array();
    foreach($b as $bdeger) {
     $temp = array();
     foreach($a as $adeger) {
      $temp[] = $adeger;
     }
    $arr[$bdeger] = $temp;
    }
    
    $sql = "";
    foreach($arr as $t=>$tkey) {
     foreach($t as $bb) {
      echo $bb."-".$tkey."<br>";
     }
    }
  • 08-11-2019, 11:21:52
    #7
    B foreach içinde A foreach çalıştırıp INSERT VALUE değeri oluşturacaksın. Foreach çıkışı sql kodu çalıştıracaksınız. Aşağıdaki kod size yardımcı olacaktır. (Mobilden yazıyorum, dağınık olabilir)

    $sql = null;
    foreach ($b as $b) {
    foreach ($a as $a) {
    $sql.= “(‘$a’, ‘$b’),”;
    }}
    echo “INSERT INTO table (A, B) VALUES “.trim($sql,’,’).”;
  • 08-11-2019, 17:52:12
    #8
    aCadir adlı üyeden alıntı: mesajı görüntüle
    B foreach içinde A foreach çalıştırıp INSERT VALUE değeri oluşturacaksın. Foreach çıkışı sql kodu çalıştıracaksınız. Aşağıdaki kod size yardımcı olacaktır. (Mobilden yazıyorum, dağınık olabilir)

    $sql = null;
    foreach ($b as $b) {
    foreach ($a as $a) {
    $sql.= “(‘$a’, ‘$b’),”;
    }}
    echo “INSERT INTO table (A, B) VALUES “.trim($sql,’,’).”;
    Teşekkür ederim hocam, aratan kişilere alternatif olur.

    @crooper; 'ın vermiş olduğu kodlarda hatalı olan kısmı düzenledim. Çalışan kodları ilk mesaja ekliyorum.

    Yardımlarınızdan dolayı teşekkürler.