-3

クエリの値を使用しようとしています。

このコードを見てください:

//Anything goes here
........
$show="SELECT *FROM persons";
$result=mysqli_query($con,$show);
echo "<form method='post'>";
echo "<table border=1>";
echo "<tr>";
echo "<td>name</td><td>Firstname</td><td>Lastname</td><td>address</td><td>phone</td>";
echo "</tr>";
while ($row=mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td><input type='text' name='mname' value=".$row[0]."></td>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "<td>".$row[4]."</td>";
echo "<td><input type='submit' name='single' value='edit'></td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
?>
<?
if (isset($_POST['single']))
{
$show="SELECT *FROM persons WHERE name='$_POST[mname]'";
//another sql query here
............
.............

ただし、正しいコーディングではありません。ユーザーが編集をクリックすると、すべてのクエリに対して特定のコマンドが実行されます。しかし、ここでは、ループの後、最後の行のみが取得されます$row[0]。これを行う方法: ユーザーがeditすべての行の横にあるボタンをクリックすると、この行の値のみが取得されます

4

3 に答える 3

1

私のコードを試してください。page.php は現在のページです

........
$show="SELECT *FROM persons";
$result=mysqli_query($con,$show);
echo "<form method='post'>";
echo "<table border=1>";
echo "<tr>";
echo "<td>name</td><td>Firstname</td><td>Lastname</td><td>address</td><td>phone</td>";
echo "</tr>";
while ($row=mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td><input type='text' name='mname' value=".$row[0]."></td>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "<td>".$row[4]."</td>";
echo "<td><a href='page.php?single=".$row[0]."'>edit</a></td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
?>
<?
if (isset($_GET['single']))
{
$show="SELECT *FROM persons WHERE name='$_GET[single]'";
于 2013-04-16T05:15:37.800 に答える
0

次のような if else 条件でコードを保持します。

// if form submitted then show edit form with selected person data
if (isset($_POST['single'])) {
    $show = "SELECT *FROM persons WHERE name='$_POST[mname]'";
//another sql query here
    ............
    .............
} else {
    $show = "SELECT *FROM persons";
    $result = mysqli_query($con, $show);

    echo "<table border=1>";
    echo "<tr>";
    echo "<td>name</td><td>Firstname</td><td>Lastname</td><td>address</td><td>phone</td>";
    echo "</tr>";
    while ($row = mysqli_fetch_array($result)) {
    echo "<form method='post'>";
        echo "<tr>";
        echo "<td><input type='text' name='mname' value=" . $row[0] . "> <input type='hidden' name='id' value=" . $row[1] . "></td>";
        echo "<td>" . $row[2] . "</td>";
        echo "<td>" . $row[3] . "</td>";
        echo "<td>" . $row[4] . "</td>";
        echo "<td>" . $row[5] . "</td>";
        echo "<td><input type='submit' name='single' value='edit'></td>";
        echo "</tr>";
    echo "</form>";
    }
    echo "</table>";

    ?>
}

また、フォームで隠しフィールドを使用し、そのフィールドにレコード ID を保持し、それをクエリで使用すると、クエリが正確になり、パフォーマンスが向上します。もう1つの便利なことは、whileループでフォームタグを使用したように、各行に新しいフォームタグを付ける必要があることです。これを使用すると、コードは編集ページに1人のID、名前のみを渡します。あなたの場合、データ全体を送信します。

于 2013-04-16T05:26:47.227 に答える
0

これを使って。

//Anything goes here
........
$show="SELECT * FROM persons";
$result=mysqli_query($con,$show);
echo "<form method='post'>";
echo "<table border=1>";
echo "<tr>";
echo "<td>name</td><td>Firstname</td><td>Lastname</td><td>address</td><td>phone</td>";
echo "</tr>";
while ($row=mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td><input type='text' name='mname' value='".$row[0]."'></td>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "<td>".$row[4]."</td>";
echo "<td><input type='submit' name='single' value='edit'></td>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
?>
<?
if (isset($_POST['single']))
{
 $show="SELECT * FROM persons WHERE name='".$_POST[mname]."'";
  //another sql query here
   ............
   .............
于 2013-04-16T05:38:02.843 に答える