2016-06-17 9 views
3

私がやっていることは、ユーザーが押したボタンに応じて変数に値を渡すことです。私はテーブルを作成し、whileループでボタンを削除しますが、このため、すべてのボタンは同じ名前とIDを持ちます。適切なボタンが押されたときに、どのように特定のUserIDを変数に渡すことができますか?submitを押したときに、フォームコントロールからPHP htmlの変数に値を渡す方法

これは私がボタンのいずれかを押すと

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = "A1128857795!"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password); 

    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } else{ 
     echo "Connected successfully";} 


    mysqli_select_db($conn,'test_schema'); 

    $sql = "SELECT * FROM userinfo;"; 

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

    if(!$retvalues) 
     { 
      die("could not get data: " . mysqli_error()); 
     } 


    print("<br>"); 
    echo "<form action='delete.php' method='POST'>"; 
    echo"<table border='1'>"; 
    echo"<tr align='center'>"; 
    echo "<th>ID</th>"; 
    echo "<th>NAME</th>"; 
    echo "<th>GENDER</th>"; 
    echo "</tr>"; 
    while($row = mysqli_fetch_array($retvalues, MYSQL_ASSOC)) 
    { 
      print("<tr>"); 
      echo "<td><input type='text' name='id' value='{$row['UserID']}'/></td>". " " . "<td>{$row['FirstName']}" . " " . "{$row['LastName']}</td>" . 
       " " . "<td align='center'>{$row['gender']}</td>"; 
      echo "<td><input name='Delete' value='Delete' type='submit'></td>"; 
      print("</tr>"); 
    } 

    echo "</table>"; 
    echo "</form>"; 

、それは常に最後のレコードを削除するには、DELETE文を引き起こし、表の最後の行のためのIDを毎回返す埋め込まれたHTMLと私のPHPです私のデータベースから。

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

     $delUID = $_POST['id']; 
     $sql="DELETE FROM userinfo WHERE UserID = $delUID"; 
     $query = mysqli_query($conn, $sql); 
     echo "DELETE FROM userinfo WHERE UserID = $delUID;"; 
    } 
    $conn->close(); 
?> 

アドバイスは歓迎されます。ありがとうございました。

+0

より良いあなたはdelete

+0

は実際にあなたが同じ名前を持つすべての行を提出しているとしますので、PHPは最後の値をとり、 – C2486

+0

はまだ同じ問題を持つ最後の行を削除し、私は本当にどのように文ができればということが表示されませんそれらがすべて同じIDと名前を持つため、どのボタンが押されたかを区別します。このテーブルを作成するより良い方法はありますか? – vhdz04

答えて

1

古い学校の入力ボタンの名前で配列を使用することも、<button>タグを使用して異なる値とキャプションを使用することもできます。あなたも、チェックボックスを使用することができますし、任意のは、一度に複数の行を削除するには、ボタンを提出配列バージョンで

<form method="post"> 
    <?php for($id = 1; $id <= 3 ; $id++): ?> 
    <input type="submit" name="delete_a[<?php echo $id; ?>]" value="Caption of delete button a"> 
    <button type="submit" name="delete_b" value="<?php echo $id; ?>">Caption of delete button b</button> 
    <br> 
    <?php endfor; ?> 
</form> 
<?php 
var_dump($_POST); 
?> 

。配列$_POST['delete_a']キーに興味があります。

+0

これは、ユーザーIDが連続した順序で実行されると仮定して、これが私の問題を処理すると思います。 ID = 2のユーザーが削除された場合、フォームコントロールIDはデータベースから取得したIDと一致しません。これは正しいです? – vhdz04

+0

@ vhdz04これは、デモの目的で、コードをフェイクして「フェッチ行ループ」を行うコードの単なる例です。もちろん、現在のレコードセットから実際のIDを使用します。 –

+1

この変更版で作業しています。ありがとうございます – vhdz04

0

私はこの

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = "A1128857795!"; 

// Create connection 
$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} else{ 
    echo "Connected successfully";} 


mysqli_select_db($conn,'test_schema'); 

$sql = "SELECT * FROM userinfo;"; 

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

if(!$retvalues) 
    { 
     die("could not get data: " . mysqli_error()); 
    } 


print("<br>"); 
echo "<form action='delete.php' method='POST'>"; 
echo"<table border='1'>"; 
echo"<tr align='center'>"; 
echo "<th>ID</th>"; 
echo "<th>NAME</th>"; 
echo "<th>GENDER</th>"; 
echo "</tr>"; 
while($row = mysqli_fetch_array($retvalues, MYSQL_ASSOC)) 
{ 
     print("<tr>");// I don't think u need to give user a chance to edit their UserID.. so I kept it in hidden type 
     echo "<td>{$row['UserID']}<input type='hidden' name='userid' value='{$row['UserID']}'/></td>". " " . "<td>{$row['FirstName']}" . " " . "{$row['LastName']}</td>" . 
      " " . "<td align='center'>{$row['gender']}</td>"; 
     echo "<td><input name='Delete' value='Delete' type='submit'></td>"; 
     print("</tr>"); 
} 

echo "</table>"; 
echo "</form>"; 

受信側

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

    $delUID = $_POST['userid']; 
    $sql="DELETE FROM userinfo WHERE UserID = $delUID"; 
    $query = mysqli_query($conn, $sql); 
    echo "DELETE FROM userinfo WHERE UserID = $delUID;"; 
} 
$conn->close(); 
+0

私はそのように名前を異ならせることができますが、どうすれば私のif(isset)を扱うことができますか。私は立ち往生している。 – vhdz04

+0

私もそのことを書いたと思います。編集部を見る –

0

@f_antoは正しい考えを持っているような何かをやって考えます。

クエリループを使用してテーブルを作成しますが、各行に固有のリンクまたはボタンを付けます。

次に、汚れた作業を行うためにAJAX呼び出しを使用します。

$(".delete-button").on('click', function(e){ 
    e.preventDefault(); 
    var $id = $(this).attr("id"); 
    $.ajax({ 
     type: "POST", 
     url: "delete.php", 
     data: ["id": $id] 
    }); 
}); 

などです。ライト例:https://jsfiddle.net/mcmullen_greg/okvrbfnx/1/

関連する問題