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 à 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 expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

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

  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 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