Здравствуйте, переполнение стека:
У меня здесь сложная система / форма, и я прошел полную проверку интерфейса (с помощью jQuery) ....
Мне нужна помощь в проверке (на стороне сервера с PHP) ... Я надеялся, что это может быть чем-то, над чем мы работаем вместе (потому что мой мозг уже почти зажжен) ... Думаю, на данный момент мне просто нужно некоторая помощь с логикой ...
Вы можете посмотреть мою форму здесь: (Посмотрите здесь HTMLjQuery / исходный код, потому что он довольно длинный)
http://www.thesportinghub.com/lms/make-my-picks
Как вы можете видеть, это довольно интенсивно с множеством происходящих событий ... вот мои основные запросы проверки:
1.) Вы можете выбрать одну и ту же команду один раз за все 17 недель ...
2.) Вы не можете выбрать команду на соответствующую неделю после того, как время этой игры прошло ...
Вся информация, связанная с этим расписанием, содержится в документе XML, настроенном в следующем формате (это всего лишь фрагмент кода BIGGER XML):
<week id="1">
<matchup id="1" date="08/29/11" time="1:53 PM">
<away city="New Orleans">Saints</away>
<home city="Green Bay">Packers</home>
<finalscore>
<away>6</away>
<home>0</home>
</finalscore>
</matchup>
<matchup id="2" date="09/11/11" time="1:00 PM">
<away city="Atlanta">Falcons</away>
<home city="Chicago">Bears</home>
<finalscore>
<away></away>
<home></home>
</finalscore>
</matchup>
</week>
<week id="2">
<matchup id="1" date="09/18/11" time="1:00 PM">
<away city="Oakland">Raiders</away>
<home city="Buffalo">Bills</home>
<finalscore>
<away></away>
<home></home>
</finalscore>
</matchup>
<matchup id="2" date="09/18/11" time="1:00 PM">
<away city="Kansas City">Chiefs</away>
<home city="Detroit">Lions</home>
<finalscore>
<away></away>
<home></home>
</finalscore>
</matchup>
<matchup id="3" date="09/18/11" time="1:00 PM">
<away city="Baltimore">Ravens</away>
<home city="Tennessee">Titans</home>
<finalscore>
<away></away>
<home></home>
</finalscore>
</matchup>
</week>
Итак, скажите мне, правильная ли моя логика здесь ... Или что вы будете делать в этом сценарии ...
Когда форма будет отправлена, мне нужно будет создать многомерный массив, в котором будут храниться отправленные данные (до того, как они попадут в мою базу данных) ... Этот массив будет содержать выбранные команды, для какой недели они были выбраны, и время, когда они были выбраны.
Затем мне нужно будет загрузить свой XML (с SimpleXML и PHP) и как-нибудь? каждую неделю следите за тем, чтобы по истечении времени игры не было выборов.
Честно говоря, моя голова буквально сломана прямо сейчас. Я сомневаюсь, что кто-то из вас следует за мной?
Не могли бы вы хотя бы привести меня в правильном направлении? Это интенсивный сценарий, охватывающий так много вещей. Вся проверка интерфейса выполнена. Мне просто нужно сравнить предоставленную информацию с XML и убедиться, что все мои лазейки закрыты.
UPDATE:
Вот мой PHP-код, но он на самом деле не работает ... Я просто показываю его, чтобы помочь нарисовать картину того, с чем я работаю.
<?php
if( isset($_POST['submit']) ) {
$schedule = "schedule.xml";
$xml = simplexml_load_file($schedule) or die ("Unable to load XML file!");
date_default_timezone_set('US/Eastern');
$time = date("h:i:s", time());
$week1 = $_POST['Week_1'];
$week2 = $_POST['Week_2'];
$week3 = $_POST['Week_3'];
$week4 = $_POST['Week_4'];
$week5 = $_POST['Week_5'];
$week6 = $_POST['Week_6'];
$week7 = $_POST['Week_7'];
$week8 = $_POST['Week_8'];
$week9 = $_POST['Week_9'];
$week10 = $_POST['Week_10'];
$week11 = $_POST['Week_11'];
$week12 = $_POST['Week_12'];
$week13 = $_POST['Week_13'];
$week14 = $_POST['Week_14'];
$week15 = $_POST['Week_15'];
$week16 = $_POST['Week_16'];
$week17 = $_POST['Week_17'];
foreach($xml->week as $week)
{
$week_number = $week['id'];
foreach($week->matchup as $matchup)
{
$week_name = "Week_" . $week_number;
$away_city = $matchup->away['city'];
$home_city = $matchup->home['city'];
$away_teamname = $matchup->away;
$home_teamname = $matchup->home;
$game_time = $matchup['time'];
$game_date = $matchup['date'];
$away_full = "{$away_city} {$away_teamname}";
$home_full = "{$home_city} {$home_teamname}";
$home_score = $matchup->finalscore->home;
$away_score = $matchup->finalscore->away;
date_default_timezone_set('US/Eastern');
$game = "{$game_date} {$game_time}";
?>
<div class="savedbox">
<?php
if (strtotime($game) <= time()) {
?>
<strong>You cannot pick the <?php echo $away_full ?> or <?php echo $home_full ?>. Those teams have been locked for the respective week.</strong>
<?php
}
}
}
?>
<?php
if (count(array_unique($_POST)) === count($_POST)) {
?>
<strong>Your picks have been saved!</strong><br/><br/>
<strong>Week 1 Pick:</strong> <?php echo $week1 ?><br/>
<strong>Week 2 Pick:</strong> <?php echo $week2 ?><br/>
<strong>Week 3 Pick:</strong> <?php echo $week3 ?><br/>
<strong>Week 4 Pick:</strong> <?php echo $week4 ?><br/>
<strong>Week 5 Pick:</strong> <?php echo $week5 ?><br/>
<strong>Week 6 Pick:</strong> <?php echo $week6 ?><br/>
<strong>Week 7 Pick:</strong> <?php echo $week7 ?><br/>
<strong>Week 8 Pick:</strong> <?php echo $week8 ?><br/>
<strong>Week 9 Pick:</strong> <?php echo $week9 ?><br/>
<strong>Week 10 Pick:</strong> <?php echo $week10 ?><br/>
<strong>Week 11 Pick:</strong> <?php echo $week11 ?><br/>
<strong>Week 12 Pick:</strong> <?php echo $week12 ?><br/>
<strong>Week 13 Pick:</strong> <?php echo $week13 ?><br/>
<strong>Week 14 Pick:</strong> <?php echo $week14 ?><br/>
<strong>Week 15 Pick:</strong> <?php echo $week15 ?><br/>
<strong>Week 16 Pick:</strong> <?php echo $week16 ?><br/>
<strong>Week 17 Pick:</strong> <?php echo $week17 ?><br/>
<?php
} else {
?>
<strong>Trying to pull a <em>fast one</em>? We don't think so. You can only pick the same team once. If you need more clarification of the rules, please visit <a href="how-to-play">How To Play</a>.</strong>
<?php
}
?>
</div><br/>
<?php
}
?>
Должен также отметить, что все это также будет связано с таблицей базы данных mySQL. Мне нужно будет взять всю информацию, которую люди предоставляют, и вставить ее в таблицу базы данных, которую я настроил. Он попадет в базу данных, только если они пройдут все проверки, которые я описал выше.
Любая помощь будет принята с благодарностью. Даже если вы просто дадите мне несколько основных советов о том, как начать.
Спасибо,
Chris