0

指定されたイベントIDのRecordResultsを実装するのに問題があります。それができる必要があります-ページの下部にリストされているイベントエントリには、そのイベントの結果を記録するための新しいWebフォームに管理者を誘導するハイパーリンクが含まれている必要があります。EventIDは、クエリ文字列パラメータ(RecordResults.php?EventID = 4など)を介して渡されます。

現時点では、次のコードを表示しています。

データをデータベースに記録する

   <?php
mysql_connect("localhost", "root", "") or die(mysql_error()); 

mysql_select_db("clubresults") or die(mysql_error());

if (isset($_POST['submit'])) {    
$EventDate = date('D-m-y', $EventDate);
$sql="INSERT INTO events (EventName, EventDate, Location)
VALUES
('".$_POST['EventName']."', '".$EventDate."', '".$_POST['EventLocation']."')";

$add_event = mysql_query($sql);

echo "Successfully Added 1 Event";
}
?>

HTMLフォーム+MySQLデータベースからテーブルを生成-

<h2> Add Event To Database </h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Event Name: <input type="text" name="EventName" /><br>
Event Date: <input type="text" name="EventDate" /><br>
Event Location: <input type="text" name="EventLocation" /><br>
<input type="submit" name="submit" value="Add Event" />
</form>

<?php

$query = "SELECT * FROM events";
$result = mysql_query($query) or die ('Error in Query');

echo '<table width=100% border=1>';

echo '<tr><td><b>Event ID</b></td><td><b>Event Name</td><td><b>Event Date</b></td><td><b>Event Location</b></td><td><b> Record Results</b></td></tr>';

while ($row=mysql_fetch_row($result))

{

echo '<tr>';

echo '<td>'.$row[0].'</td>';

echo '<td>'.$row[1].'</td>';

echo '<td>'.$row[2].'</td>';

echo '<td>'.$row[3].'</td>';


echo '</tr>';

}

echo '</table>';

mysql_free_result($result);



?>

私もこれに取り組んでいますが、これを使用して、URL文字列を渡すテーブルの各行に結果を追加するハイパーリンクを作成する方法がわかりません。

    // Get id from URL
$id = mysql_real_escape_string( $_GET['EventID'] );

// If id is number
if( (int)$id== $id && (int)$id> 0 ) {

     // Get record from database
     $sql = 'SELECT * FROM Evernts WHERE EventID=' . $id;
     $result = mysql_query( $sql, $link );    
     $row = mysql_fetch_array( $result );

     // Show record with HTML here - Need to show it in the table!
     print_r( $row );

} else {

   echo "Record not found";
}

どんな助けでもいただければ幸いです!

ありがとう

4

1 に答える 1

1

ここにいくつかのアドバイスを伴う答えがあります。

  • 名前を付けるときは一貫性を保つようにしてください。のような大文字で始まる変数があり、好きで$EventDateはないもの$resultやアンダースコアが付いているものもあります$add_eventキャメルケースを使用して変数に名前を付けます。同じことがデータベース内のテーブル列名にも当てはまります。EventName、EventDate、そしてLocation...があります。
  • あなたが何をしているのか理解してみてください。PHPは一種の寛容であり、のような命令に文句を言うことはありません$EventDate = date('D-m-y', $EventDate);。変数を宣言する必要がないため、$ EventDateが0($EventDate = date('D-m-y', 0))に評価されます。関数の機能や使用方法がわからない場合は 、マニュアルをお読みください。
  • 選択したクエリでスター文字を使用しないでください。取得するすべての列に明示的に名前を付けます。
  • PHPで物事を行うための時代遅れの方法を学ぶ必要があり、それはあなたの先生にとって残念です。したがって、 PDO準備または引用されたステートメント などのより良いソリューションに注意してください。

