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


Sujet :

Symfony PHP

  1. #1
    Membre averti
    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
    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 Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    $this->pays n'est pas instancié

  3. #3
    Membre averti
    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
    Par défaut
    Citation Envoyé par gototog Voir le message
    $this->pays n'est pas instancié
    Il me semblait que oui pourtant dans mon BasePays.php et mème dans mon BaseProgramme.php

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/02/2013, 15h10
  2. Réponses: 4
    Dernier message: 01/02/2013, 16h05
  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