2017-12-08 7 views
-1

2つのテーブルにデータを挿入するこのプロセスがあり、うまくいきますが、アップロードするために3つのイメージを選択してデータベースにクエリして、何かがここでpdoクエリの問題を挿入する間違ったテーブルに複数の挿入

間違って..テーブルpoze_articolの行におけるツアー(pid)から同じIDを持つ画像パスに:私は、DB 3つのクエリの挿入を参照し、ツアーからテーブルツアーと同じIDを持つ3つの挿入中の1つでなければなりませんPHPコード:

  <?php 
     $servername = ""; 
     $username = ""; 
     $password = ""; 
     $dbname = ""; 
     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 

     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 
     if(isset($_POST['addtour'])) 
     { 

     #### START FROM HERE I THINK IS THE PROBLEM ### 
     define ("MAX_SIZE","9000"); 
     function getExtension($str) 
     { 
       $i = strrpos($str,"."); 
       if (!$i) { return ""; } 
       $l = strlen($str) - $i; 
       $ext = substr($str,$i+1,$l); 
       return $ext; 
     } 
     $valid_formats = array("jpg", "png", "bmp","jpeg"); 

      $uploaddir = "../../../img/carousel/"; //image upload directory 
      foreach ($_FILES['photos']['name'] as $name => $value) 
      { 

       $filename = stripslashes($_FILES['photos']['name'][$name]); 
       $size=filesize($_FILES['photos']['tmp_name'][$name]); 
       //get the extension of the file in a lower case format 
        $ext = getExtension($filename); 
        $ext = strtolower($ext); 

       if(in_array($ext,$valid_formats)) 
       { 
        if ($size < (MAX_SIZE*1024)) 
        { 
        $image_name=time().$filename; 

        $newname=$uploaddir.$image_name; 

        if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname)) 
        { 

     $sql2 = "INSERT INTO tours (titlu,durata,descriere,pret,ribbon,titlu_slider,desc_slider,descriere_box,titlu_box1,desc_box1,titlu_box2,desc_box2,titlu_box3,desc_box3,titlu_box4,desc_box4) VALUES (
     '".$_POST["oras_caseta"]."', 
     '".$_POST["durata_caseta"]."', 
     '".$_POST["descriere_caseta"]."', 
     '".$_POST["pret_caseta"]."', 
     '".$_POST["icon_caseta"]."', 
     '".$_POST["titlu_slider"]."', 
     '".$_POST["descriere_slider"]."', 
     '".$_POST["descriere_overview"]."', 
     '".$_POST["titlu_box1"]."', 
     '".$_POST["desc_box1"]."', 
     '".$_POST["titlu_box2"]."', 
     '".$_POST["desc_box2"]."', 
     '".$_POST["titlu_box3"]."', 
     '".$_POST["desc_box3"]."', 
     '".$_POST["titlu_box4"]."', 
     '".$_POST["desc_box4"]."')"; 

     if ($conn->query($sql2) === TRUE) { 
      $last_id = $conn->insert_id; 

      echo '<div class="alert alert-success" role="alert"> 
      <strong>Bravo!</strong> Ai adaugat cu succes un traseu pe site. 
     </div>'; 
     } else { 
      echo "Error: " . $sql . "<br>" . $conn->error; 
     } 
     $sql = "INSERT INTO poze_articol (poza_articol,pid) VALUES ('img/carousel/$image_name','$last_id')"; 

     if ($conn->query($sql) === TRUE) {} 
      } 
      } 
     } 
    } 
} 
    $conn->close(); 
     ?> 
+0

を行うことができますが、問題は何ですか?今何が起きていますか? –

+0

私がコアタクトを送信すると、 'tours'テーブルに' poze_articol'というテーブルを1回だけ挿入し、1つ、2つ、3つ、またはいくつかのピクチャをツアーテーブルから同じIDで挿入することを選択します。異なるIDを持つすべてを挿入しています.. – Alex

答えて

-1

私はよくあなたワット、あなたを理解している場合アリはそれがある場合は、

だからまず、データベースの挿入のすべてが他に、foreachループの範囲内にある...このpoze_articolフィールドの全ては、ツアーフィールドのIDを持っているpoze_articol

をファイル・フィールドの数を作成しますforeachループ内のコードの部分は、ループが反復する回数x回実行されます。 (n回彼は$ _FILES ['photos'] ['name']あなたの場合の項目を持っています)。

問題を解決するには、 私は最初にforeachの外にツアーフィールドを作成することをお勧めします!あなたはすべてのファイルの両方がローカルディスクおよびデータベースに保存されることを確認してくださいしたいので

 $sql2 = "INSERT INTO tours (titlu,durata,descriere,pret,ribbon,titlu_slider,desc_slider,descriere_box,titlu_box1,desc_box1,titlu_box2,desc_box2,titlu_box3,desc_box3,titlu_box4,desc_box4) VALUES (
    '".$_POST["oras_caseta"]."', 
    '".$_POST["durata_caseta"]."', 
    '".$_POST["descriere_caseta"]."', 
    '".$_POST["pret_caseta"]."', 
    '".$_POST["icon_caseta"]."', 
    '".$_POST["titlu_slider"]."', 
    '".$_POST["descriere_slider"]."', 
    '".$_POST["descriere_overview"]."', 
    '".$_POST["titlu_box1"]."', 
    '".$_POST["desc_box1"]."', 
    '".$_POST["titlu_box2"]."', 
    '".$_POST["desc_box2"]."', 
    '".$_POST["titlu_box3"]."', 
    '".$_POST["desc_box3"]."', 
    '".$_POST["titlu_box4"]."', 
    '".$_POST["desc_box4"]."')"; 

    if ($conn->query($sql2) === TRUE) { 
     $last_id = $conn->insert_id; 

     echo '<div class="alert alert-success" role="alert"> 
     <strong>Bravo!</strong> Ai adaugat cu succes un traseu pe site. 
    </div>'; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 

、あなたは完全性を保証するためにtransactionを使用することができます。ツアーフィールドが作成された後

ジュスト、あなたはだからあなたのループ

foreach ($_FILES['photos']['name'] as $name => $value) 
     { 

      $filename = stripslashes($_FILES['photos']['name'][$name]); 
      $size=filesize($_FILES['photos']['tmp_name'][$name]); 
      //get the extension of the file in a lower case format 
       $ext = getExtension($filename); 
       $ext = strtolower($ext); 

      if(in_array($ext,$valid_formats)) 
      { 
       if ($size < (MAX_SIZE*1024)) 
       { 
       $image_name=time().$filename; 

       $newname=$uploaddir.$image_name; 

       if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname)) { 

    $sql = "INSERT INTO poze_articol (poza_articol,pid) VALUES ('img/carousel/$image_name','$last_id')"; 

    if ($conn->query($sql) === TRUE) {} 
     } 
     } 
    } 
} 
+0

多くのありがとう、働いた – Alex

関連する問題