2017-12-21 12 views
0

これは私の仕事では使用しないので、これはPHPの最初の手順です。データベーステーブルにデータを追加するフォームを準備したいと思います。 私は、コードのこの部分を準備:PHP IF文はWhileループで一度だけ真の値を返します

<?php 

require "init.php"; 

$marina_id=$_POST["marina_id"]; 
$b_cor=$_POST["b_cor"]; 
$size=$_POST["size"]; 
$available_place=$_POST["available_place"]; 
$l_cor=$_POST["l_cor"]; 
$is_open=$_POST["is_open"]; 
$description=$_POST["description"]; 

$sql= "insert into marinas (marina_id, b_cor, l_cor, size, available_place, is_open, description) values('$marina_id', '$b_cor', '$l_cor', '$size', '$available_place', '$is_open', '$description');"; 
if (mysqli_query($con, $sql)) 
{ 
    echo "values were added"; 
} else { 
    echo "values were not added"; 
} 
$count = 0; 
while ($count<$size) 
{ 
    if ($count<$available_place) { 
     $isavailable = 1; 
     $accesscode = ""; 
    } else { 
     $isavailable = 0; 
     $accesscode = "abcdefgh"; 
    } 
    $dock_id=(string)$marina_id."0".(string)$count; 
    $nullObject=""; 
    $sql2= "insert into places (
     place_id, 
     b_cor, l_cor, 
     is_available, 
     plan, 
     depth, 
     width, 
     length, 
     description, 
     marina_id, 
     access_code, 
     reserved_from, 
     reserved_to, 
     last_update) values (

     '$dock_id', 
     '$b_cor', 
     '$l_cor', 
     '$isavailable', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject', 
     '$marina_id', 
     '$accesscode', 
     '$nullObject', 
     '$nullObject', 
     '$nullObject');"; 
    if (mysqli_query($con, $sql2)) //$con comes from init.php 
    { 
    echo "complete."; 
    } else { 
    echo "something wrong with data."; 
    } 
    $count = $count+1; 
} 


?> 

私の考えは、マリーナのテーブルにデータを持つ行を挿入するためであり、その「サイズ」の値に基づいてサイズ値は何度でも場所のテーブルにデータを余分な行を追加します。私はwhileループを使用しましたが、$ sql2のIF文は一度だけtrueを返しますが、なぜそれがあるのか​​わかりません。私の場合は、コードロジックが正常であると思われ、いくつかのデータが追加されました。私のようなソリューションのPHPには何か制限がありますか?

答えて

1

place_idが自動インクリメントキーかどうかを確認してください。おそらく、キーの一意性に違反するため、誤っている可能性があります。

+0

* $ dock_id =(string)$ marina_id。 "0"。(string)$ count; *はplace_idの値を一意にしませんか?整数値を文字列に結び付ける正しい方法ではないのですか? – Darek

+0

別の方法は、整数を引用符で囲むことです。 $ foo = 5; $ foo = "$ foo" 質問を印刷するにはecho –

+0

ありがとう、Francesco。あなたが言ったように、ユニークなキーに問題がありました。私はDB設定時に間違いを犯し、place_idではなくmarina_idに 'unique'を設定しました。 – Darek

関連する問題