J'ai un formulaire qui passe deux dates (début et fin) à un script PHP qui les ajoutera à une base de données. J'ai des problèmes pour valider cela. Je reçois toujours les erreurs suivantes
Une valeur numérique mal formée rencontrée
C'est à ce moment que j'utilise ce qui suit
date("d",$_GET['start_date']);
Mais lorsque j'utilise la fonction strtotime () comme conseillé par de nombreux sites, j'obtiens une date d'horodatage unix du 1/1/1970. Des idées comment puis-je obtenir la date correcte?
php
validation
date
time
Deviland
la source
la source
$_GET['start_date']
contient.$_GET['start_date']
n'est pas un horodatage qui est attendu par ladate
fonction comme deuxième argumentRéponses:
Parce que vous passez une chaîne comme deuxième argument à la fonction de date, qui doit être un entier.
Essayez strtotime qui analysera toute description datetime textuelle en anglais dans un horodatage Unix (entier):
la source
public function __construct(int $someId....)
Vous pouvez simplement résoudre ce problème en utilisant la
strtotime()
fonction.la source
$_GET['start_date']
n'est pas numérique est mon pari, mais un format de date non pris en charge parstrtotime
. Vous aurez besoin de reformater la date à un format pratique pour strtotime combinaison ou l' utilisation d' exploser / mktime .Je pourrais vous ajouter un exemple si vous aviez la gentillesse de publier le format que vous recevez actuellement.
la source
Je me suis heurté à la même situation (dans mon cas avec une valeur de date dans un champ PHP personnalisé dans une vue Drupal), et ce qui a fonctionné pour moi était d'utiliser intval au lieu de strtotime pour transformer la valeur en un entier - car c'était essentiellement un horodatage , mais sous la forme d'une chaîne plutôt que d'un entier. Évidemment, ce ne sera pas le cas pour tout le monde, mais cela vaut peut-être la peine d'essayer.
la source
Cette erreur se produit lorsque vous effectuez des calculs avec des variables qui utilisent des lettres combinées avec des nombres (alphanumériques), par exemple 24kb, 886ab ...
J'ai eu l'erreur dans la fonction suivante
L'application télécharge des images mais cela n'a pas fonctionné, elle a montré l'avertissement suivant:
Solution: La
intval()
fonction extrait la valeur entière d'une variable avec des données alphanumériques et crée une nouvelle variable avec la même valeur mais convertie en entier avec laintval()
fonction. Voici le code:la source
Cela m'a beaucoup aidé -
la source
C'est une vieille question, mais il y a une autre manière subtile de faire passer ce message. C'est assez bien expliqué ici, dans la documentation .
Imaginez ce scénario:
Et
MyCustomExceptionHandler
est défini à peu près comme:Cela déclenchera en fait une nouvelle exception dans le gestionnaire d'exceptions personnalisé car la
Exception
classe attend un nombre pour le deuxième paramètre dans son constructeur, maisPDOException
peut avoir changé dynamiquement le type de retour de$e->getCode()
en chaîne.Une solution de contournement pour cela serait de définir votre gestionnaire d'exceptions personnalisé comme:
la source
Passer une chaîne n'est pas nécessairement un problème, si elle ne contient que des chiffres.
Une autre raison pour laquelle cela peut arriver est si vous avez un espace avant ou après. Par exemple, "1557399276"
la source
Si l'erreur se produit au moment d'un calcul, vérifiez que les valeurs ne contiennent pas de virgule (,). Les valeurs doivent être uniquement au format entier / flottant.
la source
Vous devez définir le fuseau horaire en utilisant date_default_timezone_set ().
la source
Dans mon cas, c'était la clé de sem_get
$ key doit être un int, sinon vous obtiendrez l'erreur suivante:
la source
si $ _GET ['start_date'] est une chaîne, convertissez-la en entier ou en double pour traiter numériquement.
la source