画面の再読込をせずに動作する方法について
下記のソースで動作は出来ているのですが、画面の再読込が必要な状況となっております。
そのため、再読込をせずに動作させたいと思ったのですが、どうすればできるかわからなかったのでアドバイスいただける方がいらっしゃいましたら、ご教示の程、よろしくお願いします。
【やりたい事】
1. サブ入力画面でcopyボタンを押下時、入力画面の名前とメールアドレスをサブ入力画面にコピーしているのですが、画面の再読込が必要になっているのを、再読込無しで動作させたいです。
2. 入力画面でdel2ボタンを押下時、3rdの行の内容を2ndにコピーした上で、3rdの内容を削除しているのですが、画面の再読込が必要になっているのを、再読込無しで動作させたいです。
3. これは出来ればで結構なのですが、del2(またはdel3)ボタン押下時、その行に何もデータが存在しない場合は、何かしら警告メッセージを表示できるとありがたいです。
【動作確認方法】
下記の3つのファイルをドキュメントルート直下にtestフォルダを設置し、ブラウザからindex.phpにアクセスしてください。
その後、任意の名前とメールアドレスを入力し、add2ボタンを押下するとサブ入力画面に遷移するため、そこでcopyボタンの動作を試すことができます。
また、del2ボタンの動作は、サブ入力画面で任意の名前とメールアドレスを入力後、saveボタンを押下すると入力画面に遷移するため、そこでdel2(del3)ボタンの動作を試すことができます。
【ソースコード】
1. index.php
<?php
mb_internal_encoding('UTF-8');
$document_root = $_SERVER['DOCUMENT_ROOT'];
$list=array(
"mode"
, "submit"
, "name"
, "name1"
, "name2"
, "name3"
, "mail"
, "mail1"
, "mail2"
, "mail3"
);
foreach($_POST as $key=>$value){
if (in_array($key, $list)) {
$$key=strip_tags($value);
}
}
if($mode=="input") {
if($submit == "add2") {
$name1 = $name2;
$mail1 = $mail2;
require_once($document_root . "/test/sub_input.html");
} elseif($submit == "add3") {
$name1 = $name3;
$mail1 = $mail3;
require_once($document_root . "/test/sub_input.html");
} elseif($submit == "del2") {
$name2 = $name3;
$mail2 = $mail3;
$name3 = "";
$mail3 = "";
require_once($document_root . "/test/input.html");
} else {
$name3 = "";
$mail3 = "";
require_once($document_root . "/test/input.html");
}
} else if($mode=="sub_input") {
if($submit == "copy") {
$name1 = $name;
$mail1 = $mail;
require_once($document_root . "/test/sub_input.html");
} else {
if($name2 == "") {
$name2 = $name1;
$mail2 = $mail1;
require_once($document_root . "/test/input.html");
} else {
$name3 = $name1;
$mail3 = $mail1;
require_once($document_root . "/test/input.html");
}
}
} else {
require_once($document_root . "/test/input.html");
}
?>
2. input.html
<form action="./index.php" method="post">
<table width="100%">
<tr>
<td>名前</td>
<td><input type="text" name="name" id="name" value="<?php echo $name ?>" /></td>
<td> </td>
</tr>
<tr>
<td>メールアドレス</td>
<td><input type="text" name="mail" id="mail" value="<?php echo $mail ?>" /></td>
<td> </td>
</tr>
<tr>
<td>2nd</td>
<td><?php echo $name2; ?><input type="hidden" name="name2" value="<?php echo $name2; ?>" /><input type="hidden" name="mail2" value="<?php echo $mail2; ?>" /></td>
<td><input type="submit" name="submit" value="add2" />
<input type="submit" name="submit" value="del2" /></td>
</tr>
<tr>
<td>3rd</td>
<td><?php echo $name3; ?><input type="hidden" name="name3" value="<?php echo $name3; ?>" /><input type="hidden" name="mail3" value="<?php echo $mail3; ?>" /></td>
<td><input type="submit" name="submit" value="add3" />
<input type="submit" name="submit" value="del3" /></td>
</tr>
</table>
<input type="hidden" name="mode" value="input" />
</form>
3. sub_input.html
<form action="./index.php" method="post">
<input type="submit" name="submit" value="copy" />
<table width="100%">
<tr>
<td>名前</td>
<td><input type="text" name="name1" id="name1" value="<?php echo $name1 ?>" /></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><input type="text" name="mail1" id="mail1" value="<?php echo $mail1 ?>" /></td>
</tr>
</table>
<input type="submit" name="submit" value="save" />
<input type="hidden" name="mode" value="sub_input" />
<input type="hidden" name="name" id="name" value="<?php echo $name ?>" />
<input type="hidden" name="name2" id="name" value="<?php echo $name2 ?>" />
<input type="hidden" name="name3" id="name" value="<?php echo $name3 ?>" />
<input type="hidden" name="mail" id="mail" value="<?php echo $mail ?>" />
<input type="hidden" name="mail2" id="mail" value="<?php echo $mail2 ?>" />
<input type="hidden" name="mail3" id="mail" value="<?php echo $mail3 ?>" />
</form>
以上、宜しくお願いします。
お礼
項目おおかったのでわけて sqlで質問してみます。
補足
ご返答有り難うございます(>_<) お返事いただけると思ってなかったので・・(感激) どあ、アップロードという表現はファイルのみですよね…。 根本的に間違ってました。 1と2は同時なのですが、 やりたいのはファイルじゃなく"データ"なのです。(テーブルですね・・) Yes/No型にチェックが入ったデータのみ、表示させる ということなんです。 例えると、「チェック」を入れたらデータが画面に表示される。 チェックが入っていないと表示されない。です。