私が理解していることから、データベースからのすべてのイベントをHTMLテーブルに表示したいと思います。
また、フォームを介してイベントを追加する可能性があります。また、イベントをレコード結果ページにリンクして、イベントIDをURLのパラメーターとして渡します(これについては明確ではありません)。index.php

    mysql_connect("localhost", "root", "") or die(mysql_error()); 
    mysql_select_db("clubresults") or die(mysql_error());

    if (isset($_POST['submit'])) 
    {   
        $eventName = mysql_real_escape_string($_POST['EventName']);
        $eventLocation = mysql_real_escape_string($_POST['EventLocation']);
                    // if you want to retrieve the date via the form 
                    // you have to check the format so that it corresponds to 
                    // what your date column expects (default format is Y-m-d)
        $eventDate = date('Y-m-d');

        $sql = "
            INSERT INTO events (EventName, EventDate, EventLocation)
            VALUES (
                '" . $eventName . "', 
                '" . $eventDate . "', 
                '" . $eventLocation . "'
            )";

        $addEventQueryResult = mysql_query($sql);

        if ($addEventQueryResult)
        {
            echo "Successfully added 1 event";
        }
        else 
        {
            echo "Error adding the event";
        }
    }
    ?>

    <h2>Add Event To Database</h2>
    <form action="index.php" method="post">
        Event Name: <input type="text" name="EventName" /><br>
        Event Date: <input type="text" name="EventDate" /><br>
        Event Location: <input type="text" name="EventLocation" /><br>
        <input type="submit" name="submit" value="Add Event" />
    </form>

    <?php

    $query = "
        SELECT EventId, EventName, EventDate, EventLocation 
        FROM events";

    $result = mysql_query($query) or die ('Error in Query');

    echo '<table width="100%" border="1">';

    echo '
        <tr>
            <th>Event ID</th>
            <th>Event Name</th>
            <th>Event Date</th>
            <th>Event Location</th>
            <th>Record Results</th>
        </tr>';

    while ($row = mysql_fetch_assoc($result))
    {
        $addResultLink = 
                '<a href="recordResults.php?EventId=' . 
                $row['EventId'] . 
                '">Add Results</a>';

        echo '<tr>' 
                . '<td>' . $row['EventId'] . '</td>' 
                . '<td>' . $row['EventName'] . '</td>'
                . '<td>' . $row['EventDate'] . '</td>' 
                . '<td>' . $row['EventLocation'] . '</td>' 
                . '<td>' . $addResultLink . '</td>' 
           . '</tr>';
    }

    echo '</table>';

    mysql_free_result($result);
    ?>

これは、URLのイベントIDに基づいてイベントを取得し、上記と同じHTMLテーブルでイベントを表示するrecordResults.phpです。次にやりたいことは何でもしてください。注:同じHTMLテーブルを2回記述しないように、このコードはリファクタリングする必要があります。

<?php

    date_default_timezone_set('Europe/Paris'); 

    mysql_connect("localhost", "root", "sqlflo54") or die(mysql_error()); 
    mysql_select_db("clubresults") or die(mysql_error());

    // Get id from URL
    $id = mysql_real_escape_string($_GET['EventId']);

    // If id is number
    if ($id > 0) 
    {
         // Get record from database
         $sql = "
            SELECT EventId, EventName, EventDate, EventLocation 
            FROM events 
            WHERE EventId = " . $id;
         $result = mysql_query($sql);    

         echo '<table width="100%" border="1">';

         echo '
            <tr>
                <th>Event ID</th>
                <th>Event Name</th>
                <th>Event Date</th>
                <th>Event Location</th>
            </tr>';

         while ($row = mysql_fetch_assoc($result))
         {
            echo '<tr>' 
                    . '<td>' . $row['EventId'] . '</td>' 
                    . '<td>' . $row['EventName'] . '</td>'
                    . '<td>' . $row['EventDate'] . '</td>' 
                    . '<td>' . $row['EventLocation'] . '</td>'  
               . '</tr>';
         }

         echo '</table>';

         mysql_free_result($result);
    } 
    else 
    {
       echo "Record not found";
    }
?>

これが最終的にあなたがやりたいことを理解するのに役立つことを願っています。上記のアドバイスに固執するようにいくつかの変数名を変更したので、このコードをコピーして貼り付けないでください。

于 2012-05-22T20:31:00.377 に答える