ここにいる親切な人々からの心に訴えるフィードバックと、他の情報源から得た多くの洞察と指示のおかげで、私は青少年の陸上競技プログラムのスケジュール/順位データベースを作成するための探求においてかなり長い道のりを歩んできました. 私はプロセスの最後の (最も重要な) 部分の 1 つに近づいています。学校がゲームのスコアを報告できるようにするために使用している構文の欠陥を特定するために、あなたの助けを借りることができます.
これをすべて解決するために私が使用しているスケジュールページは次のとおりです。
http://www.parochialathleticleague.org/schedules_test.html
コンテンツは、MySQL テーブルに保存されたリーグ データから動的に生成されます。ページを見ると、アイコンをクリックして、まだ文書化されていない各ゲームのスコアを報告できることがわかります。ユーザーがこれらのアイコンのいずれかをクリックしたときに、そのゲームの重要なデータを別のスコア レポート ページに送信して更新したいと考えています。
セッションを介してそのデータを渡そうとしている PHP スクリプトの関連するコードは次のとおりです。
if ($row['home_score'] == '0' && $row['away_score'] == '0') {
session_start();
$_SESSION['home_team'] = $row['home_score'];
$_SESSION['away_team'] = $row['away_score'];
$_SESSION['game_id'] = $row['game_id'];
$_SESSION['league'] = "test_league";
echo '<td><a href="report_score.html"><img src="images/report_icon.png" alt="Report Score" /></a></td>';
} else {
echo '<td>' . $row['home_score'] . '<br>' . $row['away_score'] . '</td>';
}
残念ながら、セッション変数がまったく送信されないように見えるため、コードを正しく記述していないと確信しています。スコア レポート ページが読み込まれると、ユーザーはセッションから生成された 2 つのチーム名 (ホームとアウェイ) を確認するはずですが、まったく表示されません。より良いアイデアのためのスコアレポートページへのリンクは次のとおりです。
http://www.parochialathleticleague.org/report_score.html
また、セッション変数を呼び出すはずのページ内のコードは次のとおりです。
<p class="p5 results">Enter Game Results</p>
<div class="form2">
<label><?php session_start(); echo $_SESSION['away_team']; ?></label>
<span>
<input type="text" name="away_team" />
</span>
</div>
<div class="form2">
<label><?php session_start(); echo $_SESSION['home_team']; ?></label>
<span>
<input type="text" name="home_team" />
</span>
</div>
最後に、フォームを処理し、それに応じて MySQL テーブルを更新するスクリプト自体のコードを次に示します。
<?php
// Connect to the database:
require ('../mysqli_connect.php');
// Start the session:
session_start();
// Validate the school:
if (empty($_POST['school'])) {
echo "You forgot to enter your school.<br>";
$validate = 'false';
} elseif ($_POST['school'] != ($_SESSION['home_team'] || $_SESSION['away_team']) {
echo "Your school does not match one of the two on file for this game.<br>";
$validate = 'false';
} else {
$school = mysqli_real_escape_string($db, trim($_POST['school']));
$validate = 'true';
}
// Validate the password:
if (empty($_POST['pass'])) {
echo "You forgot to enter your password.<br>";
$validate = 'false';
} else {
$pass = mysqli_real_escape_string($db, trim($_POST['pass']));
$validate = 'true';
}
// Validate the away score:
if (empty($_POST['away_team'])) {
echo "You forgot to enter the away score.<br>";
$validate = 'false';
} elseif (!is_numeric($_POST['$away_team']) || $_POST['$away_team'] < 0 ) {
echo "You entered an invalid score for the away team.<br>";
$validate = 'false';
} else {
$away_score = mysqli_real_escape_string($db, trim($_POST['away_score']));
$validate = 'true';
}
// Validate the home score:
if (empty($_POST['home_team'])) {
echo "You forgot to enter the home score.<br>";
$validate = 'false';
} elseif (!is_numeric($_POST['$home_team']) || $_POST['$home_team'] < 0 ) {
echo "You entered an invalid score for the home team.<br>";
$validate = 'false';
} else {
$home_team = mysqli_real_escape_string($db, trim($_POST['home_score']));
$validate = 'true';
}
// If all conditions are met, process the form:
if ($validate != 'false') {
$q1 = "SELECT school_id FROM user_schools WHERE (school_name='$school' AND pass='$pass')";
$r1 = mysqli_query($db, $q1);
$num = mysqli_num_rows($r1);
if ($num == 1) {
// Get the row for the game ID:
$row = mysqli_fetch_array($_SESSION['game_id'], MYSQLI_NUM);
// Perform an UPDATE query to modify the game scores:
$q2 = "UPDATE" . $_SESSION['league'] . "SET home_score='$home_score', away_score='$away_score' WHERE game_id=$row[0]";
$r2 = mysqli_query($db, $q2);
if (mysqli_affected_rows($db) == 1) {
header("Location: schedules_test.html");
} else {
echo "The scores could not be reported due to a system error. Apologies for the inconvenience. If this problem continues, please contact us directly.";
}
} else {
echo "Your school and password combination do not match those on file for this game. If you forgot your password, please contact Will Bryant directly.";
}
}
mysqli_close($db);
?>
そこにたくさんのコードを投げてすみません。私はこれらの言語をその場で学び、できるだけ多くの指導に浸るように最善を尽くしています. 私はこのプロセスで正しい方向に向かっていると信じていますが、間違いなく構文でいくつかの間違いを犯しています (マイナーか重大か、完全にはわかりません)。
送信ボタンをクリックすると空白のページが表示されますが、チーム名がレポート ページに読み込まれないという問題が発生していることはすでに明らかでした。
上記の例で、具体的にはセッションデータの受け渡しに関連して、どこが間違っているのでしょうか? あらゆるアドバイス、洞察、批評、名前の呼び掛けなど、大歓迎です!