2016-10-15 1 views
0

J'ai essayé depuis un moment de gérer les fuseaux horaires sur mon site. Mon site contient des horaires de sport. Je génère des détails de correspondance dans une table. J'essaie de trouver un moyen de permettre à l'utilisateur de sélectionner (dans une boîte de sélection contenant des valeurs de fuseau horaire telles que GMT +1: 00, GMT 2:00 et ainsi de suite) le fuseau horaire dans lequel il se trouve. l'utilisateur sélectionne le fuseau horaire, puis la valeur de la date et de l'heure des détails du match (un champ d'horodatage) doit être mise à jour pour refléter le fuseau horaire choisi par l'utilisateur.Autoriser l'utilisateur à sélectionner SET time_zone à partir de Select Box

J'ai utilisé le code suivant ci-dessous pour définir le fuseau horaire et il modifie correctement le fuseau horaire du champ date et heure pour le décalage que j'ai utilisé dans l'instruction SET.

$DB->exec("SET time_zone='+0:00';");` 

Ce qui me confond comment puis-je avoir le +0: 00 changement à tout ce que l'utilisateur a sélectionné à partir d'une boîte de sélection, au lieu de toujours être réglé sur « +0: 00 ».

J'ai essayé une instruction if telle que

if (offset = "+1:00") { 
$DB->exec("SET time_zone='+1:00';"); 
} 

Mais lorsque je sélectionne 1: 00 de la zone de sélection et cliquez sur le bouton d'envoi, l'URL montre offset = + 1: 00, mais la valeur de la date et le champ de temps ne change pas pour refléter le changement de fuseau horaire dans l'instruction if et reste juste à la valeur de l'instruction SET ci-dessous

$DB->exec("SET time_zone='+0:00';"); 

Est-ce que je vais à ce sujet dans le droit chemin? Ou y a-t-il une autre méthode que je pourrais utiliser? Aussi je pensais que le fait que lorsque le bouton soumettre est pressé que la sortie est mise dans la chaîne URL au lieu de l'instruction SET time_zone. Existe-t-il un moyen que je peux avoir le bouton lorsque vous cliquez sur changer la valeur de l'instruction SET à l'offset sélectionné dans la liste déroulante?

est Ci-dessous mon code HTML et PHP

Config.php (utilisé pour la connexion DB)

<?php 
error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE); 

define('DB_DRIVER', 'mysql'); 
define('DB_SERVER', '*******'); 
define('DB_SERVER_USERNAME', '****"'); 
define('DB_SERVER_PASSWORD', '*****"'); 
define('DB_DATABASE', 'sportsch_sport'); 


define('PROJECT_NAME', 'SportSchedule Easy Sports Schedules'); 
$dboptions = array(
      PDO::ATTR_PERSISTENT => FALSE, 
      PDO::ATTR_DEFAULT_FETCH_MODE =>  PDO::FETCH_ASSOC, 
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
     ); 

    try { 
    $DB = new PDO(DB_DRIVER.':host='.DB_SERVER.';dbname='.DB_DATABASE, DB_SERVER_USERNAME, DB_SERVER_PASSWORD , $dboptions); 
    $DB->exec("SET time_zone='+0:00';"); 

    } catch (Exception $ex) { 
     echo $ex->getMessage(); 
     die; 
     } 



    ?> 

index.php (page principale, l'utilisateur peut effectuer une recherche par équipe par boîte de recherche sur cette page, par défaut, il affichera tous les matchs de base de données)

<?php 
date_default_timezone_set('Europe/London'); 
echo date('Y-m-d H:i:s'); 
include './config.php'; 
include './header.php'; 

if (offset = "+1:00") { 
$DB->exec("SET time_zone='+1:00';"); 
} 

try{ 
$keyword = trim($_GET["keyword"]); 
if ($keyword <> "") { 
    $sql = "SELECT f.hometeam, f.versus, f.awayteam, f.sport, f.competition, f.dateandtime, 
    Group_concat(s.name SEPARATOR ',') name, 
    Group_concat(x.channelid_fc SEPARATOR ',') channelid_fc 
    FROM footballfixtures f 
    LEFT JOIN fixturechannels x 
    ON x.matchid_fc=f.matchid 
    LEFT JOIN satellite s 
    ON x.channelid_fc=s.channelid 
    WHERE " . " (hometeam LIKE :keyword) 
    OR awayteam LIKE :keyword 
OR competition LIKE :keyword 
GROUP BY f.hometeam, f.versus, f.awayteam, f.sport, f.competition, f.dateandtime, 
ORDER BY f.dateandtime "; 
$stmt = $DB->prepare($sql); 

$stmt->bindValue(":keyword", $keyword."%"); 


} else { 

     $sql = "SELECT f.hometeam, f.versus, f.awayteam, f.sport, f.competition, f.dateandtime, 
    Group_concat(s.name SEPARATOR ',') name, 
    Group_concat(x.channelid_fc SEPARATOR ','). channelid_fc 
    FROM footballfixtures f 
    LEFT JOIN fixturechannels x 
    ON x.matchid_fc=f.matchid 
    LEFT JOIN satellite s 
ON x.channelid_fc=s.channelid 
GROUP BY f.hometeam, f.versus, f.awayteam, f.sport, f.competition, f.dateandtime 
    ORDER BY f.dateandtime"; 

    $stmt = $DB->prepare($sql); 
    } 

    $stmt->execute(); 

    } catch (Exception $ex) { 
    echo 'Error loading match data'; 
    } 




    ?> 
<html> 

<head> 
<script src="css/footable.filter.js"></script> 

</head> 
    <body> 

    <div class="container mainbody"> 
    <div class="mainpagetitle"> 
    <h11>Sports Schedule</h11> <br> <br> 
     <p>We aim to provide you with sports schedule in an easy to view format</p> <br> <br> <br> 
    <form class="form-inline"> 
    </div> 


    <div class="clearfix"></div> 

<div class="col-xs-12"> 
     <img src="css/tv3.png" class="img-responsive" /> 

       <div id=class="container-fluid"> 
    <div class="row"> 
    <h2>Whats On Today</h2> <br> 
    <p> All todays matches/events are displayed below, you can search by team/player or competition/event using the search box. If you want to filter by sport, please select the sport name from the select box and filtered results will be displayed. </p> 

     <br> 
     <br> 
    <br> 
     <br> 
    </div> 
    </div> 
    </div> 



     <div class="searchform"> 
     <form action="index.php" method="get" > 
     <label class="col-xs-12" for="offset";> 
      <select name="offset" id="offset"> 
     <option value="+1:00">+1:00</option> 
    <option value="+2:00">+2:00</option> 
    <option value="+3:00">+3:00</option> 
    <option value="+4:00">+4:00</option> 
    </select> 

     </label> 
     <button class="btn btn-info">search</button> 
    </form> 

    </div> 






    <div class="searchform"> 
<h2> Search </h2> 
    <form action="index.php" method="POST" > 
     <label class="col-xs-12" for="keyword";> 
      <input type="text" value="<?php echo htmlspecialchars($_POST["keyword"]); ?>" placeholder="Enter Team or Competition" id="" class="form-control" name="keyword"> 
     </label> 

     <button class="btn btn-info">search</button> 
     </form> 
    </div> 





     <div class="clearfix"></div> 



    <div class="searchform2"> 

     <p> Select Sport Below to Display Events</p> 
     <div class="dropbox1"> 
     <input type="hidden" id="filter" type="text"></input> 
    <select class="filter-status"> 
<option> </option> 
<option value="aussierules">Aussie Rules</option> 
<option value="basketball">Basketball</option> 
<option value="boxing">Boxing</option> 
    <option value="football">Football</option> 
<option value="gaelic">Gaelic Sports</option> 
<option value="handball">Handball</option> 
<option value="icehockey">Ice Hockey</option> 
<option value="mma">MMA</option> 
<option value="motorsports">Motorsports</option> 
<option value="rugbyleague">Rugby League</option> 
<option value="rugbyunion">Rugby Union</option> 
<option value="tennis">Tennis</option> 
<option value="volleyball">Volleyball</option> 

    </select> 
    </div> 
    <div class="clearlinks"> 
    <a class="clear-filter" href="#clear" title="clear filter">. [clear]</a> 
    </div> 
    </div> 
    <div class="container"> 
    <div class="row"> 
    <div class="tables"> 
    <div class="col-xs-12"> 
    <table class="table table-hover footable" data-filter="#filter" data-filter-text-only="true"> 
    <thead> 
    <tr> 
    <th>Home Team</th> 
    <th> vs </th> 
    <th>Away Team</th> 
    <th data-hide="phone, tablet">Sport</th> 
     <th data-hide="phone, tablet">Competition</th> 
      <th data-hide="phone, tablet"> Date and Time</th> 
         <th data-hide="phone, tablet">Channels</th> 
    </tr> 
</thead> 

     <?php 

    if($stmt->rowCount() >0) { 

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) 
    { 


    $hometeam = $row['hometeam']; 
$versus= $row['versus']; 
     $awayteam= $row['awayteam']; 
     $sport= $row['sport']; 
     $competition = $row['competition']; 
     $dateandtime=$row['dateandtime']; 
     $name=explode(',', $row['name']); 
     $channelid=explode(',', $row['channelid_fc']); 

?> 
<tbody> 
    <td> <?php echo $row[hometeam] ; ?> </td> 
    <td> <?php echo $row[versus] ; ?> </td> 
    <td> <?php echo $row[awayteam] ; ?> </td> 
    <td> <?php echo $row[sport] ; ?> </td> 
    <td> <?php echo $row[competition] ; ?> </td> 
    <td> <?php echo $row[dateandtime] ; ?> </td> 

    <td> 
    <?php for ($i = 0; $i < count($channelid) && $i < count($name); ++$i) { 
    $achannelid = $channelid[$i]; 
    $aname = $name[$i]; 

    //here the code you wanted 
      echo "<a href='http://sportschedule.xyz/view_channels.php?channelid=" .$achannelid."'> ".$aname." </br> </a> "; 

     } 

     ?> 

Merci beaucoup pour toute quiconque aide ou suggestions ou fournit à tous ceux qui lisent cet article.

+0

'DateTime' ne change pas avec le fuseau horaire de la session. 'TIMESTAMP' fait. –

+0

Merci pour le commentaire. J'ai vu ça dans la documentation. Est-il possible de définir/sélectionner un fuseau horaire de session par l'utilisateur, via une boîte de sélection par exemple? Merci –

Répondre

0

trouvé la solution

if (isset($_GET['offset'])) { 
$os = $_GET['offset']; 
if ($os >= "1" && $os < "5" && (strlen($os)==1)) { // basic attempt at sanitising the input 
$DB->exec("SET time_zone='+" . $os . ":00';"); 
} 
}