IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insérer des données au format date [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 20
    Points
    20
    Par défaut insérer des données au format date
    Bonjour

    j'ai un script qui fait un ajout de champs de type date dans une table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER TABLE $nomTable ADD $nomChamp
    et lorsque j'insere une valeur dans ce champs ça m'affiche toujours
    0000-00-00

    les dates que je veux insere sont toujours au format AAAA/MM/JJ HH:MM:SS

    je voudrais savoir les modif a faire au niveau de la requete qui ajoute le champ de type date pour sa insère correctement mes dates.

    Merci pour votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Ta création de champ est a priori correcte. En effet, le format date de Mysql est YYYY-DD-MM hh:mm:ss.

    Il faut donc que tu convertisse tes dates du format php vers le format mysql à l'insertion et inversement lorsque tu les récupères.
    Comment convertir une date MySQL au format francophone ? et Comment convertir une date au format francophone vers le format anglais ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    merci Celira

    dans le tuto du second lien que tu m'a donné une fonction qui m'a l'air très utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO ma_table SET mon_champ_date = STR_TO_DATE('$date', '%d/%m/%Y')
    j'ai donc cree la fonction suivante qui convertie le format php au format MySQL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function datefr2en($mydate)
    {
    	@list($mydateDay,$mydateTime)=explode(' ',$mydate);
    	@list($jour,$mois,$annee)=explode('/',$mydateDay);
    	@list($heure,$minute,$seconde)=explode(':',$mydateTime);
     
    	return @date('Y-m-d H:i:s',mktime
                 ($heure,$minute,$seconde,$mois,$jour,$annee));
    }
    Je l'ai tester avec un simple affichage mais lorsque je l'utilise pour inserer une date dans ma base de donnée sa m'affiche toujours 0000-00-00 00:00:00

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Peut-on avoir le code exact que tu utilises pour insérer ta date ? avec les appels de fonction..
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    Les donné proviennent d'un fichier csv et dans l'insertion de mes donné je fais un test si le champs est de type "DITETIME" avant de faire la convertion de la date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    while(!feof($FILE) && ($nbre_ligne<2)) // j'insère que 2 ligne pour le moment 
    	{							$ARRAY=fgetcsv($FILE,1024,";"," ");      // lire ligne par ligne avec la virgule comme séparateur							$tailleLigne=sizeof($ARRAY[0]);					if($tailleLigne=$k)							{								if ($ARRAY[0]!="")	// si ligne pas vide						{								$query="INSERT INTO fichiers.$Input  ("; // on insert dans la table input									for($j=0;$j<$k;$j++)							{
    			$query .= "{$tabChamp[$j][0]}"; // nom du champ dans la table $Input
    			if ($j != $k-1)								{								$query .= ", ";							}							}
    									// creation 2e partie INSERT  
    										$query .= ") VALUES (";						for($j=0;$j<$k;$j++)							{								if ( $ARRAY[$j] == "" )							{								$xls ="";								}							else									{								if($tabChamp[$j][0] == " DATETIME NOT NULL") // je vérifie que le champ est un DATETIME							{								$xlsb=htmlspecialchars($ARRAY[$j], ENT_QUOTES);											$xls=datefr2en($xlsb); // appel de la fonction de convertion		echo $xls;							}								else								{								$xls=htmlspecialchars($ARRAY[$j], ENT_QUOTES);											}							}								$query .= "'$xls'";							if ($j != $k-1) 								{								$query .= ", ";							}							}								// ferme l'insertion							$query .=")";						$resul=mysql_query($query);					if (!$resul)							{								echo "$query............. <br>";					echo "Impossible d'ajouter la ligne ".$nbre_ligne." du fichier <br>".($CheminFichier+1);							mysql_close(); // Déconnexion						}							$nbre_ligne++;							}								}
    la fonction de convertion de date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function datefr2en($mydate){
       @list($mydateday,$mydateTime)=explode(' ',$mydate);
       @list($jour,$mois,$annee)=explode('/',$mydateday);
       @list($heure,$minute,$seconde)=explode(':',$mydateTime);
     
       $NewDate = $annee."-".$mois."-".$jour." ".$heure.":".$minute.":".$seconde;
     //return @date('Y-m-d H:i:s',mktime($heure,$minute,$seconde,$mois,$jour,$annee));
     
       return $NewDate;
    }
    j'ai tester l'affichage des deux return séparerement aucun sa affichage le bon format AAAA-MM-JJ hh:mm:ss mais dans la table sa me donne toujours rien

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    pb résolu
    la fonction fonctionne très bien l'erreur provenant de mon test sur le champs de type DATETIME la référence que je donne (contenur dans un tableau) était fausse (mauvaise valeur de l'index)

    Merci quand meme Celira pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] OleAutomation - Insérer des données au format HTML
    Par GofAcid dans le forum Word
    Réponses: 0
    Dernier message: 20/03/2012, 14h16
  2. Insérer des données cryptées MD5
    Par Amnesiak dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/08/2005, 18h08
  3. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11
  4. Réponses: 2
    Dernier message: 15/04/2005, 15h51
  5. [JTable] Insérer des données?
    Par waldo2188 dans le forum Composants
    Réponses: 4
    Dernier message: 29/03/2005, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo