2017-08-23 4 views
1

変数が設定され、すべてがstart.phpに正しく表示されます。表示された両方の変数のどちらかをフォームで選択できます。選択フォームを使用してファイルからファイルに変数を渡す

問題点:変数$projektcheckまたは$projektcheckkは、nxtfile.phpに渡され、フォームが送信されます。私がprint($_POST['prjkttype']);でそれをチェックすると、変数は未定義で何も印刷されません。それは私のところに瞬時に切り替わりますecho"Data is wrong";

設定されていても、他のファイルに渡されないのはなぜですか?

start.php:

<?PHP 
    session_start(); 
    $projektcheck = $_SESSION['projektname']; 
    $projektcheckk = $_SESSION['projektnamee'];     
?> 
[other codestuff] 
<script> 
function validateForm() { 
    var fields = ['prjkttype'] 

    var i, l = fields.length; 
    var fieldname; 
    for (i = 0; i < l; i++) { 
     fieldname = fields[i]; 
    } 
    f1.method="POST"; 
    f1.submit(); 
} 
</script> 


[other codestuff] 

<form action="nxtfile.php" method="POST" name="f1"> 
    <select class="selectstyle" name="prjkttype" form="submit"> 
<?PHP 
    if (isset($projektcheck)) { 
     echo"<option value='1'>$projektcheck </option>";  
    } else { 
    } 

    if (isset($projektcheckk)) { 
     echo"<option value='2'>$projektcheckk </option>"; 
    } else { 
    } 
?> 
    </select> 

    <input type=button name=s1 value="Insert" onClick="validateForm()"> 

</form> 
[other codestuff] 

nxtfile.php:

<?PHP 
session_start(); 
include ("../connection.php"); 
$prjkttype=$_POST['prjkttype']; 


print($_POST['prjkttype']); 

$checkindb="SELECT * FROM projekte WHERE (projektname = '$prjkttype')"; 
$dbcheckk=mysqli_query($con ,$checkindb); 
$dbcheckedd=mysqli_fetch_array($dbcheckk); 

if($dbcheckedd > 0){ 
    header ("Location: xy.php"); 
} else { 
    echo "Data is wrong."; 
} 
?> 
+1

分かりやすいコードの字下げが良い考えです。コードを読むのに役立ちます。もっと重要なのは**あなたのコードをデバッグするのに役立ちます** [コーディング標準を見てください](http://www.php-fig.org/psr/psr-2/ )あなた自身の利益のために。あなたはこのコード を数週間/数ヶ月で修正するように頼まれるかもしれません。そして、あなたは私に最後に感謝します。 – RiggsFolly

+1

_small note:もしあなたが 'ELSE'で何もしていなければ' ELSE'をコードしないでください – RiggsFolly

+0

あなたのスクリプトは[SQL Injection Attack]の危険にさらされています(http://stackoverflow.com/questions/60174/how -can-i-prevent-sql-injection-in-php) [あなたが入力をエスケープしている場合、その安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets- around-mysql-real-escape-string) [準備済みのパラメータ化された文](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

答えて

1

あなたは以下のようなあなたの変数に値を設定する必要があります。変数ではなく値を渡します。これは動作します:

if (isset($projektcheck)) { 
     echo"<option value='$projektcheck'>$projektcheck </option>";  
    } 

    if (isset($projektcheckk)) { 
     echo"<option value='$projektcheckk'>$projektcheckk </option>"; 
    } 
関連する問題