Définition d'un fuseau horaire en PHP. Date timezone - Définir le fuseau horaire en PHP et MySQL Dater - Détermine le fuseau horaire, localise et formate l'heure en PHP

Si, lors du processus de gestion de l'hébergement virtuel, il est nécessaire de modifier le fuseau horaire par défaut, cette action peut être facilement effectuée en plusieurs étapes, décrites ci-dessous.

Changer le fuseau horaire via Sélectionner la version PHP

Pour changer le fuseau horaire, allez sur cPanel -> Logiciel -> Sélectionnez la version PHP -> Passer aux options PHP.

L'étape suivante consiste à modifier la valeur de la variable date.fuseau horaire au fuseau horaire dont vous avez besoin. Vous pouvez trouver une liste des fuseaux horaires disponibles dans le dernier paragraphe de l'article.

Après avoir effectué les modifications nécessaires, il est important de cliquer sur le bouton "Sauvegarder les modifications", qui se trouve en bas de la page Sélecteur PHP.

Pour vous assurer que la valeur de fuseau horaire spécifiée a été appliquée, vous pouvez utiliser la fonction PHP phpinfo(), qui affiche des informations sur tous les paramètres php installés. Pour ce faire, créez dans public_html cliquez sur le bouton "Déposer" dans le menu du répartiteur.

  • Sur le terrain Nouveau nom de fichier indiquer, par exemple, phpinfo.php puis cliquez sur le bouton Créer un nouveau fichier.

  • En conséquence, le fichier portant le nom spécifié apparaîtra dans la liste des autres sur l'hébergement.
  • Ensuite, vous devez ouvrir ce fichier pour le modifier. Pour cela, faites un clic gauche sur le fichier souhaité, puis dans le menu du gestionnaire cliquez sur le bouton Changement.
  • Dans le formulaire qui apparaît, laissez tous les paramètres par défaut et cliquez sur le bouton Modifier, pour ouvrir un éditeur de texte.

  • Dans la fenêtre qui s'ouvre, vous devez saisir le code suivant :

Après cela, enregistrez le fichier et ouvrez-le dans votre navigateur. Dans cet exemple, le fichier sera disponible à l'adresse :

http://main_domain/phpinfo.php

Dans la page qui s'ouvre, recherchez la section date, qui contiendra un tableau avec la valeur du fuseau horaire actuel. Dans ce cas, la zone ci-dessus est affichée Europe/Kiev.

Ceci termine le processus de changement de fuseau horaire.

Liste des fuseaux horaires pour configurer le fuseau horaire

De plus, nous joignons ci-dessous une liste de valeurs de fuseau horaire possibles :

Afrique/Caire Afrique/Casablanca Afrique/Harare Afrique/Monrovia Afrique/Nairobi Amérique/Bogota Amérique/Buenos_Aires Amérique/Caracas Amérique/Chihuahua Amérique/La_Paz Amérique/Lima Amérique/Mazatlan Amérique/Mexico_City Amérique/Monterrey Amérique/Santiago Amérique/Tijuana Asie/ Asie d'Almaty/Asie de Bagdad/Asie de Bakou/Asie de Bangkok/Asie de Chongqing/Asie de Dhaka/Asie de Hong_Kong/Asie d'Irkoutsk/Asie de Jakarta/Asie de Jérusalem/Asie de Kaboul/Asie de Karachi/Asie de Katmandou/Asie de Calcutta/Asie de Krasnoïarsk/Asie de Kuala_Lumpur/Asie de Koweït /Asie de Magadan/Asie de Mascate/Asie de Novossibirsk/Asie de Riyad/Asie de Séoul/Asie de Singapour/Asie de Taipei/Asie de Tachkent/Asie de Tbilissi/Asie de Téhéran/Asie de Tokyo/Asie d'Oulan-Bator/Asie d'Urumqi/Asie de Vladivostok/Asie de Yakoutsk/Asie d'Ekaterinbourg/Erevan Atlantique/Açores Atlantique/Cap-Vert Atlantique/Stanley Australie/Adélaïde Australie/Brisbane Australie/Canberra Australie/Darwin Australie/Hobart Australie/Melbourne Australie/Perth Australie/Sydney Canada/Canada atlantique/Terre-Neuve Canada/Saskatchewan Europe/Amsterdam Europe/Athènes Europe/ Belgrade Europe/Berlin Europe/Bratislava Europe/Bruxelles Europe/Bucarest Europe/Budapest Europe/Copenhague Europe/Dublin Europe/Helsinki Europe/Istanbul Europe/Kiev Europe/Lisbonne Europe/Ljubljana Europe/Londres Europe/Madrid Europe/Minsk Europe/Moscou Europe /Paris Europe/Prague Europe/Riga Europe/Rome Europe/Sarajevo Europe/Skopje Europe/Sofia Europe/Stockholm Europe/Tallinn Europe/Vienne Europe/Vilnius Europe/Volgograd Europe/Varsovie Europe/Zagreb Groenland Pacifique/Auckland Pacifique/Fidji Pacifique/ Guam Pacifique/Midway Pacifique/Port_Moresby États-Unis/Alaska États-Unis/Arizona États-Unis/Centre des États-Unis/Est des États-Unis/Est de l'Indiana États-Unis/Hawaï États-Unis/Montagnes États-Unis/Pacifique États-Unis/Samoa

