2016-08-10 11 views
1

CRUDをしようとすると、すべて私の更新機能を除いて動作します。私は問題が2番目のSQLクエリにあるように感じる。私が提出をクリックすると、それはちょうどリフレッシュされ、変更はなくなりました。誰かが私に何を変更する必要があるかを見つける方法を教えてください/私に何を変更するかを教えてください。代わりにPHP内のフォームを構築する

<head> 
<title>Update</title> 
</head> 

<body> 
</form> 



<?php 

require_once('dbconnect.php'); 
$id = $_GET['id']; 
$sql = "SELECT * FROM dealers where ID=$id"; 
$result = $conn->query($sql); 



if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo '<form action="" method="post">'; 
     echo "Company: <input type=\"text\" name=\"CName\" value=\"".$row['CName']."\"></input>"; 
     echo "<br>"; 
     echo "Contact: <input type=\"text\" name=\"Contact\" value=\"".$row['Contact']."\"></input>"; 
     echo "<br>"; 
     echo "City: <input type=\"text\" name=\"City\" value=\"".$row['City']."\"></input>"; 
     echo "<br>"; 
     echo "<input type=\"Submit\" = \"Submit\" type = \"Submit\" id = \"Submit\" value = \"Submit\">"; 
     echo "</form>"; 
    } 
    echo "</table>"; 
} else { 
    echo "0 results"; 
} 
if(isset($_POST['Submit'])){ 
$sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where ID=$id"; 
$result = $conn->query($sql); 
} 
$conn->close(); 

?> 
+1

あなたのコードは、[SQL-注射](http://stackoverflow.com/questionsに対して脆弱であるas_idのようなテーブルのディーラーでより多くのキーを作成する必要があります/ 60174/how-can-i-prevent-sql-injection-in-php)を使用します。 Prepared、Parameterized Queriesを使用してください。 –

+0

あなたが 'if(isset($ _ POST)'ロジックブロックで、HTMLがPHP 'echo'を介して提供されていると主張していたPHBを持っていましたら)' SELECT * ID = $ id - >ディストリビューターからIDを取得し、変更をHTMLでエコーバックします。これはHTMLを処理するサーバーサイドのロジックなので、泥の中の豚のように乱雑です。 )とUPDATE(crUd)を同じ関数で使用しています。サーバーから動的HTMLを提供していても、これは悪いです(悪いこともあります)。 – RyanNerd

答えて

2

、ちょうどあなたのwhileループ内にPHPタグを終了して壊し、きれいな方法であなたのHTMLを記述し、再度PHPを起動します。だからあなたは間違いをしない。

また、フォームから$idを送信してください。

この

<?php 

require_once('dbconnect.php'); 

$id = $_GET['id']; 
$sql = "SELECT * FROM dealers where ID=$id"; 
$result = $conn->query($sql); 


if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
?> 

    <form action="" method="post"> 

     <input type="hidden" name="id" value="<?= $id ?>" /> 

     Company: <input type="text" name="CName" value="<?= $row['CName'] ?>" /> 
     <br> 

     Contact: <input type="text" name="Contact" value="<?= $row['Contact'] ?>" /> 
     <br> 

     City: <input type="text" name="City" value="<?= $row['City'] ?>" /> 
     <br> 

     <input type="Submit" name="Submit" id="Submit" value="Submit" /> 

    </form> 

<?php 

    } // end while loop 

    echo "</table>"; 
} 
else { 
    echo "0 results"; 
} 

注意してみてください:あなたの更新クエリに未定義の変数を渡しています。フォームを送信する際には、それらの変数を使用する前にその変数を定義する必要があります。

if (isset($_POST['Submit'])) { 

    $CName  = $_POST['CName']; 
    $Contact = $_POST['Contact']; 
    $City  = $_POST['City']; 

    $id  = $_POST['id']; 

    $sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where ID=$id"; 

    $result = $conn->query($sql); 
} 

$conn->close(); 
+0

答えがいっぱいです –

+0

私はちょうど感謝します。 – Jitter

0

ループ? ID主キーかどうか

は多分uがなステートメントで

<input type="hidden" name="idform" value="$as_id"> 

if($_POST){ 
$idf = $_POST['idform']; 
if(!empty($idf)){ 
$sql = "UPDATE dealers SET CName='$CName', Contact='$Contact', City='$City' where as_id=$idf"; 
$result = $conn->query($sql); 
} 
$conn->close(); 
} 
関連する問題