2016-09-04 4 views
-3

このコードを動作させることはできません。 want toが更新されていない他のページ(アップデート)のベースにもなっています。フォーム:データベースにINSERTしても動作しません。

コードは、データベースに情報を追加することになっています。

クエリは単独で動作します。が、それは動作しますので、:( fundpro、typeproに接続されているプロ が異なるテーブルに接続されているフィールドを持っているので)私は多分、クエリが複雑すぎると思いましたそれだけでPHPで動作させる方法があると思いますが、私は間違っています。

フォームには正しいフィールドが表示されますので、両方のページに重大な間違いがないと仮定します。この問題は、情報をデータベースなどに配信することに問題があります。

は、私は本当にそれが実質的に私は本当に最後に必要なページだけで、私は私のテーブルがありながら、それは、私のORGプロテーブルに動作させることができない、挿入データページが必要非常に似ている、実行可能な追加と編集のページ。

私はアイデアがなくなってしまったのですが、その理由を知りませんでした。たぶん、誰かが問題を見ているか、代替のアプローチを知っていますか?

tl; drデータはフィールドからデータベースにINSERTされません。クエリはupdate.phpファイルに基づいて単独でcoccerです。フォームは情報を正しく返します。

ここには、SQLFiddleEER Diagramがあります。

<?php 
    header('Content-type: text/html; charset=utf-8'); 


    isset($_GET['submit'])?$submit=true:$submit=false; 

    if(!$submit){ 
     ?> 
     <!DOCTYPE html> 
    <html> 
    <head> 
    <style>h1{color:red;}label{color:darkred;}</style> 
    <title>Add project</title> 
    <meta charset=”UTF-8”>  

    </head> 

    <body> 
    <h1>Add project:</h1> 
    <form name="f1" action="" method="GET" onSubmit="return validateForm(this)"> 


<label>IDpro </label><input type="text" name="idpro"><br> 
<label>numpro</label><input type="text" name="numpro" ><br> 
<label>namepro </label><input type="text" name="namepro" ><br> 
<label>datef </label><input type="text" name="datef" ><br> 
<label>datet </label><input type="text" name="datet" ><br> 
<label>descr </label><input type="text" name="descr" ><br> 
<label>typepro </label><input type="text" name="typepro" ><br> 
<label>fundpro </label><input type="text" name="fundpro" ><br> 
<label>IDci </label><input type="text" name="idpro" ><br> 


    <input type="reset" value="clear"> 
    <input type="submit" value="add" name="submit"><br> 
    </form> 
    </body> 
    </html> 
    <?php 
    }else{ 
     include "../config.php"; 
    isset($_GET['idpro']) ? $idpro=$_GET['idpro'] : $idpro=''; 
    isset($_GET['numpro']) ? $numpro=$_GET['numpro'] : $numpro=''; 
    isset($_GET['namepro']) ? $namepro=$_GET['namepro'] : $namepro=''; 
    isset($_GET['datef']) ? $datef=$_GET['datef'] : $datef=''; 
    isset($_GET['datet']) ? $datet=$_GET['datet'] : $datet=''; 
    isset($_GET['descr']) ? $descr=$_GET['descr'] : $descr=''; 
    isset($_GET['typepro']) ? $typepro=$_GET['typepro'] : $typepro=''; 
    isset($_GET['fundpro']) ? $fundpro=$_GET['fundpro'] : $fundpro=''; 
    isset($_GET['idci']) ? $idci=$_GET['idci'] : $idci=''; 

     $sql="INSERT INTO pro(idpro, numpro, namepro, datef, datet, descr,typepro_idtypepro, fundpro_idfundpro, city_idci) VALUES (?,?,?,?,?,?,?,?,?)"; 

     $stmt = $mysqli->prepare($sql); 

     $stmt->bind_param('ssddsiiii', $numpro, $namepro, $datef, $datet,$descr, $typepro_idtypepro, $fundpro_idfundpro, $city_idci, $idpro); 

     $stmt->execute(); 

     $stmt->close(); 

     $mysqli->close(); 

     header("Location: view.php"); 
     //} 
    } 
    ?> 

