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

Flex Discussion :

amfphp et le type date


Sujet :

Flex

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 132
    Par défaut amfphp et le type date
    Bonjour,

    j'aimerais savoir si quelqu'un a réussi à faire fonctionner correctement amfphp avec des dates (format DATE dans mysql), c'est à dire faire des updates et des select

    pour l'instant cela ne fonctionne pas (insertion de 00-00-0000) et on m'a dit que PHP ne reconnait pas les dates comme type de façon native...

    cela peut-il fonctionner ? ya il un moyen de contourner ça ?

    merci pour vos conseils

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 132
    Par défaut
    je fais l'insertion à partir d'un datechooser en flex

    voila ma classe qui contient la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    class Member {
    		public function __construct() {
    			//$this->auniq = uniqid();
    		}
    	var $id;
    	var $username;
    	var $firstName;
    	var $lastName;
    	var $phone;
    	var $startDate;
    	// many to many arrays
    	var $_explicitType = "com.crazedcoders.date.Member";
    	public function __set_state( $assoc ) {
    		if( $assoc['id'] == null ) {
    			$this->id = 0;
    		}
    		else {
    			$this->id = (int)$assoc['id'];
    		}
    		$this->username = (string)$assoc['username'];
    		$this->firstName = (string)$assoc['firstName'];
    		$this->lastName = (string)$assoc['lastName'];
    		$this->phone = (string)$assoc['phone'];
    		if( $assoc['startDate'] == null ) {
    			$this->startDate = null;
    		}
    		else {
    			$this->startDate = (string)$assoc['startDate'];
    		}
    	}
    }
    et ma classe ma méthode d'ajout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public function createOne( $role ) {
    		$query =
    			"INSERT INTO member (
    				id
    				,username
    				,firstName
    				,lastName
    				,phone
    				,startDate
    			)
    			VALUES (
    					'".$role->id."'
    					,'".$role->username."'
    					,'".$role->firstName."'
    					,'".$role->lastName."'
    					,'".$role->phone."'
    					,".date("Y-m-d",$role->startDate/1000)."
     
    			);";
    		if( mysql_query( $query, $this->dbConn ) ) {
    			$lastInsertId = null;
    			$lastInsertId = mysql_insert_id( $this->dbConn );
     
    			$role->id = $lastInsertId;
     
    			$tmparr = array();
    			array_push( $tmparr, $role );
    			array_push( MemberDao::$loaded, $role );
    			$this->addFKeysToObjects( $tmparr );
    			return( $role );
    		}
    		else {
    			return mysql_error();
    		}
    	}
    de même quand la date est correctement rentrée dans la base flex ne la lit pas correctement et mets la date du jour à la place (dans toutes les lignes du datagrid d'ailleurs)

    apparement il y a une classe dateWrapper dans amfphp qui permet de passer d'une date php en flash (as) et vice versa

    j'ai essayé de changer ma première fonction en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class Member {
    		public function __construct() {
    			//$this->auniq = uniqid();
    		}
     
    	var $id;
    	var $username;
    	var $firstName;
    	var $lastName;
    	var $phone;
    	var $startDate;
    	var $date;
     
    	private function parseDate($s)  
    	{  
    	$strf = preg_split("/[- :]/",$s); //'%Y-%m-%d %H:%M:%S'  
    	$gmtime = gmmktime($strf[3], $strf[4], $strf[5], $strf[1], $strf[2], $strf[0]);  
    	return new DateWrapper($gmtime);  
    	}
     
    	// many to many arrays
    	var $_explicitType = "com.crazedcoders.date.Member";
    	public function __set_state( $assoc ) {
    		if( $assoc['id'] == null ) {
    			$this->id = 0;
    		}
    		else {
    			$this->id = (int)$assoc['id'];
    		}
    		$this->username = (string)$assoc['username'];
    		$this->firstName = (string)$assoc['firstName'];
    		$this->lastName = (string)$assoc['lastName'];
    		$this->phone = (string)$assoc['phone'];
    		if( $assoc['startDate'] == null ) {
    			$this->startDate = null;
    		}
    		else {
    			$date = (string)$assoc['startDate'];
    			$this->startDate = parseDate($date);
    		}
    	}
    }
    mais cela ne fonctionne pas non plus...

    merci d'avoir lu jusqu'au bout et merci pour votre aide et vos conseils

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Par défaut
    Aurais tu trouver comment faire par hasard ? parce que j'ai le même type de souci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public function addCollab(event:MouseEvent):void
    		{	
    			tabNewCollab[1] = this.txt_Nom.text;
    			tabNewCollab[2] = this.txt_Prenom.text;
    			tabNewCollab[3] = this.txt_NumeroBadge.text;
    			tabNewCollab[4] = this.fieldDateEntree.selectedDate as Date;
    			tabNewCollab[5] = this.fieldDateSortie.selectedDate as Date;
    			tabNewCollab[6] = this.txt_Service.text;
    			tabNewCollab[7] = this.txt_Fonction.text;
     
    			var tempForm:Array = new Array;
    			tempForm = form1.getChildren();
     
    			var fitem:FormItem = new FormItem;
    			var compo:UIComponent = new UIComponent;
    			var cbox:CheckBox = new CheckBox;
     
    			for (x = 1, y = 8; x < tempForm.length; x++)
    			{
    				fitem = tempForm[x] as FormItem;
    				compo = fitem.getChildren()[0] as UIComponent;
    				if (compo is mx.controls.CheckBox)
    				{
    					cbox = compo as CheckBox;
    					if (cbox.selected == true)
    					{
    						tabNewCollab[y] = "oui";
    					}
    					else
    					{
    						tabNewCollab[y] = "non";
    					}
    					y++;
    				}
    			}
     
    			Alert.show(tabNewCollab.toString());
    			servRO.getOperation('serviceAddCollab').send(tabNewCollab);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	function serviceAddCollab ($tab)
    	{
    		$db = mysql_connect("localhost","login","pass");
     
    		mysql_select_db("acces_dor", $db);
     
     
    		$dw1 = new DateWrapper($tab[4]);
    		$dw2 = new DateWrapper($tab[5]);
    		$dateEntreeTemp = $dw1->getClientDate();
    		$dateSortieTemp = $dw2->getClientDate();
    		$dateEntree = date('d m Y', $dateEntreeTemp);
    		$dateSortie = date('d m Y', $dateSortieTemp);
     
     
     
    		$Requete = "INSERT INTO securite_liste(dateEntree, dateSortie) VALUES('$dateEntree', '$dateSortie')";
     
    		$Resultat = mysql_query( $Requete );
    		return($Resultat);
    	}

  4. #4
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    as tu essayé avec des TimeStamp plutôt que des Date?

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Par défaut
    Perso j'utilise le temps UTC coté flash et son équivalent timestamp cote php et je n'ai aucun soucis

    edit encore griller par Jim

  6. #6
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Salut

    Je suis parvenu dernièrement à palier à ce genre de souci.
    C'est vrai que DATE de MySQL est bridé sur le format :

    0000-00-00
    J'ai donc par consequent modifié le comportement de la date de datechooser.

    private function getDate (e:CalendarLayoutChangeEvent):void{


    date.text= (e.currentTarget.selectedDate.getFullYear() +
    "-" + (e.currentTarget.selectedDate.getMonth() + 1) +
    "-" + e.currentTarget.selectedDate.getDate());
    }
    Dans ce cas de figure, la date est renvoyée à PHP au format :
    0000-0-0
    Par exemple, pour le 1 Janvier, il est envoyé 1-1, et non pas 01-01.
    Mais ce là ne pose aucun probléme php/mysql.
    La date est bien enregistrée au format :
    0000-01-01
    Voilà, à vous de l'adapter, si celà peut vous aider.

  7. #7
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2
    Par défaut
    Merci tout le monde et surtout Alain. J'ai pu regler ce probleme grace à vous. Voila le code fonctionnant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public function addCollab(event:MouseEvent):void
    			{			
    				tabNewCollab[4] = (this.fieldDateEntree.selectedDate.getFullYear() + "-" 
    				+ (this.fieldDateEntree.selectedDate.getMonth() + 1) + "-" 
    				+ this.fieldDateEntree.selectedDate.getDate());
    				tabNewCollab[5] = (this.fieldDateSortie.selectedDate.getFullYear() + "-" 
    				+ (this.fieldDateSortie.selectedDate.getMonth() + 1) + "-" 
    				+ this.fieldDateSortie.selectedDate.getDate());
     
     
    				var tempForm:Array = new Array;
    				tempForm = form1.getChildren();
     
    				var fitem:FormItem = new FormItem;
    				var compo:UIComponent = new 
     
    				Alert.show(tabNewCollab.toString());
    				servRO.getOperation('serviceAddCollab').send(tabNewCollab);
    				fermerPopUp();
    			}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function serviceAddCollab ($tab)
    	{
    		/* Connexion à la base de données MySQL grâce au nom d’hôte, au login et au mot de passe */
    		$db = mysql_connect("localhost","login","pass");
     
    		/* Sélection de la base de données */
    		mysql_select_db("db", $db);
     
    		$dateEntree = $tab[4];
    		$dateSortie = $tab[5];
     
    		$Requete = "INSERT INTO securite_liste(dateEntree, dateSortie) VALUES('$dateEntree', '$dateSortie')";
     
    		/* Résultat de la requête */
    		$Resultat = mysql_query( $Requete );
    		return($Resultat);
    	}

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

Discussions similaires

  1. Critères sur champ de type date
    Par blasco dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 09h48
  2. Réponses: 3
    Dernier message: 08/10/2004, 00h12
  3. BC6 inserer un enreg de type date/heure dans Access2003
    Par o_live dans le forum C++Builder
    Réponses: 2
    Dernier message: 25/06/2004, 11h13
  4. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57
  5. utilisation du type DATE d'interbase
    Par dibak dans le forum InterBase
    Réponses: 4
    Dernier message: 05/01/2004, 15h03

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