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.