2012-05-16 114 views
2

我有2个PHP表单。一个显示事件列表,另一个显示每个特定事件的结果。在具有我想要的事件列表的页面上,可以创建超链接来访问每个单独事件的结果。带有超链接的PHP/MySQL表格

例如,在“事件”页面上,我单击第2行的超链接,该链接将带我转到具有该特定事件结果的“结果”页面。

任何帮助将不胜感激,因为我是非常,非常新的PHP。如果需要任何额外的细节,请随时询问。

谢谢。

编辑:对不起,我会告诉你的活动形式是什么样子至今:

<?php 
mysql_connect('localhost','root',''); 
mysql_select_db('clubresults') or die("Unable to select database"); 
$sql = "SELECT *, DATE_FORMAT(EventDate, '%d/%m/%y') as newdate FROM Events"; 
$result = mysql_query ($sql); 
?> 
<table border = 1> 
<tr> 
<th>Event ID</th> 
th>Event Name</th> 
<th>Event Date</th> 
<th>Location</th> 
</tr> 
<?php 
while ($row = mysql_fetch_array($result)) 
{ 
echo "</td><td>" . $row['EventID'] . "</td><td>" . $row['EventName'] . "</td><td>" . $row['newdate'] . "</td><td>" . $row['Location'] . "</td><tr>"; 
} 
echo "</table>"; 
mysql_close(); 
?> 
+0

你的2个PHP表单在哪里? –

+0

特定事件的URL会是什么样子? – declan

回答

2

你不需要两个剧本,但只有一个:在那里

events.php?list 
events.php?event=1234 

你只需要检查的事情:

$db = new Database(); # simplified 


/* show event details if requested */ 

if (isset($_GET['event']) { 
    if ($event = $db->getEventByID($_GET['event'])) { 
     printf('<h2>Event: %s</h2>', htmlspecialchars($event->title)); 
     # ... 
    } 
} 

/* show the list if requested (or show it always, whatever pleases you) */ 

if (isset($_GET['list']) { 
    echo '<table>'; 
    foreach($db->getEventList() as $event) { 
     printf('<tr><td><a href="?event=%d">%s</a></td></tr>' 
       , $event->ID, htmlspecialchars($event->title)); 
    } 
    echo '</table>'; 
} 

编辑:正如我在您更新的问题中看到的,您应该从那些oldskool mysql_*函数切换到我的示例中概述的类风格,因为它更简单易用。这是一个接近你的代码示例:

<?php 
/** 
* My First PDO Databaseclass 
*/ 
class Database extends PDO 
{ 
    public function __construct() 
    { 
     $host = 'localhost'; 
     $name = 'clubresults'; 
     $user = 'root'; 
     $pass = NULL; 

     parent::__construct("mysql:host=$host;dbname=$name", $user, $pass); 
     $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     // $this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    } 

    public function getEvents() 
    { 
     $sql = "SELECT *, DATE_FORMAT(EventDate, '%d/%m/%y') as newdate FROM Events"; 
     return $this->query($sql, PDO::FETCH_OBJ); 
    } 

    public function getEventByID($id) 
    { 
     $sql = sprintf("SELECT * FROM Events WHERE EventID = %d;", $id); 
     return $this->query($sql)->fetchObject(); 
    } 
} 

$db = new Database(); 

?> 
<table border=1> 
    <tr> 
     <th>Event ID</th> 
     th>Event Name</th> 
     <th>Event Date</th> 
     <th>Location</th> 
    </tr> 
<?php 
foreach($db->getEvents() as $event) 
{ 
    echo "</td><td>" . $event->EventID . "</td><td>" . $event->EventName . "</td><td>" . $event->newdate . "</td><td>" . $event->Location . "</td><tr>"; 
} 
?> 
</table> 
+0

你确定我不需要像 echo'View Details'; 在一页上,并且 $ query =“SELECT * FROM events WHERE ID =”。intval($ _ REQUEST ['ID']); (这是我在网上其他地方看到的。) –

+0

只有文件名不同时,你才需要这样做。如果文件名是相同的,你可以用'?'开头。 – hakre