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";
}

任何帮助,将不胜感激!

感谢:D

4

1 回答 1

1

这是一个带有一些建议的答案。

  • 当你命名事物时,尽量保持一致。您有以大写字母开头的变量,例如$EventDate,有些不喜欢$result,有些带有下划线$add_event。使用camelCase命名变量。数据库中的表列名称也是如此:您有 EventName、EventDate 和 Location...
  • 试着理解你在做什么。PHP 是一种宽容,不会抱怨像$EventDate = date('D-m-y', $EventDate);. 您不需要声明变量,因此它会将 $EventDate 评估为 0 ( $EventDate = date('D-m-y', 0))。如果您不知道函数的作用或如何使用它,请 阅读手册。
  • 不要在选择查询中使用星号。明确命名您要检索的所有列。
  • 你必须学习过时的 PHP 做事方式,这对你的老师来说是一种耻辱。因此,请注意更好的解决方案,例如PDO准备好的引用的语句。

据我了解,您希望在 HTML 表中显示数据库中的所有事件。
并且可以通过表单添加事件。您还希望将事件链接到记录结果页面,将事件 id 作为 URL 中的参数传递(您对此不清楚)。索引.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);
    ?>

这是 recordResults.php,它根据 URL 中的事件 id 检索事件,并使用与上面相同的 HTML 表显示事件。接下来做任何你想做的事。注意:这段代码应该被重构,这样你就不会两次编写同一个 HTML 表。

<?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 回答