Vous voulez un nouveau nom pour votre site Web ? Disponible chez nous

Parfois, il arrive que l'heure actuelle sur le serveur ne corresponde pas à votre fuseau horaire actuel ou au fuseau horaire de la région vers laquelle votre site est ciblé.

Pour être clair, permettez-moi de vous rappeler : la Russie est géographiquement très vaste et tout le monde n'a pas besoin de ses sites pour « vivre » selon l'heure de Moscou. Par exemple, l'Oural, la Sibérie, l'Extrême-Orient, etc.

Les serveurs des fournisseurs d'hébergement russes les plus populaires sont situés sur des sites technologiques à Moscou et à Saint-Pétersbourg et, par défaut, sont bien entendu configurés pour le fuseau horaire de Moscou. Le serveur ne peut pas s'adapter automatiquement à votre emplacement actuel et ajuster l'horloge du système. Par conséquent, le fonctionnement des fonctions de date et d’heure sur le site peut ne pas être entièrement correct. Naturellement, nous ne parlons plus ici de CMS, dans lequel le réglage du fuseau horaire est généralement présent directement dans l'interface administrateur.

Tout d'abord, vérifiez l'état actuel à l'aide du code PHP :

echo ini_get("date.timezone");

C'est bien si vous avez votre propre serveur et avez accès au php.ini, où vous pouvez définir le fuseau horaire souhaité et l'oublier. Par exemple, de cette façon :

Date.timezone = Europe/Moscou

Cependant, si le serveur héberge plusieurs projets qui doivent prendre en charge des fuseaux horaires différents, alors il vaut mieux ne pas le faire. Dans ce cas, il serait plus correct de définir des fuseaux horaires uniquement pour les projets ayant le même fuseau horaire.

Définition d'un fuseau horaire sur l'hébergement virtuel

Sur l'hébergement mutualisé, il n'y a le plus souvent pas d'accès aux configurations du serveur. Par conséquent, essayez tout d’abord de définir le fuseau horaire à l’aide de .htaccess. Recherchez ou créez simplement un fichier .htaccess à la racine de votre site et ajoutez-y la ligne suivante :

Php_value date.timezone "Europe/Moscou"

Si la méthode ne fonctionne pas, nous utiliserons la fonction date_default_timezone_set(), qui définit le fuseau horaire par défaut pour toutes les fonctions de date et d'heure. Pour cela, il vous suffit d'ajouter la ligne suivante quelque part au début du script :

Date_default_timezone_set("Europe/Moscou");

Naturellement, Europe/Moscou modifications du fuseau horaire dont vous avez besoin. Pour le territoire de la Fédération de Russie, PHP prend en charge les fuseaux horaires suivants :

  • Europe/Moscou
  • Europe/Samara
  • Europe/Kaliningrad
  • Europe/Volgograd
  • Asie/Anadyr
  • Asie/Kamtchatka
  • Asie/Krasnoïarsk
  • Asie/Magadan
  • Asie/Novokuznetsk
  • Asie/Novossibirsk
  • Asie/Omsk
  • Asie/Sakhaline
  • Asie/Vladivostok
  • Asie/Iakoutsk
  • Asie/Ekaterinbourg

