Динамические страницы в PHP для начинающих? - PullRequest
1 голос
/ 07 февраля 2012

Я создал PHP-скрипт для онлайн-радиостанции:

<?php
$username = "root";
$password = "PASSWORD";
$hostname = "localhost";
$database = "myradio1";
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db($database,$dbhandle)
or die("Could not select $database");
$query= 'SELECT * FROM showmon';
$result = mysql_query($query) or die ('Error in query');
echo '<table width=100% border=1>';
while ($row=mysql_fetch_row($result))
{
  echo '<tr>';
  echo '<td><img src="\ '.$row['image'].' \"></td>';
  echo '<td>'.$row['presenter'].'</td>';
  echo '<td>'.$row['showinfo'].'</td>';
  echo '</tr>';
}
echo '</table>';
mysql_free_result($result);
mysql_close($dbhandle);
?>

У меня есть несколько других страниц, а именно 1, 3, 4, 5, 6, 7.php для остальных дней недели, но лучше ли изменить сценарий, чтобы он смотрел на дату и предварительно выбирал данные из таблиц, которые:

showmon

showtue

showwed

showthu

showfri

showsat

showsun

Все имеют тот же формат таблицы, что и в приведенном выше сценарии; данные разные.

Хорошо отображает данные, проблем нет; но как сделать динамические страницы, которые вернутся к предварительно заданным данным, если база данных не была изменена и т. д.

http://www.capitalfm.com/northeast/on-air/schedule/ - модель, с которой я работал; В качестве примера http: capitalfm.com/northeast/on-air/schedule/?date=2012-02-08 - это динамическая страница, которая, насколько я знаю, возвращается к предварительно заданным данным в базе данных - AFAIK, именно так работают радиосайты.

(// www. Удалено, поскольку я не могу публиковать ссылки как новый пользователь)

Я посмотрел на Google, но не нашел много новичков в этом.

http: www.capitalfm.com/northeast/on-air/schedule/?date=2012-02-08 (ну, с точки зрения URL) - вот чего я пытаюсь достичь.

Домен моего сайта - http: radio.localhost / scheduleX (расширение php скрыто mod_rewrite), где X представляет число, но как я могу улучшить этот скрипт лучше?

Любой совет приветствуется; Я довольно новичок в динамическом PHP, я могу сделать основы PHP и MySQL и GET / POST для форм, но это все.

Если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

Ответы [ 5 ]

0 голосов
/ 07 февраля 2012

Ваша таблица настроена неправильно.
Это должен быть просто один стол. С полем для хранения даты в формате 2012-02-10.

Теперь вы можете сделать свой запрос следующим образом

if (isset($_GET['date'])){
   $date = mysql_real_escape_sring($_GET['date']);
} else {
   $date = date("Y-m-d");
}
$query = 'SELECT * FROM `show` WHERE `date`='$date'";

будет выбирать контент в зависимости от выбранной даты или сегодняшней даты

Для создания списка ссылок вам понадобится такой код (не тестировался):

$monday = strtotime("monday"); // getting monday unix timestamp
for ($i=0,$i<7,$i++){
  $stamp = $monday + $i * 86400;
  $date  = date("Y-m-d",$stamp);
  $day   = date("D",$stamp);
  echo "<a href='?date=$date'>$day</a> ";
}
0 голосов
/ 07 февраля 2012

Самое лучшее, что нужно сделать - это просмотреть этот сайт, есть множество вопросов, похожих на ваш.

но вот совет, он не настолько эффективен, и я не говорю, что это лучшая практика,но стоит попробовать, создайте главную страницу, например

    mainpage.php

, внутри нее вы можете вызывать все свои верхний и нижний колонтитулы, тело

    <?php include('path/header.php');?>
    <?php include('path/dynamic_body.php');?>
    <?php include('path/footer.php');?>

каждый раз, когда у вас есть страница, верхний и нижний колонтитулы которойто же самое, только тело меняется.это зависит от вас, какие данные вы хотите передать.

Но это не стандартная практика, если вы хотите, я советую вам прочитать основы и практические основы.

0 голосов
/ 07 февраля 2012

ЕСЛИ вам просто нужно посмотреть на дату и выбрать соответствующее поле, то:

$day = date("l");
$field = NULL;

switch($day) {
    case "Monday":
        $field = "showmon";
        break;
    case "Tuesday":
        $field = "showtue";
        break;
    case "Wednesday":
        $field = "showwed";
        break;
    case "Thursday":
        $field = "showthu";
        break;
    case "Friday":
        $field = "showfri";
        break;
    case "Saturday":
        $field = "showsat";
        break;
    case "Sunday":
        $field = "showsun";
        break;
}

$query= 'SELECT * FROM '.$field;
... // and so on
0 голосов
/ 07 февраля 2012

Хотя я согласен с другими комментариями о необходимости взглянуть на некоторые основы PHP для очистки этого кода, вот пример, который создает требуемый запрос.

$query = 'SELECT * FROM ' . mysql_real_escape('show' . strtolower(date('D')));

Требуется date('D'), то есть пн, вт, ср и т. Д. Это строчные буквы и присоединяется к слову «шоу», то есть showmon.

Если вы хотите использовать предоставленную пользователем дату, вы можете добавить ее в метод date:

date('D', mktime(0, 0, 0, 2, 8, 2012))

Последние три цифры в mktime - это месяц, день, год.

0 голосов
/ 07 февраля 2012

Вы можете получить дату от ?date=2012-02-08, используя $_GET:

echo $_GET['date'];

Чтобы использовать это в вашем запросе:

$query= "SELECT * FROM showmon WHERE date = '".mysql_real_escape_string($_GET['date'])."'";

Вы должны прочитать php учебник , чтобы начать.

...