2009-05-17 9 views
0

Je suis assez nouveau pour php et j'ai lu le livre de Larry Ullman pour développer un site db de base. J'ai utilisé le sélecteur de date du calendrier YUI pour ajouter une date à un champ de texte appelé "date". Le format de date entré est par exemple le jeudi 7 mai 2009Comment convertir la date dans la zone de texte au format MySQL DATETIME

J'ai essayé plusieurs façons d'entrer la date dans mysql db mais il reste à 00 00 00 00 00 00 Ceci est le code relatif à la champ de date je,

// Check for a Date. 
if (eregi ("^([0-9]{2})/([0-9]{2})/([0-9]{4})$", $_POST['date'],)) { 
    $p = escape_data($_POST['date'],); 
} else { 
    $p = FALSE; 
    echo '<p><font color="red">Please enter a valid Date!</font></p>'; 
} 

    // Add the URL to the urls table. 
    $query = "INSERT INTO urls (url, title, description, date) VALUES ('$u', '$t', '$d', '$p')";   
    $result = @mysql_query ($query); // Run the query. 
    $uid = @mysql_insert_id(); // Get the url ID. 

    if ($uid > 0) { // New URL has been added. 

Je pense avoir fourni toutes les informations pertinentes, mais mes excuses à nouveau si ce n'est pas utile et je ferai de mon mieux pour fournir yo toute autre information que vous pourriez avoir besoin. Merci - Sean

Répondre

0

Si le format que votre sélecteur de date passe en est « le jeudi 7 mai 2009 », les fonctions strtotime() et date() devraient travailler pour vous donner une date valide pour passer à MySQL:

$p = date("Y-m-d H:i:s",strtotime('Thursday, 7 May 2009')); 

Si votre champ de base de données est une DATE, vous ne voulez probablement que la partie "Ymd". Si c'est un DATETIME, vous aurez aussi besoin du "H: i: s".

+0

Merci Zombat Je vais faire des recherches, j'ai regardé les chaînes mktime. Merci – Ddywalgi

+0

Salut Zombat, j'ai réalisé que la date peut être soit peuplée par pop-up picker ou peut être saisie.Si je veux définir la date dactylographiée par exemple 12/02/2009, serait-ce la syntaxe correcte? $ date2 = date2 ("^ ([0-9] {2})/([0-9] {2})/([0-9] {4}) $", strtotime ('12/02/2009 ')); $ date1 = date1 ("Y-m-d", strtotime ("Jeudi, 7 mai 2009")); $ p = date ("$ date1", | "$ date2"); Merci de votre aide, cela devient un peu plus logique maintenant. – Ddywalgi

+0

Cela semble assez proche de corriger, je pense. Tant que vous pouvez fournir un horodatage unix comme deuxième paramètre à date(), vous serez en mesure de créer une date MySQL appropriée. strtotime() fonctionne très bien pour cela, ainsi que mktime(). – zombat

0

Vous avez probablement besoin de formater la date de la façon dont mysql l'attend pour ce type de données, ou bien elle ne peut pas le reconnaître. Vous pouvez utiliser une regex ou une méthode similaire pour extraire les composants et les formater en fonction du format du type MySQL DATETIME. EDIT: Voir http://dev.mysql.com/doc/refman/5.0/en/datetime.html pour ledit format. En outre, il est préférable de stocker la date et l'heure sous la forme d'un horodatage Unix, car cela est généralement plus facile à gérer.

+0

Salut Merci. J'ai appris l'horodatage d'Unix, et j'essaye de changer le texte en une valeur que MySQL peut comprendre. AAAA MM DD mais je n'arrive pas à le voir jusqu'ici. Merci pour vos conseils Je vais lire le lien que vous avez envoyé. – Ddywalgi

0

le format de date dans une base MySQL est AAAA-MM-JJ, donc changer la façon dont vous acceptez les données sur php

si (eregi ("^ ([0-9] {2})/([ 0-9] {2})/([0-9] {4}) $ ", $ _POST ['date'],)) { $ p = données d'échappement ($ _ POST ['date'],); } else { $ p = FAUX; echo '

Veuillez entrer une date valide!

';

Devrait être

si (eregi ("^ ([0-9] {4}/([0-9] {2})/([0-9] {2})) $ ", $ _POST ['date'],)) { $ p = données d'échappement ($ _ POST ['date'],); } else { $ p = FAUX; echo '

Veuillez entrer une date valide!

';

Questions connexes