Vous pouvez afficher une liste de tous les fuseaux horaires disponibles en suivant le lien ou en exécutant une commande qui vous renverra une liste des fuseaux horaires disponibles sur votre serveur.

Print_r(DateTimeZone::listIdentifiers());


Il s'agit d'un court article sur la façon de travailler avec les fuseaux horaires lors du stockage des valeurs de date/heure dans une base de données. La base de données ou le langage de programmation que vous décidez d'utiliser n'est pas critique, puisque les phénomènes décrits dans l'article sont universels. Je vais montrer mes actions en utilisant l'exemple d'utilisation d'une combinaison de MySQL et PHP. Le problème lié aux fuseaux horaires est assez trivial. Beaucoup de gens oublient souvent leur existence et certains la considèrent comme quelque chose de trop compliqué. Généralement, lorsque vous configurez une base de données ou utilisez un service d'hébergement Web, vos fuseaux horaires sont configurés par défaut. Les paramètres par défaut conviennent si vous utilisez un seul serveur, mais que se passe-t-il si vous décidez de le déplacer ?

La même question est logique si vous disposez de plusieurs serveurs situés à des endroits différents.
Au lieu de stocker des fuseaux horaires avec chaque date, il est préférable de se baser sur l'heure standard et d'y associer toutes vos dates. Cette méthode vous permet de passer à l'heure standard avant que la valeur ne soit stockée dans la base de données. En général, c'est une bonne idée d'utiliser simplement UTC+00:00.

Qu'est-ce que l'UTC

UTC signifie Temps universel coordonné et succède au temps moyen de Greenwich (GMT). Les deux formats sont presque identiques, mais UTC est considéré comme la norme acceptée. En général, UTC est basé sur 40 fuseaux horaires différents. Il est d'usage de prendre 00h00 comme point de départ en UTC. Au total, il y a 12 fuseaux horaires principaux, avec des valeurs positives et négatives, ainsi que quelques fuseaux horaires supplémentaires, comme ceux d'une demi-heure. UTC +04:30. L'idée est que si vous avez un fuseau horaire UTC -05h00, alors vous devrez soustraire 5 heures au temps initial UTC+00:00 pour obtenir l'ajustement souhaité. Autrement dit, s'il est 14h00 (ou 14h00) et que votre fuseau horaire UTC-05:00(EST ou fuseau horaire de l'Est), puis UTC+00:00 sera égal à 19h00 (ou 19h00).
  • Représentation graphique des fuseaux horaires mondiaux (Wikipedia)
  • Liste des abréviations de fuseaux horaires (Wikipédia)

Stockage de l'heure au format UTC +00:00

La première chose que nous devons faire est de décider quel fuseau horaire utiliser pour stocker toutes nos valeurs. Je recommande fortement d'utiliser UTC+00:00- sans raison particulière autre que le fait qu'il est facile à retenir et que 0 représente un point de référence idéal. Puisque nous savons que toutes les dates sont dans UTC+00:00, il devient beaucoup plus facile de représenter l'heure appropriée pour chaque utilisateur en fonction de son fuseau horaire personnel. Une fois qu'un utilisateur a sélectionné (ou que nous avons détecté automatiquement) son fuseau horaire, afficher l'heure appropriée pour cet utilisateur devient monnaie courante.

Définition du fuseau horaire par défaut

En supposant que toutes nos dates/heures sont stockées en UTC, nous pouvons simplement définir un fuseau horaire par défaut à utiliser pour afficher chaque heure. Cela sélectionnera automatiquement la date et l'heure pour un utilisateur spécifique. En PHP, il suffit de définir le fuseau horaire, comme ceci :
date_default_timezone_set("EST");
Nous pouvons le faire dans un bloc d'initialisation au début de notre code et nous avons terminé : toutes les dates seront affichées de manière appropriée pour le fuseau horaire dans lequel se trouve l'utilisateur.

Si nous voulons un contrôle total sur la date et l’heure, nous pouvons construire la fonction comme ceci :
fonction get_date($date) ( date_default_timezone_set("EST"); $date = date("Y-m-d H:i:s", strtotime($date)); date_default_timezone_set("UTC"); return $date; )

Configuration de PHP pour UTC +00:00

