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

Symfony PHP Discussion :

Update d'une valeur de table via une autre table sans passer par primary key [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 19
    Points
    19
    Par défaut Update d'une valeur de table via une autre table sans passer par primary key
    Bonjour,

    Je me retrouve dans un dilemme, il se trouve que j'ai un formulaire:

    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
    <legend>
    					<h3>Création d'un Programme</h3>
    				</legend>
    				<p>
    					<label for="title">Titre du Programme :</label> 
    					<input type="text" name="title" id="title" />
    				</p>
    				<p>
    					<label for="description">Description du Programme :</label> 
    					<input type="text" name="description" id="description" />
    				</p>
    				<p>
    					<label for="adress">Adresse :</label> 
    					<input type="text" name="adress" id="adress" />
    				</p>
    				<p>
    					<label for="zipcode">Code Postal :</label> 
    					<input type="text" name="zipcode" id="zipcode" />
    				</p>
     
    				<p>
    					<label for="city">Ville :</label> 
    					<input type="text" name="city" id="city" />
    				</p>
                                    <p>
                                            <input id="file_upload" name="file_upload" type="file" />
                                    </p>
     
    				<p>
    					<input type="submit" name="submit" value="Creer" />
    				</p>
                                    <p>
    					<a href="<?php echo url_for('mon_compte/Accueil'); ?>">Retour</a>
    				</p>
     
    			</fieldset>
    Qui doit me remplir un base de donnée :

    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
    programme:
        _attributes: { phpName: Programme }
        id: { phpName: Id, type: INTEGER, size: '11', primaryKey: true, autoIncrement: true, required: true }
        name: { phpName: Name, type: VARCHAR, size: '100', required: false }
        address: { phpName: Address, type: VARCHAR, size: '255', required: false }
        delivery_date: { phpName: DeliveryDate, type: DATE, required: false }
        description: { phpName: Description, type: LONGVARCHAR, required: false }
        picture: { phpName: Picture, type: VARCHAR, size: '255', required: false }
        latitude: { phpName: Latitude, type: VARCHAR, size: '20', required: false }
        longitude: { phpName: Longitude, type: VARCHAR, size: '20', required: false }
        created_at: { phpName: CreatedAt, type: DATE, required: false }
        updated_at: { phpName: UpdatedAt, type: DATE, required: false }
        passerelle: { phpName: Passerelle, type: VARCHAR, size: '45', required: false }
        active: { phpName: Active, type: TINYINT, size: '1', required: false }
        agency_id: { phpName: AgencyId, type: INTEGER, size: '10', primaryKey: true, required: true, foreignTable: agency, foreignReference: id, onDelete: RESTRICT, onUpdate: RESTRICT }
        city: { phpName: City, type: BIGINT, size: '20', primaryKey: true, required: true, foreignTable: pays, foreignReference: id, onDelete: RESTRICT, onUpdate: RESTRICT }
        _indexes: { fk_programme_agency1: [agency_id], fk_programme_pays1: [city], fk_programme_property_type: [property_type_id]}
    Mais pour me remplir celle-ci, elle doit réccupérer la valeur id de celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pays:
        _attributes: { phpName: Pays }
        id: { phpName: Id, type: BIGINT, size: '20', primaryKey: true, autoIncrement: true, required: true }
        country: { phpName: Country, type: VARCHAR, size: '128', required: true }
        region: { phpName: Region, type: VARCHAR, size: '128', required: true }
        department: { phpName: Department, type: VARCHAR, size: '128', required: true }
        city: { phpName: City, type: VARCHAR, size: '128', required: true }
        zipcode: { phpName: Zipcode, type: VARCHAR, size: '12', required: true }
        latitude: { phpName: Latitude, type: VARCHAR, size: '128', required: true }
        longitude: { phpName: Longitude, type: VARCHAR, size: '128', required: true }
        created_at: { phpName: CreatedAt, type: TIMESTAMP, required: true }
        updated_at: { phpName: UpdatedAt, type: TIMESTAMP, required: true }
        _uniques: { city: [city, latitude, longitude] }
    Et c'est là qu'intervient tout le problème, j'aimerais récupérer ma valeur id de la deuxième table et passant par la valeur 'city' de celle-ci, et que je retransmet à ma première table dans la colonne 'city'. Je ne peux pas modifier la structure car il y a déjà des données dans les tables.

    J'ai utiliser ce code php pour l'update de ma table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public function executeCreateProgramme(sfWebRequest $request) 
    	{
    		if($request->isMethod("post"))
    		{
    			$InfosProgramme = new Programme();
    			$InfosProgramme->setAgencyId($_SESSION['idAgency']);
    			$InfosProgramme->setAddress($_POST['address']);
    			$InfosProgramme->setZipcode($_POST['zipcode']);
    			$ville = ($_POST['city']);
    			$idville = $this->pays->getId($ville);
    			echo ($idville);
    			$InfosProgramme->setCity($idville);
    			$InfosProgramme->save();
    A partir de là j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     PHP Fatal error:  Call to a member function getId() on a non-object
    Si quelqu'un pourrait m'aider j'en serais ravi.

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Je pense que tu n'es pas dans le bon forum, ce code est Symfony1.4 non ?

    De ce que je vois dans ton code tu fais appel $this->pays ou est la déclaration de cet objet ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par stephan.78 Voir le message
    Je pense que tu n'es pas dans le bon forum, ce code est Symfony1.4 non ?

    De ce que je vois dans ton code tu fais appel $this->pays ou est la déclaration de cet objet ?
    Dans la déclaration de mes méthodes sur les bases (BasePays.php). Il est déclarer ainsi que tout les fonctions en rapports au différents élements de ma table.

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Mais c'est du 1.4 quand même

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par stephan.78 Voir le message
    Mais c'est du 1.4 quand même
    D'accord pas de souci je passe sur le forum 1.4 alors

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2013, 15h10
  2. Réponses: 2
    Dernier message: 01/02/2013, 15h50
  3. actualiser un document via un lien web sans passer par infoview
    Par jod13 dans le forum Administration-Migration
    Réponses: 5
    Dernier message: 14/06/2012, 09h40
  4. Réponses: 3
    Dernier message: 30/04/2009, 14h06
  5. Réponses: 2
    Dernier message: 06/01/2005, 21h09

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