UPDATE:シンプルなコード、同じパターン:

header('Content-type: text/html; charset=utf-8'); 


isset($_GET['submit'])?$submit=true:$submit=false; 

if(!$submit){ 
    ?> 
    <!DOCTYPE html> 
<html> 
<head> 
<style>h1{color:red;}label{color:darkred;}</style> 
<title>Add city</title> 
<meta charset=”UTF-8”>  

</head> 

<body> 

<h1>Add city:</h1> 
<form name="f1" action="" method="GET" onSubmit="return validateForm(this)" > 
<label>city id </label><input type="text" name="idci"><br> 
<label>city </label><input type="text" name="nameci"><br> 

<label>country id </label><input type="text" name="country_idco"><br> 
<input type="reset" value="clear"> 
<input type="submit" value="add" name="submit"><br> 


</body> 
</html> 
<?php 
}else{ 
    include "../config.php"; 
    isset($_GET['idci'])?$idci=$_GET['idci']:$idci=''; 
    isset($_GET['nameci'])?$nameci=$_GET['nameci']:$nameci=''; 
// isset($_GET['nameco'])?$nameco=$_GET['nameco']:$nameco=''; 
    isset($_GET['idco'])?$idco=$_GET['idco']:$idco=''; 

    //if(($name!='')&&($nameci!='')&&($nameco!='')){ 
     //echo "$name $nameci $nameco"; 


    $sql="INSERT INTO city(idci, nameci,country_idco) VALUES (?,?,?)"; 

    $stmt = $mysqli->prepare($sql); 

    $stmt->bind_param('isi', $idci, $nameci, $country_idco); 

    $stmt->execute(); 

    $stmt->close(); 

    $mysqli->close(); 

    header("Location: view.php"); 
    //} 
} 
+0

こんにちは、投稿エラーがありますか?これはhttp://php.net/manual/tr/mysqli.error.php – tanaydin

+0

を使うことができます。 '$ x = isset($ y)? $ y:$ z'を使用して、2つの異なる割り当てのうちの1つを実行します。 – tadman

+0

はエラーを表示しません。 – Evan

答えて

-1

あなただけのINSERT文で9つのパラメータを可能にしているが、あなたのbind_param方法で10を通過しています。

+0

いいえ、あります。 – Evan

+0

@エヴァンはい、あなたは1 – Haring10

1
<label>IDpro </label><input type="text" name="idpro"><br> 
<label>numpro</label><input type="text" name="numpro" ><br> 
<label>namepro </label><input type="text" name="namepro" ><br> 
<label>datef </label><input type="text" name="idpro" ><br> 
<label>datet </label><input type="text" name="idpro" ><br> 
<label>descr </label><input type="text" name="descr" ><br> 
<label>typepro </label><input type="text" name="numpro" ><br> 
<label>fundpro </label><input type="text" name="numpro" ><br> 
<label>IDci </label><input type="text" name="idpro" ><br> 

複数の入力フィールドの名前を同じ値に設定しました。 ように:

<label>typepro </label><input type="text" name="numpro" ><br> 
<label>fundpro </label><input type="text" name="numpro" ><br> 

あなたのクエリ:

$sql="INSERT INTO pro(idpro, numpro, namepro, datef, datet, descr,typepro_idtypepro, fundpro_idfundpro, city_idci) VALUES (?,?,?,?,?,?,?,?,?)"; 

あなたがそこに見るために - (idpro、numpro、namepro、datef、datet、DESCR、typepro_idtypepro、fundpro_idfundpro、city_idci)。あなたのデータベースは、あなたがそれらにマッチさせるために提供する引数を期待しています。したがって、最初の引数はidproにマップされます。 idproを最後の引数として送信すると、city_idciにマップされ、データ型の不一致エラーが発生します。

ご注文を修正し、基本を正しく取得してください。

+0

さんに感謝しました。私は編集しましたが、これは問題ではありません。 – Evan

+0

問題はどうなりますか? – Kandhan

+0

質問に私がなぜ尋ねたのか分かりません – Evan

関連する問題