2016-06-20 9 views
-2

私は私が更新する必要があるバックエンドを開発しようとしているが、私の問題は、私のmysqliデータベースの 今の私のコードは次のとおりです。私のスクリプトは、私はちょうど1つを編集するときにすべてのフィールドをudpating

<html> 
<body> 
<?php 

    ini_set('display_errors', 1); 
    error_reporting(~0); 

    $serverName = "localhost"; 
    $userName = "root"; 
    $userPassword = ""; 
    $dbName = "hotel_vaniet"; 

    $strCustomerID = null; 

    if(isset($_GET["cod"])) 
    { 
     $cod = $_GET["cod"]; 
    } 


    $serverName = "localhost"; 
    $userName = "root"; 
    $userPassword = ""; 
    $dbName = "hotel_vaniet"; 

    $conn = mysqli_connect($serverName,$userName,$userPassword,$dbName); 

    $sql = "SELECT * FROM quartos WHERE cod=$cod"; 

    $query = mysqli_query($conn,$sql); 

    $result=mysqli_fetch_array($query,MYSQLI_ASSOC); 

?> 
<div id="main"> 
<form action="editar_quartos_final.php" name="frmAdd" method="post"> 
<br><h1>Página de Edição</h1> 
<br><hr/> 
<div id="login2"> 
<table width="284" border="1"> 
    <tr> 
    <th width="120">Tipo</th> 
    <td width="238"><input type="text" name="tipo" size="50" value="<?php echo $result["tipo"];?>"></td> 
    </tr> 
    <tr> 
    <th width="120">Capacidade</th> 
    <td><input type="text" name="capacidade" size="50" value="<?php echo $result["capacidade"];?>"></td> 
    </tr> 
    <tr> 
    <th width="120">Preço p/ Noite</th> 
    <td><input type="text" name="preco" size="50" value="<?php echo $result["preco"];?>"></td> 
    </tr> 
    <tr> 
    <th width="120">Reservado</th> 
    <td><input type="text" name="reservado" size="50" value="<?php echo $result["reservado"];?>"></td> 
    </tr> 
    </table> 
    <br><input id="submitbuttoneditar" type="submit" value=" Editar " name="submit"/><br /> 
    </div> 
</form> 

<?php 
mysqli_close($conn); 
?> 
</body> 
</html> 

この最初のページ、このページが別の場所に私を送るには、すべての変更を行います。第2ページ:

<html> 
<head> 
<title>Página de Edição do Cliente</title> 
</head> 
<body> 
<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "hotel_vaniet"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "UPDATE quartos SET 
      tipo = '".$_POST["tipo"]."' , 
      capacidade = '".$_POST["capacidade"]."' , 
      preco = '".$_POST["preco"]."' , 
      reservado = '".$_POST["reservado"]."' 
      WHERE cod=cod"; 

if ($conn->query($sql) === TRUE) { 
    echo "Dados actualizados com sucesso!"; 
    header("Location: quartos.php"); 
} else { 
    echo "Erro na edição dos dados! " . $conn->error; 
    header("Location: quartos.php"); 
} 

$conn->close(); 
?> 
</body> 
</html> 

ありがとうございました!

+0

'cod = cod'は常にtrueです。どのレコードを正確に更新したいですか? –

+0

どこcod = $ codがトリックを行うべきである – rahul

答えて

0

最初のページには$codという変数があり、これは$_GET["cod"]になります。 2番目のページで$cod変数が定義されていません。フィールドcodの値は、フィールドcodの値と同じであるアップデート - だからあなたの試みは

WHERE cod=cod 

を意味更新します。また、すべてのレコードについて真実であるため、すべてのレコードが更新されます。

解決策は、$codの値を2番目のスクリプトに渡すことです。

たとえば、あなたが最初のフォームから隠しフィールドでそれを行うことができます。

<form action="editar_quartos_final.php" name="frmAdd" method="post"> 
<br><h1>Página de Edição</h1> 
<br><hr/> 
<input type="hidden" name="cod" value="<?php echo $cod?>" /> 
<div id="login2"> 
<table width="284" border="1"> 
    <tr> 
    <th width="120">Tipo</th> 
    <td width="238"><input type="text" name="tipo" size="50" value="<?php echo $result["tipo"];?>"></td> 
    </tr> 
    <tr> 

hiddenタイプで、このフィールドを参照してください?

そして、あなたの2番目のスクリプトの使用$_POST['cod']中:

$sql = "UPDATE quartos SET 
     tipo = '".$_POST["tipo"]."' , 
     capacidade = '".$_POST["capacidade"]."' , 
     preco = '".$_POST["preco"]."' , 
     reservado = '".$_POST["reservado"]."' 
     WHERE cod=" . $POST['cod']; 

そしてもちろん、あなたのコードはsql injectionsに対して脆弱です。 準備が整った文をできるだけ早く使ってください。

+0

私はあなたが私に言ったことをしましたが、問題を、それを更新するためにボタンをクリックすると何もしません、例えば、私は "動作しない、同じデータを保持します。 –

+0

あなたの '$ sql'をエコーし​​ます。構文をチェックし、mysqlで直接クエリを実行します。 –

+0

は既にそれをしました、私はとても怒っています、私はこの問題をほぼ3時間解決しようとしています –

関連する問題