2016-09-04 6 views
-3

이 코드는 작동하지 않습니다. want to 업데이트가없는 다른 페이지 (업데이트)의 기본 사이트이기도합니다.양식 : 데이터베이스에 INSERT하면 작동하지 않습니다.

코드는 정보를 데이터베이스에 추가해야합니다.

쿼리가 단독으로 작동합니다. ( 프로 이 다른 테이블에 연결된 필드를 가지고 있기 때문에 : 는 fundpro, 도시,이 국가에 연결되어 typepro도시) 나는 어쩌면 쿼리가 너무 복잡하다고 생각하지만, 이후 작품 그 자체로는 PHP에서 작동하도록 만드는 방법이 있다고 생각합니다. 나는 잘못하고 있습니다.

업데이트 페이지 (질문과 코드 위의 링크) 양식에 올바른 필드가 표시되어 있으므로 두 페이지 모두에 중대한 실수가 없다고 가정합니다. 문제는 정보를 데이터베이스에 전달하는 것과 같습니다.

는 정말 실질적으로 난 정말 결국 필요한 유일한 페이지이고, 나는 내 국가 테이블이있는 동안은, 내 조직프로 표를 작동 할 수 없습니다, 삽입 데이터 페이지를 필요 매우 유사한 실행 가능 추가 및 편집 페이지.

나는 이유가 무엇인지 모르겠다. 나는 그것을 어떻게 작동시키는 지 모른다. 어쩌면 누군가가 문제를 보거나 대체 접근법을 알고있을 것입니다.

tl; dr 데이터가 필드에서 데이터베이스에 INSERT되지 않습니다. 질의 자체는 update.php 파일을 기반으로 한 coccer입니다. form은 정보를 올바르게 반환합니다.

여기에 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

안녕하십니까, 게시 오류가 있습니까? – tanaydin

+0

패턴과 함께 가야한다 :'$ x = isset ($ y)? $ y' : $ z' 두 개의 다른 과제 중 하나를 실행하기 위해 삼항 항을 사용하는 것이 아닙니다. – tadman

+0

에는 오류가 표시되지 않습니다. – Evan

답변

-1

당신은 단지 당신의 삽입 문에서 9 개 매개 변수에 허용하고 있지만 bind_param 방법 (10)을 통과한다.

+0

아니요, 거기에 9가 있습니다. – Evan

+0

@ 에van 예.하지만 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

관련 문제