私はこれに関連する投稿を見て、今ではこれを間違って行ったと思っている投稿を見ました。私はPHPに非常に慣れていませんが、学びたいと思っています。
学生名の入力ボックス、学生番号の入力ボックス、およびコースのドロップダウンリストを含むindex.phpフォームが必要です。
私のPHPスクリプトにデータを含めることは許可されていません-データはオプションではない.txtファイルから取得する必要があります。
私は4つのコース名を持つcourses.txtを持っており、それぞれに独自のコースコードと登録できる最大人数が含まれています。courses.txtの内容:アニメーションフィルムデザイン:AFD-250:6デジタル彫刻:DS-410:4アニメーションの歴史:HA-240:6視覚効果:VE-298:4
カンマ区切りファイルに変換されたcoursesfinal.txtがあります。コースの内容final.txt:アニメーションフィルムデザイン、AFD-250,6デジタル彫刻、DS-410,4アニメーションの歴史、HA-240,6視覚効果、VE-298,4
現在、2つの入力ボックスは正常に機能します。私の問題はドロップダウンリストにあります。コース名、スペース、コースコードの順に表示したいのですが。現時点では、コースコードのみが表示されます。また、なぜ2番目のデータフィールドが表示されているのかもわかりません。
ありがとうございました。
index.phpコード...
<?php
// Convert courses.txt file to comma delimited file coursesfinal.txt
$in = "courses.txt";
$out = "coursesfinal.txt";
$IN = fopen ($in, 'r') or die ("$in cannot be opened for reading.");
$OUT = fopen ($out, 'w') or die ("$out cannot be opened for writing.");
if (flock($OUT, LOCK_EX)) {
while ($inline = fgets ($IN) ) {
$splitarray = explode (":", $inline);
$outline = implode(",", $splitarray);
fputs ($OUT, $outline);
}
flock($OUT, LOCK_UN);
}
fclose ($IN);
fclose ($OUT);
// Search coursesfinal.txt file for course to match user input
$datafile = "coursesfinal.txt";
// If selection has been made, find a match
if (isset ($_POST['courses'])) {
$courses = strip_tags ($_POST['']);
$DB = fopen ($datafile, 'r') or die ("$datafile cannot be opened for reading.");
$found = FALSE;
while ($record = fgets ($DB) and ! $found) {
$field = explode (",", htmlentities (trim ($record)));
$found = $courses === $field[0];
}
fclose ($DB);
if ($found) {
echo "<p>You have selected: $field[0] $field[1]</p>\n";
}
}
?>
<html>
<head>
<title>Registration Form</title>
<style>
body{background-color: #ffffe6; width:610px;}
h1 {color: #29a3a3;}
.inputbox {padding: 7px; border: #F0F0F0 2px solid; border-radius: 4px;}
.btn {padding: 10px;background-color: #29a3a3; border: solid thin #000000; color: #FFF; font-weight: bolder; cursor: pointer;}
</style>
</head>
<body>
<h1>Course Registration</h1>
<form method="post" action="index.php">
<fieldset><legend><strong>Student Information</strong></legend>
<dl>
<dt>Student Name:</dt>
<dd><input class="inputbox" name="studentname" type="text" id="studentname" required autofocus placeholder="Please enter your first and last name" tabindex="10" size="50"></dd>
<br>
<br>
<dt for="number">Student Number:</dt>
<dd><input class="inputbox" name="studentnumber" type="text" required id="studentnumber" placeholder="Please enter using the following format: PX-03-046" tabindex="20" size="50"></dd>
</dl>
<br>
</fieldset>
<br>
<fieldset><legend><strong>Available Courses</strong></legend>
<br>
Select a Course: <select name="course">
<option value="-1" selected>Select From...</option>
<?php
// Generate the form
$DB = fopen ($datafile, 'r') or die ("$datafile cannot be opened for reading.");
while ($record = fgets ($DB) ) {
$field = explode (",", htmlentities (trim ($record)));
echo " <option value=\"$field[0]\">$field[1]</option>\n";
}
fclose ($DB);
echo " </select>\n";
?>
<br>
<br>
<br>
<br>
<br>
<br>
</fieldset>
<div>
<p>
<input name="reset" type="reset" tabindex="40" value="Clear Form" class="btn">
<input name="submit" type="submit" tabindex="50" value="Submit Form" class="btn">
</p>
</div>
</form>
</body>
</html>
次のコードを参照してください。
while ($record = fgets ($DB) ) {
$field = explode (",", htmlentities (trim ($record)));
echo " <option value=\"$field[0]\">$field[1]</option>\n";
}
その場合fgets()
、1つのパラメーターを使用して呼び出すと、改行文字またはEOF(どちらか早い方)が見つかるまで読み取りを続けます。次のようなcoursesfinal.txtをフォーマットしてください。
Animation Film Design,AFD-250
6 Digital Sculpture,DS-410
4 History of Animation,HA-240,
6 Visual Effects,VE-298
そして、あなたはすることができます
while ($record = fgets ($DB) ) {
$field = explode (",", htmlentities (trim ($record)));
echo " <option value=\"$field[1]\">$field[0] $field[1]</option>\n";
}
explode()
コマ区切り文字を使用すると、文字列「Animation Film Design、AFD-250」が配列に分割されることに注意してください
$field[0] == "Animation Film Design"
$field[1] == "AFD-250"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加