0

ステータス onclick を更新しようとしています。表示機能で私はこのように与えました

if($row['IsActive']=="1")
{
    echo "<td> <a href='managecategories.php?IsActive=0&CategoryID=" .$row['CategoryID']. "'>Active</a></td>";
}
else
{
    echo "<td> <a href='managecategories.php?IsActive=1&CategoryID=" .$row['CategoryID']. "'>Deactive</a></td>";
}

ページをロードすると、データベースのステータスを取得する必要があります。そのため、このようなコードを記述しました

      if (isset($_GET['IsActive']))
{
$status = $_GET['IsActive'];
$id = $_GET['CategoryID'];
 if($status =="0")

{

$sql = "update Categories set IsActive= 0 where CategoryID='$id'";
        $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
else 
 if($status =="1")
{
$sql = "update Categories set IsActive= 1 where CategoryID='$id'";
        $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
}

しかし、エラーではなく結果が得られません...間違っているところを教えてください

4

2 に答える 2

0

MySQL にはtrueandがなく、 and ( )falseのみがあります。したがって、クエリを次のように変更します。01INT

$sql = "update Categories set IsActive= 0 where CategoryID='$id'"; // FALSE
$sql = "update Categories set IsActive= 1 where CategoryID='$id'"; // TRUE

さらに、コードの最初の部分でこれを正しく行っていることがわかります。行がアクティブな場合は、非アクティブ化するリンクをif 1 then print 0出力します ( )。

しかし、コードの 2 番目の部分では、$status変数に設定する必要がある値を取得してから、もう一度if 1 then store 0. これは間違いです。実際、この方法では常に、アクティブなステータスを現在の値に設定する UPDATE クエリを実行します。これは、二重 swapのためです。

つまり、次のように、コードの 2 番目の部分でクエリを交換してみてください。

if ($status == "0") 
{
    $sql = "update Categories set IsActive=0 where CategoryID='$id'";
    $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
else if($status == "1")
{
    $sql = "update Categories set IsActive=1 where CategoryID='$id'";
    $result = mysql_query($sql) or die("Could not insert data into DB: " . mysql_error());
}        
于 2012-05-18T09:48:40.320 に答える
0

データベースで整数型を使用していると思います。TINYINTMySQLにはブール型がないため、ブール値に使用することはわかっています。あなたの表示機能if($row['IsActive']=="1")はそれをサポートしています。ただし、更新クエリ$sql = "update Categories set IsActive= 'false' where CategoryID='$id'";はそうではありません。ここでは、文字列値を保存しようとしています。

そのため、最初にブール値が としてTINYINTデータベースに保存されていることを確認する必要があります。(PHP 側で文字列を扱うのはより困難です。) 次に、データベースに挿入する値が実際に正しい型であることを確認する必要があります。には 0 をfalse、 には 1 を使用する必要がありますtrue。これは PHP でも機能します。

$isActive = 1;
$if($isActive) {
   // This code is run
}

また、カテゴリ ID を検証する必要があることに注意してください。事前の検証なしでユーザー入力を挿入しているため、危険です。ユーザーは、1 つのコマンドですべてのカテゴリをアクティブ化または非アクティブ化するのは非常に簡単です。

于 2012-05-18T10:01:11.610 に答える