Bien sûr, les choses ne seraient pas si simples si nous n'avions pas configuré notre système pour utiliser UTC comme fuseau horaire par défaut. Je suis sûr que cela peut être fait à peu près de la même manière dans d'autres langages, mais PHP le fait comme ceci :
date.timezone = UTC
Maintenant, chaque fois que nous utilisons des choses comme la fonction temps(), cela nous donne automatiquement l'heure UTC avec le décalage approprié en fonction de l'heure de notre serveur. Si nous voulons configurer des dates dans une base de données comme MySQL, nous ferons ceci :
date("A-m-d H:i:s", time());
Si nous n'avons pas eu accès pour modifier la configuration PHP, alors nous devons régler l'heure manuellement lors du réglage de la date, comme ceci :
date("Y-m-d H:i:s", time() - date("Z"));

Configuration de MySQL pour UTC +00:00

Définir directement la date comme nous l'avons fait ci-dessus est applicable si nous n'avons pas accès à la modification des paramètres de configuration MySQL. Cependant, si l'on veut utiliser HORODATAGE, qui se met généralement à jour automatiquement, ou une fonction de date MySQL comme MAINTENANT() alors nous devons configurer MySQL pour utiliser UTC comme fuseau horaire par défaut.

Dans MySQL, cela se fait en définissant le décalage UTC, ce qui peut être fait aussi facilement qu'en PHP en apportant les modifications suivantes :
fuseau horaire par défaut = "+00:00"

Mise à jour des dates/heures existantes

Si vous décidez de standardiser les fuseaux horaires en utilisant UTC, où le fuseau horaire par défaut est UTC+00:00 offset, alors maintenant votre heure actuelle dans votre base de données sera cassée.

Heureusement, MySQL fournit une fonctionnalité pratique qui nous permet de mettre facilement à jour les fuseaux horaires existants.

NOTE: Si vous avez des horodatages, ils doivent d’abord être mis à jour.

