0

ページで、他の編集機能を備えた更新フォームに削除ボタンを配置しようとしていますが、すべての試みで、削除がこれを台無しにしているようです。

これは、テストできるサイトへのリンクです: http://exhibitjewellery.com/editstocktest.php (ボタンは現在、「シリーズのすべての作品」の下にあり、名前をクリックすると、折りたたみ可能なパネルとしてフォームが開きます)

コードの残りの部分がどのように見えるかを理解するのに役立つ場合は、dreaweaver cs5 ウィザードを使用しました。手伝って頂けますか?

<?php 
if (isset($_GET['delete'])) {
echo 'Do you really want to delete ' . $_GET['delete'] . '? <a  href="editstock.php?yesdelete=' . $_GET['delete'] . '">Yes</a> | <a href="editstock.php">No</a>';
exit();
}
if (isset($_GET['yesdelete'])) {
$deleteSQL = sprintf("DELETE FROM pieces WHERE id='%s' LIMIT 1",
                   GetSQLValueString($_POST['id'], "int"));

mysql_select_db($database_connectmysql, $connectmysql);
$Result1 = mysql_query($deleteSQL, $connectmysql) or die(mysql_error());
header("location: editstock.php"); 
exit();
}
?>

このボタンによってアクティブ化される上記のコード:

<input name="delete" type="button" id="delete" value="delete" style="width:20%; float:right"/>
4

3 に答える 3

0

http://exhibitjewellery.com/editstocktest.phpのソース コードを見ると、フォームが使用していることがわかります。method="post"

<form action="/editstocktest.php?" method="post" name="form4" id="form4">

だからあなたは私たちにできません$_GET-

if (isset($_GET['delete'])) {}

また、削除リンクでは、の値を使用していますがdelete、必要だと思いますid-$_POST['id']

最後に、そのリンクをクリックすると$_POST['id']内で使用できなくなるため、 を URLif (isset($_GET['yesdelete']))に追加する必要があります。id


編集 1
ここでは、URL に基づいて削除することは決して良い考えではありませんが、それを変更するための 1 つの推奨される方法です。この方法で管理者のみがアクセス/削除できるようにすることをお勧めします。は Dreamweaver で作成された関数であるため、定義GetSQLValueString()されているファイルを必ず含める必要があります。

<?php 
if (isset($_POST['delete'])) {
echo 'Do you really want to delete ' . $_POST['piece'] . '? <a  href="editstock.php?yesdelete=' . $_POST['id'] . '">Yes</a> | <a href="editstock.php">No</a>';
exit();
}
if (isset($_GET['yesdelete'])) {
include('file where GetSQLValueString() is defined'); // you have to change **file where GetSQLValueString() is defined** to the file path
$deleteSQL = sprintf("DELETE FROM pieces WHERE id='%s' LIMIT 1",
                   GetSQLValueString($_GET['yesdelete'], "int"));

mysql_select_db($database_connectmysql, $connectmysql);
$Result1 = mysql_query($deleteSQL, $connectmysql) or die(mysql_error());
header("location: editstock.php"); 
exit();
}
?>

edit #2を使用して削除機能を実行し
たいので、変更して使用する必要があります。 onclicklocation.href$_GET

あなたのhtmlボタン

<input name="delete" type="button" id="delete" value="delete" style="width:20%; float:right" onclick="window.location.href = '?delete=delete&id=<?php echo $row['id']; ?>&piece=<?php echo $row['piece']; ?>'"/>

フォーム要素をどのように設定しているかわかりませんので、$row['id']&$row['piece']をメソッドに変更してください。

次に、削除機能-

<?php 
if (isset($_GET['delete'])) {
echo 'Do you really want to delete ' . $_GET['piece'] . '? <a  href="editstock.php?yesdelete=' . $_GET['id'] . '">Yes</a> | <a href="editstock.php">No</a>';
exit();
}
if (isset($_GET['yesdelete'])) {
include('file where GetSQLValueString() is defined'); // you have to change **file where GetSQLValueString() is defined** to the file path
$deleteSQL = sprintf("DELETE FROM pieces WHERE id='%s' LIMIT 1",
                   GetSQLValueString($_GET['yesdelete'], "int"));

mysql_select_db($database_connectmysql, $connectmysql);
$Result1 = mysql_query($deleteSQL, $connectmysql) or die(mysql_error());
header("location: editstock.php"); 
exit();
}
?>

edit 3
Dreamweaver が関数を定義している場所が見つからない場合は、再宣言できます -

<?php 
if (isset($_GET['delete'])) {
echo 'Do you really want to delete ' . $_GET['piece'] . '? <a  href="editstock.php?yesdelete=' . $_GET['id'] . '">Yes</a> | <a href="editstock.php">No</a>';
exit();
}
if (isset($_GET['yesdelete'])) {

// redefine if does not exist
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType,
$theDefinedValue = "", $theNotDefinedValue = "") 
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ?
mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;    
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}


$deleteSQL = sprintf("DELETE FROM pieces WHERE id='%s' LIMIT 1",
                   GetSQLValueString($_GET['yesdelete'], "int"));

mysql_select_db($database_connectmysql, $connectmysql);
$Result1 = mysql_query($deleteSQL, $connectmysql) or die(mysql_error());
header("location: editstock.php"); 
exit();
}
?>
于 2013-07-11T03:42:29.850 に答える
-1

これを試して

<form action="" method="get">
    <input name="delete" type="submit" id="delete" value="delete" style="width:20%; float:right"/>
</form>

また

<input name="delete" type="button" id="delete" value="delete" style="width:20%; float:right" onclick="window.location.href = '?delete=delete'" />
于 2013-07-11T03:27:11.393 に答える
-1

ばかげた質問に聞こえるかもしれませんが、HTML フォームを使用していますか? また、入力タイプを「ボタン」ではなく「送信」にすることもできます。

別名

<form action="" method="GET">
    <input type="submit" name="delete" id="delete" value="delete" style="width:20%; float:right"/>
</form>
于 2013-07-11T03:27:16.190 に答える