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

Bibliothèques et frameworks PHP Discussion :

Afficher un autre champ d'une clé étrangère à partir d'une table dont elle est issue [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut Afficher un autre champ d'une clé étrangère à partir d'une table dont elle est issue
    Bonsoir cher tous,
    je manipule trois tables: Marchepublic, Bailleur et Marchefinancement qui sont liés selon le model:

    Marchefinancement Model
    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
    <?php
    App::uses('AppModel', 'Model');
    /**
     * Marchefinancement Model
     *
     * @property Marchepublic $Marchepublic
     * @property Bailleur $Bailleur
     */
    class Marchefinancement extends AppModel {
     
    /**
     * Display field
     *
     * @var string
     */
    	public $displayField = 'id';
     
     
    	//The Associations below have been created with all possible keys, those that are not needed can be removed
     
    /**
     * belongsTo associations
     *
     * @var array
     */
    	public $belongsTo = array(
    		'Marchepublic' => array(
    			'className' => 'Marchepublic',
    			'foreignKey' => 'marchepublic_id',
    			'conditions' => '',
    			'fields' => '',
    			'order' => ''
    		),
    		'Bailleur' => array(
    			'className' => 'Bailleur',
    			'foreignKey' => 'bailleur_id',
    			'conditions' => '',
    			'fields' => '',
    			'order' => ''
    		)
    	);
    }
    a partir de la vue du Marché, on peut ajouter un financement (Marchefinancement);
    pour cela, j'ai recuperé l'id du marché depuis la vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php 
    	echo $this->Html->link("Financements", array('controller' => 'marchefinancements','action'=> 'add',
            $marchepublic['Marchepublic']['id']), array( 'class' => 'button'));
    ?>
    et je le gere dans la fonction add() de Marchefinancement:

    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 add($id = null) {
    	if ($this->request->is('post')) {
    		$this->Marchefinancement->create();
    		if ($this->Marchefinancement->save($this->request->data)) {
    		    $this->Session->setFlash(__('The marchefinancement has been saved.'));
    				//return $this->redirect(array('action' => 'index'));				
    			} else {
    				$this->Session->setFlash(__('The marchefinancement could not be saved. Please, try again.'));
    			}
    		}
     
    		$marchepublics = $this->Marchefinancement->Marchepublic->find('list',array(
            'fields' => array('Marchepublic.objet'),
            'conditions' => array('Marchepublic.id =' => $id),
            'recursive' => 0
    		));
     
    		$montantmarche = $this->Marchefinancement->Marchepublic->find('list',array(
            'fields' => array('Marchepublic.montant'),
            'conditions' => array('Marchepublic.id =' => $id),
            'recursive' => 0
    		));
     
    		$bailleurs = $this->Marchefinancement->Bailleur->find('list');
     
    		$this->set(compact('marchepublics', 'bailleurs', 'montantmarche'));
     
    		$this->Paginator->settings = $this->paginate;
     
    		$this->set('marchefinancements', $this->Marchefinancement->find('all',array(
    		'conditions' => array('Marchepublic.id' => $id),
    		'recursive' => 0
    		))
    		, $this->paginate());
    	}
    sur la vue add des Marchefinancements, je veux ajouter de nouveaux financements et au fur et à mesure, s'affiche les lignes enregistrées sur la meme page.
    jusque là tout va bien...

    dans ma vue add:
    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
     
    <table cellpadding="0" cellspacing="0" border="0" class="responsive dynamicTable table table-bordered" width="100%" >
    	<thead>
    		<tr>
    		    <th>Bailleur</th>							
    		   <th>Taux</th>
    		   <th>Montant Bailleur</th>							
    		</tr>
    	</thead>
     
    	<tbody >
    		<?php foreach ($marchefinancements as $marchefinancement): ?>
    		<tr>
    			<td><?php echo h($marchefinancement['Marchefinancement']['bailleur_id']); ?>&nbsp;</td>
    			<td><?php echo h($marchefinancement['Marchefinancement']['taux']); ?>&nbsp;</td>							
    			<td><?php echo h($marchefinancement['Marchefinancement']['montantbailleur']); ?>&nbsp;</td>
    		</tr>
    	</tbody>
    		<?php endforeach; ?>
    </table>
    	<?php echo debug($marchefinancement) ?>
    </div>

    SEULEMENT....
    les bailleurs n'affichent que leurs id, je voudrais faire ressortir le nom des bailleurs.

    aidez-moi svp!!!
    Images attachées Images attachées    

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur PHP
    Inscrit en
    Mai 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur PHP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 37
    Points : 76
    Points
    76
    Par défaut
    Il n'y a pas moyen que tu passe la liste des champs dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $bailleurs = $this->Marchefinancement->Bailleur->find('list');
    comme tu le fait sur machépublic ?

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->set('marchefinancements', $this->Marchefinancement->find('all', array(
                    'conditions' => array('Marchepublic.id' => $id),
                    'recursive' => 0
                ))
                , $this->paginate());
    Quand tu passes "marchefinancements" dans ta fonction set, tu as trois paramètres ce qui n'est pas normal. Que fait ce $this->paginate() ici (qui devrait être d'ailleurs $this->Paginator->paginate()) ?

    De plus la condition sur "Marchepublic.id" est fausse, il faut faire la condition sur la table marchefinancements, sinon tu n'auras qu'un seul résultat au maximum.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $this->set('marchefinancements', $this->Marchefinancement->find('all', array(
                'conditions' => array('Marchefinancement.marchepublic_id' => $id),
                'recursive' => 0
    )));
    Je pense que ton erreur vient de là. Après, il y a d'autres erreurs mais je ne pense pas que ça joue ici.

    Le displayField est le champ qui est affiché dans une liste déroulante, et donc a priori n'a jamais lieu d'être l'id. Je t'invite à le corriger dans Marchefinancement et dans les autres modèles où tu aurais mis la même chose
    De plus, faire une condition sur un id unique dans un find('list') est illogique vu que par définition on souhaite "lister", donc ramener plus d'un résultat.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    Merci pour votre promptitude
    toutes mes excuses je vous envoie le bon écran: cf pieces jointes

    la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $bailleurs = $this->Marchefinancement->Bailleur->find('list');
    me permet de lister tous les lignes de bailleurs enregistrées dans le select Bailleur.

    le tableau comme vous le voyez me renvoie
    *tous les bailleurs qui ont participé à un marché $id
    *avec leurs taux
    *avec le montant

    comme vous le voyez, ce sont les id des bailleurs qui apparaissent; moi je veux afficher leurs noms.
    merci
    Images attachées Images attachées  

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Ca c'est à cause du "displayField = id" dans le modèle marché public, il faut mettre l'intitulé du champ qui doit apparaître à l'écran.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    le display de Marchepublic est bien un intitulé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Marchepublic extends AppModel {
     
    /**
     * Display field
     *
     * @var string
     */
    	public $displayField = 'objet';
    ....
    }

    voici la requete que je veux traduire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT marchefinancements.bailleur_id, bailleurs.name 
    FROM marchefinancements 
    LEFT JOIN marchepublics ON (marchefinancements.marchepublic_id = marchepublics.id) 
    LEFT JOIN bailleurs ON (marchefinancements.bailleur_id = bailleurs.id) 
    WHERE marchepublics.id = 1

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Pardon ma faute, je voulais dire dans le modèle Bailleur bien entendu...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    le modele Bailleur a comme display le champ name;
    c'est pourquoi, je peux voir le nom des bailleurs dans le select.

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Ok, en fait ce qui est anormal sur ta copie d'écran c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    array(
        'Bailleur' => array(
            'id' => null,
            'name' => null,
            'email' => null
            // etc...
        )
    );
    Normalement ici devrait apparaître les infos du bailleur.

    Premièrement, s'assurer qu'un bailleur possédant l'id "5" existe bien (avec un nom et tout ça tout ça).

    Ensuite, debug les requêtes SQL qui sont effectuées tout au long du script, tout à la fin du contrôleur place ce code, ça permettra d'y voir un peu plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->Marchefinancement->getDatasource()->showLog(); exit;
    Tu peux tente d'augmenter le niveau de récursivité à 1 également, mais je n'y crois pas trop.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    je suppose que le debug affiche:
    bailleur id=null... parce qu'il y en a beaucoup.

    je n'arrive toujurs pas à afficher les noms des bailleurs.

  11. #11
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Non il affiche null parce que c'est "null" (et ça ne le devrait pas).

    Essaye de faire ce que je t'ai indiqué dans mon précédent message.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    oui j'ai ajouté ton code mais je sais pas à quoi je dois m'attendre exactement, je ne vois rien

  13. #13
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Tu devrais avoir affiché la liste des requêtes SQL exécutées durant ton script.

    Si tu ne vois rien, c'est sans doute que ton niveau de debuggage n'est pas assez élevé, il doit être de niveau 2 :

    Dans le fichier "app/Config/core.php" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Configure::write('debug', 2);

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    si je vois les requetes

  15. #15
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Peux tu afficher le résultat ?

    Regarde s'il fait une requête pour récupérer les informations du bailleur.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    voici les requetes qui s'affichent:

    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
     
    (default) 7 queries took 105 ms
     
    SELECT `Marchepublic`.`id`, `Marchepublic`.`objet` FROM `bdgsm`.`marchepublics` AS `Marchepublic` LEFT JOIN `bdgsm`.`regions` AS `Region` ON (`Marchepublic`.`region_id` = `Region`.`id`) LEFT JOIN `bdgsm`.`modepassations` AS `Modepassation` ON (`Marchepublic`.`modepassation_id` = `Modepassation`.`id`) LEFT JOIN `bdgsm`.`programs` AS `Program` ON (`Marchepublic`.`program_id` = `Program`.`id`) LEFT JOIN `bdgsm`.`prestations` AS `Prestation` ON (`Marchepublic`.`prestation_id` = `Prestation`.`id`) WHERE `Marchepublic`.`id` = 2
     
    SELECT `Marchepublic`.`id`, `Marchepublic`.`montant` FROM `bdgsm`.`marchepublics` AS `Marchepublic` LEFT JOIN `bdgsm`.`regions` AS `Region` ON (`Marchepublic`.`region_id` = `Region`.`id`) LEFT JOIN `bdgsm`.`modepassations` AS `Modepassation` ON (`Marchepublic`.`modepassation_id` = `Modepassation`.`id`) LEFT JOIN `bdgsm`.`programs` AS `Program` ON (`Marchepublic`.`program_id` = `Program`.`id`) LEFT JOIN `bdgsm`.`prestations` AS `Prestation` ON (`Marchepublic`.`prestation_id` = `Prestation`.`id`) WHERE `Marchepublic`.`id` = 2
     
    SELECT `Bailleur`.`id`, `Bailleur`.`name` FROM `bdgsm`.`bailleurs` AS `Bailleur` WHERE 1 = 1
     
    SELECT `Marchefinancement`.`bailleur_id`, `Bailleur`.`name` FROM `bdgsm`.`marchefinancements` AS `Marchefinancement` LEFT JOIN `bdgsm`.`marchepublics` AS `Marchepublic` ON (`Marchefinancement`.`marchepublic_id` = `Marchepublic`.`id`) LEFT JOIN `bdgsm`.`bailleurs` AS `Bailleur` ON (`Marchefinancement`.`bailleur_id` = `Bailleur`.`id`) WHERE `Marchepublic`.`id` = 2
     
    SELECT `Marchefinancement`.`id`, `Marchefinancement`.`taux`, `Marchefinancement`.`marchepublic_id`, `Marchefinancement`.`bailleur_id`, `Marchefinancement`.`montantbailleur`, `Marchefinancement`.`montanttotal`, `Marchepublic`.`id`, `Marchepublic`.`numinterne`, `Marchepublic`.`numdmp`, `Marchepublic`.`objet`, `Marchepublic`.`lignebudgetaire`, `Marchepublic`.`tauxderetenueavance`, `Marchepublic`.`tauxdegarantie`, `Marchepublic`.`tauxdepenalites`, `Marchepublic`.`tauxdecautiondefinitive`, `Marchepublic`.`datedebut`, `Marchepublic`.`datefin`, `Marchepublic`.`duree`, `Marchepublic`.`delaiexecution`, `Marchepublic`.`datepublication`, `Marchepublic`.`montant`, `Marchepublic`.`dateouverturetechnique`, `Marchepublic`.`dateouverturefinanciere`, `Marchepublic`.`datejugementfinanciere`, `Marchepublic`.`datejugementechnique`, `Marchepublic`.`dateapprobation`, `Marchepublic`.`region_id`, `Marchepublic`.`modepassation_id`, `Marchepublic`.`program_id`, `Marchepublic`.`prestation_id`, `Bailleur`.`id`, `Bailleur`.`name`, `Bailleur`.`email`, `Bailleur`.`tel`, `Bailleur`.`ville`, `Bailleur`.`pays` FROM `bdgsm`.`marchefinancements` AS `Marchefinancement` LEFT JOIN `bdgsm`.`marchepublics` AS `Marchepublic` ON (`Marchefinancement`.`marchepublic_id` = `Marchepublic`.`id`) LEFT JOIN `bdgsm`.`bailleurs` AS `Bailleur` ON (`Marchefinancement`.`bailleur_id` = `Bailleur`.`id`) WHERE `Marchepublic`.`id` = 2	
     
    SELECT `Marchefinancement`.`id`, `Marchefinancement`.`taux`, `Marchefinancement`.`marchepublic_id`, `Marchefinancement`.`bailleur_id`, `Marchefinancement`.`montantbailleur`, `Marchefinancement`.`montanttotal`, `Marchepublic`.`id`, `Marchepublic`.`numinterne`, `Marchepublic`.`numdmp`, `Marchepublic`.`objet`, `Marchepublic`.`lignebudgetaire`, `Marchepublic`.`tauxderetenueavance`, `Marchepublic`.`tauxdegarantie`, `Marchepublic`.`tauxdepenalites`, `Marchepublic`.`tauxdecautiondefinitive`, `Marchepublic`.`datedebut`, `Marchepublic`.`datefin`, `Marchepublic`.`duree`, `Marchepublic`.`delaiexecution`, `Marchepublic`.`datepublication`, `Marchepublic`.`montant`, `Marchepublic`.`dateouverturetechnique`, `Marchepublic`.`dateouverturefinanciere`, `Marchepublic`.`datejugementfinanciere`, `Marchepublic`.`datejugementechnique`, `Marchepublic`.`dateapprobation`, `Marchepublic`.`region_id`, `Marchepublic`.`modepassation_id`, `Marchepublic`.`program_id`, `Marchepublic`.`prestation_id`, `Bailleur`.`id`, `Bailleur`.`name`, `Bailleur`.`email`, `Bailleur`.`tel`, `Bailleur`.`ville`, `Bailleur`.`pays` FROM `bdgsm`.`marchefinancements` AS `Marchefinancement` LEFT JOIN `bdgsm`.`marchepublics` AS `Marchepublic` ON (`Marchefinancement`.`marchepublic_id` = `Marchepublic`.`id`) LEFT JOIN `bdgsm`.`bailleurs` AS `Bailleur` ON (`Marchefinancement`.`bailleur_id` = `Bailleur`.`id`) WHERE 1 = 1 LIMIT 20
     
    SELECT COUNT(*) AS `count` FROM `bdgsm`.`marchefinancements` AS `Marchefinancement` LEFT JOIN `bdgsm`.`marchepublics` AS `Marchepublic` ON (`Marchefinancement`.`marchepublic_id` = `Marchepublic`.`id`) LEFT JOIN `bdgsm`.`bailleurs` AS `Bailleur` ON (`Marchefinancement`.`bailleur_id` = `Bailleur`.`id`) WHERE 1 = 1
    je pense que celle ci devrait faire l'affaire ...mais rien!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT `Marchefinancement`.`bailleur_id`, `Bailleur`.`name` FROM `bdgsm`.`marchefinancements` AS `Marchefinancement` LEFT JOIN `bdgsm`.`marchepublics` AS `Marchepublic` ON (`Marchefinancement`.`marchepublic_id` = `Marchepublic`.`id`) LEFT JOIN `bdgsm`.`bailleurs` AS `Bailleur` ON (`Marchefinancement`.`bailleur_id` = `Bailleur`.`id`) WHERE `Marchepublic`.`id` = 2

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    je viens de me rendre compte que le bailleur N°5 n'existait pas ==> 'null'

    à present le debug donne des infos sur la bailleur, mais je n'ai toujours pas pu afficher les noms des bailleurs.
    Images attachées Images attachées  

  18. #18
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 275
    Points
    3 275
    Par défaut
    Je m'en doutais... Met une clef étrangère sur ta colonne "bailleur_id", ça t'évitera ce genre de problème.

    Sinon pour afficher le nom, remplace cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><?php echo h($marchefinancement['Marchefinancement']['bailleur_id']); ?>&nbsp;</td>
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><?php echo h($marchefinancement['Bailleur']['name']); ?>&nbsp;</td>

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Février 2008
    Messages : 154
    Points : 58
    Points
    58
    Par défaut
    VRAIMENT!!!
    j'avais dejà mis ce code là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><?php echo h($marchefinancement['Bailleur']['name']); ?>&nbsp;</td>
    je comprends pas mais CA MARCHE enfin!!!

    il me reste à calculer le montant du bailleur...ça c'est une autre discussion.

    MERCI
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/08/2012, 14h36
  2. Réponses: 4
    Dernier message: 10/10/2010, 12h46
  3. Réponses: 2
    Dernier message: 05/03/2010, 15h15
  4. Réponses: 1
    Dernier message: 28/04/2009, 03h12
  5. [Formulaire] Afficher 2 autres champs si on sélectionne une option
    Par plex dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 14/05/2008, 12h07

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