Nous pouvons rechercher tous les champs de date et d'heure de notre base de données en utilisant la requête suivante :
SELECT * FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA`="nom_table" AND (`DATA_TYPE`="timestamp" OR `DATA_TYPE`="datetime" OR `DATA_TYPE`="date");
À partir de là, nous pouvons utiliser la requête suivante pour mettre à jour les dates/heures dans nos tables :
UPDATE `table_name` SET `timestamp`=CONVERT_TZ(`timestamp`, "-05:00", "+00:00");
-05:00 - le fuseau horaire actuel dans le format duquel l'heure est stockée (comme dans le cas précédent, il fait référence à l'Est). Fuseau horaire +00:00 , vers lequel nous voulons convertir, fait dans ce cas référence à UTC.

21 mars 2013 à 12h58

Dater - Détermine le fuseau horaire, localise et formate l'heure en PHP

  • PHP

Lorsque, lors du développement d'un projet web, se pose la tâche de prendre en compte les fuseaux horaires des utilisateurs, à chaque fois la solution semble devoir être réinventée. Parmi les nombreux projets que je connais qui ont résolu ce problème, je ne me souviens pas d'une seule solution que l'on pourrait qualifier de simple, transparente pour toute l'architecture et universelle.

Mais que se passe-t-il si vous voulez juste quelques lignes de code, et pour que le reste du code ne sache jamais que les données doivent être envoyées au client dans un fuseau horaire différent, et que dans les données reçues du client, le l'heure peut-elle être indiquée dans un fuseau horaire différent de celui du serveur ? Pour résoudre ce problème et bien d'autres, je vais vous parler aujourd'hui d'une bibliothèque concise et fonctionnelle pour PHP.

Alors découvrez Dater et ses principales caractéristiques :

  • Formats de reliure
  • Localisation de textes et de formats
  • Extension de la liste des options de formatage
  • Détection automatique du fuseau horaire
  • Convertir l'heure en fonction du fuseau horaire
  • Conversion automatique de l'heure en $_GET, $_POST, $_REQUEST en tenant compte du fuseau horaire
  • Conversion automatique du fuseau horaire dans le modèle de données soumis
Nous laisserons pour le dessert les lignes de code promises pour déterminer et traiter automatiquement le fuseau horaire de l’utilisateur, mais pour l’instant passons en revue les principales fonctionnalités de Dater, brièvement, avec des exemples.

Formats de reliure

Permet de standardiser un ensemble de formats utilisés pour un projet et de travailler avec eux par nom :

$dater = nouveau Dater\Dater(nouveau Dater\Locale\En()); $dater->format(time(), "d/m/Y"); // 14/03/2013 $dater->addFormat("slashedDate", "d/m/Y"); $dater->format(time(), "slashedDate"); // 14/03/2013 $dater->slashedDate(time()); // 2013/03/14

Extension des options de formatage

Toutes les options de formatage de date() sont disponibles et peuvent également être remplacées et étendues :

$dater->addFormatOption("il y a", function (DateTime $datetime) ( return floor((time() - $datetime->getTimestamp()) / 86400) . "il y a jours"; )); $dater->format(time() - 60*60*24*7, "d F Y, ago"); // 14 mars 2013, il y a 7 jours

Prise en charge des paramètres régionaux

$dater->setLocale(nouveau Dater\Locale\En()); echo $dater->date(); // 21/03/2013 echo $dater->now("j F Y"); // 21 mars 2013 $dater->setLocale(Dater\Dater::getLocaleByCode("ru")); echo $dater->date(); // 21/03/2013 echo $dater->now("j F Y"); // 21 mars 2013

Méthodes standard pour les formats serveur et utilisateur, en tenant compte des paramètres régionaux

echo $dater->date(); // 21/03/2013 (fuseau horaire du client, dépend des paramètres régionaux) echo $dater->time(); // 5h41 (fuseau horaire du client, dépend des paramètres régionaux) echo $dater->datetime(); // 21/03/2013 5:41 (fuseau horaire du client, dépend des paramètres régionaux) echo $dater->isoDate(); // 2013-03-21 (fuseau horaire du client) echo $dater->isoTime(); // 05:41:28 (fuseau horaire du client) echo $dater->isoDatetime(); // 2013-03-21 05:41:28 (fuseau horaire du client) echo $dater->serverDate(); // 2013-03-21 (fuseau horaire du serveur) echo $dater->serverTime(); // 09:41:28 (fuseau horaire du serveur) echo $dater->serverDatetime(); // 2013-03-21 09:41:28 (fuseau horaire du serveur)

Conversion date-heure en tenant compte du fuseau horaire

$dater->setServerTimezone("Europe/Moscou"); $dater->setClientTimezone("Europe/Londres"); echo $dater->serverDatetime(); // 2013-03-21 08:18:06 echo $dater->isoDatetime(); // 2013-03-21 04:18:06 echo $dater->time(); // 04:18
Il convient de mentionner que lors de l'appel de $dater->setServerTimezone("Europe/Moscow"); La fonction date() et la classe DateTime renverront l'heure dans le fuseau horaire nouvellement défini. Pour désactiver cela, transmettez false à la méthode comme deuxième paramètre.

Et enfin ce qui a été promis

Code qui vous permettra de déterminer automatiquement le fuseau horaire du client et d'afficher la date et l'heure actuelles de celui-ci :

Dans l'en-tête du script d'initialisation global

$dater = new Dater\Dater(new Dater\Locale\Ru(), "Europe/Moscou"); $timezoneDetector = new Dater\TimezoneDetector(); $dater->setClientTimezone($timezoneDetector->getClientTimezone()); $dataHandler = nouveau Dater\DataHandler($dater); $dataHandler->enableOutputTimezoneHandler(); $dataHandler->convertRequestDataToServerTimezone();
Dans le modèle principal

getHtmlJsCode() ?>
Désormais, toutes les chaînes AAAA-MM-JJ HH:MM:SS dans les données envoyées seront remplacées par AAAA-MM-JJ HH:MM:SS dans le fuseau horaire client automatiquement détecté. Si vous devez afficher la date et l'heure dans un format spécifique, ajoutez simplement AAAA-MM-JJ HH:MM:SS[Н m d] ou AAAA-MM-JJ HH:MM:SS où date est le format lié à Dater. . Vous pouvez également générer et formater le format d'horodatage : 1363853607.

Par exemple, les données suivantes

Format d'horodatage : 1363238564 (ne changera pas) Format d'horodatage : 1363238564 Format d'horodatage : 1363238564 Format date/heure du serveur : 14/03/2013 09:22:44 Format date/heure du serveur : 14/03/2013 09:22:44 Format date/heure du serveur : 2013 - 14/03 09:22:44
Sera automatiquement converti en

Format d'horodatage : 1363238564 (ne changera pas) Format d'horodatage : 14/03/2013 Format d'horodatage : 14/03/2013 07:22 Format date/heure du serveur : 14/03/2013 Format date/heure du serveur : 07:22 Format date/heure du serveur : 2013- 03-14 07:22:44

En même temps $dataHandler->convertRequestDataToServerTimezone(); s'assurera que toutes les données AAAA-MM-JJ HH:MM:SS provenant du client seront converties en fuseau horaire du serveur AAAA-MM-JJ HH:MM:SS. De cette façon, le serveur ne saura jamais que le client reçoit et envoie une date-heure dans un fuseau horaire différent.

Certes, c’est une manière un peu extrême de gérer les fuseaux horaires. Une solution plus universelle et traditionnelle serait d'éviter d'utiliser $dataHandler->enableOutputTimezoneHandler(); et encadrez simplement l'insertion de chaque date-heure avec un appel à la méthode de formatage appropriée. Par exempledate($datetimeOrTimestamp) ?> .

à propos du projet

J'avoue honnêtement que je suis l'auteur de cette bibliothèque et je serai très reconnaissant pour toute critique et aide pour l'améliorer. Les sources sont publiées sur

date_default_timezone_set utc(6)

new PDO("mysql:host=localhost;dbname=nametable", "username", "password", );

Ces dates doivent être comparées dans MySQL à l'aide de la fonction NOW() pour renvoyer la différence en heures, par exemple :

SELECT TIMESTAMPDIFF ( hour , NOW (), finalize_at ) FROM plans ;

Mais le problème est que la fonction PHP date("Ymd H:i:s") utilise le paramètre de fuseau horaire PHP et la fonction NOW() prend l'heure MySQL du serveur MySQL.

J'essaie de résoudre ceci :

  1. date_default_timezone_set("Europe/Paris"); Cela ne fonctionne que pour PHP.
  2. date.timezone= "Europe/Paris"; Cela ne fonctionne que pour PHP.
  3. SELECT CONVERT_TZ(maintenant(), "GMT", "MET"); Cela revient vide.
  4. mysql> SET time_zone = "Europe/Paris"; Cela génère une erreur de la console MySQL.

Et le fuseau horaire pour MySQL ne change pas.

Existe-t-il un moyen de modifier le fuseau horaire pour PHP et MySQL sans avoir à le faire depuis la console MySQL ou de définir le changement de fuseau horaire quelque part dans php.ini et de rendre ces valeurs disponibles à la fois pour PHP et MySQL.

J'apprécie vraiment votre soutien.

Vous pouvez le faire facilement avec seulement deux lignes de PHP.

$tz = (new DateTime("maintenant", new DateTimeZone("Asie/Kaboul")))->format("P"); $pdo -> exec ("SET time_zone="$tz";" );

Pour PHP, utilisez cette fonction :

date_default_timezone_set() par défaut - time - zone = "timezone"

Si vous avez le privilège racine, vous pouvez définir la valeur de l'horloge globale du serveur au moment de l'exécution à l'aide de cette instruction :

SET GLOBAL time_zone = fuseau horaire ;

Fuseau horaire par connexion. Chaque client qui se connecte possède son propre fuseau horaire, spécifié par la variable time_zone. Initialement, la variable de session prend sa valeur de la variable globale time_zone, mais le client peut modifier son propre fuseau horaire à l'aide de cette instruction :

SET time_zone = fuseau horaire ;

Meilleure méthode pour définir le fuseau horaire dans PDO MySQL :

Si nécessaire, par erreur vous pouvez utiliser : date("P") Exemple :

nouvel AOP ( "mysql:host=localhost;dbname=nametable", "nom d'utilisateur", "mot de passe" , [ PDO :: MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8;SET time_zone = "". date("P"). """ ]);

Je peux changer mon fuseau horaire MySQL par défaut à partir de la section des variables en modifiant la ligne qui dit "fuseau horaire" dans phpmyadmin.

Ici, vous pouvez également modifier le format et bien d'autres que vous pouvez trouver dans le support MySQL http://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html, j'espère que cela vous aidera.

$unsafe_variable = (is_numeric($_POST["user_input"]) ? $_POST["user_input"] : "");

Et il est bien préférable d'utiliser ces fonctions pour valider l'entrée mysql_real_escape_string.