0

私の質問は、次/前のボタンを扱っています。更新/削除ボタンを機能させることはできますが、次/前のボタンを処理するときに髪を引き裂く準備ができています。どんな助けも素晴らしいでしょう!これが私のコードです。また、私は PHP にかなり慣れていないので、これが悪いコーディングである場合は、間違いを修正できるように、私に知らせて正しい方向に向けてください。ありがとう!!!

session_start();

include "connectionfile.php";

if (isset($_POST['fname']) &&
isset($_POST['lname']) &&
isset($_POST['email']) &&
isset($_POST['login']) &&
isset($_POST['password']) &&
isset($_POST['super']) &&
isset($_POST['foldername']))
{
$id = get_post('id');
$fname = get_post('fname');
$lname = get_post('lname');
$email = get_post('email');
$login = get_post('login');
$password = hash('sha256', get_post('password'));
$super = get_post('super');
$foldername = get_post('foldername');

if ($_POST['submit']==0){

$query = mysql_query("SELECT * FROM `Logins` WHERE ID < '".$id."'  ORDER BY ID DESC LIMIT 1;");
while($row = mysql_fetch_array($query)){
   $id = $row['ID'];
   $fname = $row['fname'];
   $lname = $row['lname'];
   $email = $row['email'];
   $login = $row['login'];
   $password = $row['password'];
   $super = $row['super'];
   $foldername = $row['foldername'];

}
}else if ($_POST['submit']==1){
$query = "UPDATE Logins SET fname = '$fname', lname='$lname', email='$email".'@carouselclinical.com'."', login='$login', password='$password', super='$super', foldername='$foldername'";
$query .= "WHERE ID = '$id';";
if (!mysql_query($query, $connect))
echo "INSERT failed: $query<br />" .
mysql_error() . "<br /><br />";

}else if($_POST['submit']==2){

$delete_query = "DELETE FROM Logins WHERE ID = '".$id."';";
mysql_query($delete_query);
$rc = mysql_affected_rows();
echo "Rows Affected " . $rc;

}


if ($_POST['submit']==3){

$query = mysql_query("SELECT * FROM `Logins` WHERE ID= '". $id ."' ORDER BY ID ASC LIMIT 1;");
while($row = mysql_fetch_array($query)){
   $id = $row['ID'];
   $fname = $row['fname'];
   $lname = $row['lname'];
   $email = $row['email'];
   $login = $row['login'];
   $password = $row['password'];
   $super = $row['super'];
   $foldername = $row['foldername'];

}

}
}

mysql_close($connect);

function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
?>

<form action="" method="post"><pre>
id <input type="text" readonly="readonly" name="id" value="<?php echo "$id"; ?>" />
First Name <input type="text" name="fname" value="<?php echo "$fname"; ?>" />
Last Name <input type="text" name="lname" value="<?php echo "$lname"; ?>" />
Email <input type="text" name="email" value="<?php echo "$email"; ?>" /> There's no need to put @carouselclinical.com.
Login <input type="text" name="login" value="<?php echo "$login"; ?>"/>
Password <input type="text" name="password" value="<?php echo "$password"; ?>"/>
Super? <input type="text" name="super" value="<?php echo "$super"; ?>" />
foldername <input type="text" name="foldername" value="<?php echo "$foldername"; ?>" />
<button name="submit" value="0">Previous</button>
<button name="submit" value="1">UPDATE</button>
<button name="submit" value="2">Delete</button>
<button name="submit" value="3">Next</button>
</pre>
<a href="super.php">Home</a> <br />
<a href="logout.php">Log out</a>
</form>
4

1 に答える 1

1

elseのすぐ上にを追加してみてくださいmysql_close($connect);。私の推測では、最初のページの読み込みでは値を投稿していないため、アクションは実行されません。IDtop に何も定義されていない場合、これによりデフォルトが作成されますif

else{
$query = mysql_query("SELECT * FROM `Logins` ORDER BY ID ASC LIMIT 1;");
while($row = mysql_fetch_array($query)){
  $id = $row['ID'];
  $fname = $row['fname'];
  $lname = $row['lname'];
  $email = $row['email'];
  $login = $row['login'];
  $password = $row['password'];
  $super = $row['super'];
  $foldername = $row['foldername'];
}

また、次のレコードを取得できるように、 のをif ($_POST['submit']==3)に変更する必要があります。現在、次に高いIDではなく、同じIDを選択しています。=>$query

$query = mysql_query("SELECT * FROM `Logins` WHERE ID > '". $id ."' ORDER BY ID ASC LIMIT 1;");

最後に、Previous/Next を実行するときは、 から空の結果セットを返すためPrevious、最初のIDNextいるときと最後のにいるときの処理方法も考慮する必要があります。idMySQL

于 2012-09-24T20:40:32.960 に答える