Bonjour,
me revoici, en effet hier ou avant hier j'avais poste un sujet a propos de tableau avec code igniter. (voir le post : https://forum.alsacreations.com/topic-20-85561-1.html)
je m'explique j'ai dans ma BDD un client malade ou non qui prends des rendez vous, ces Rdv ont des prestations j'ai essaye d'afficher les prestations par rapport à l'id du Rdv mais ça marchais pas trop, en effet j'avais

$data['rdvMalade'] = $this->Rdv_m->get_rdv_malade () ;
foreach($data['rdvMalade'] as $item){
            $idRdv = $item->idRdv;
            $data ['presta'] = $this->Prestations_m->get_la_prestation($idRdv);
}

et les prestations affichés étaient celles du dernier RDV, on m'a donc suggérer de faire un double tableau mais j'ai pas réussis a trouve la solution pour faire un double tableau avec mes 2 tableaux d'objet et quand j'ai utiliser merge () pour fusionner j'ai pas ressuis a afficher les prestations correctement dans ma vue donc j'ai décidé de prendre le truc sous un autre angle c est a dire directement avec le SQL:
Voici ma requete :

select depend.idRdv, prestation.libellePrestation, prestation.descriptionPrestation, client.nomClient, client.prenomClient 
from depend 
INNER join prestation on prestation.idPrestation = depend.idPrestation
inner join rendez_vous on rendez_vous.idRdv = depend.idRdv 
inner join client on client.idClient = rendez_vous.idClient
WHERE rendez_vous.rdvValide=0 
and client.malade=1


voici le resultat:
upload/1567348512-65800-capture1.png

je souhaite faire en sorte d'enlever le doublons sur idRdv mais en gardant les reste des info, j'avais donc tester :

select GROUP_CONCAT(depend.idRdv), prestation.libellePrestation, prestation.descriptionPrestation, client.nomClient, client.prenomClient 
from depend 
INNER join prestation on prestation.idPrestation = depend.idPrestation
inner join rendez_vous on rendez_vous.idRdv = depend.idRdv 
inner join client on client.idClient = rendez_vous.idClient
WHERE rendez_vous.rdvValide=0 
and client.malade=1


mais ça me donne sa :
upload/1567348683-65800-capture2.png

donc je re teste autrement avec
 GROUP_CONCAT(prestation.libellePrestation, prestation.descriptionPrestation)


et ça me donne sa :
upload/1567348763-65800-capture3.png

est ce qu'il y aurai un moyen d'avoir 1 ligne pour chaque id de RDV mais fusionner prestation.libellePrestation et prestation.descriptionPrestation
en gros mon idRdv 2 une fois mais avec libelle et descriptions des prestations du RDV 2 dans une seule et même ligne

voici mon MCD si ça peut vous aidez
upload/1567349011-65800-capture.png

j'espère que j'ai réussis a bien m'exprimer >< je suis pas très à l'aise avec code igniter et les choses de ce genre mais comme c'est un sujet d'examen ben pas trop le choix que de m'y mettre ..

bonne journée à vous
Modifié par NenoLucia (16 Feb 2020 - 18:30)
Re!
Est-ce que tu as une sauvegarde de ce que tu avais avant? Si oui, tu peux essayer ça pour l'histoire du double tableau:

$data['rdvMalade'] = $this->Rdv_m->get_rdv_malade () ;
foreach($data['rdvMalade'] as $key => $item){
            $idRdv = $item->idRdv;
            $data ['rdvMalade'][$key]['presta'] = $this->Prestations_m->get_la_prestation($idRdv);
}

(désolé je ne te l'ai pas suggéré hier, j'étais fatigué^^)

Sinon, pour le SQL tu peux essayer ça:

select depend.idRdv, MAX(prestation.libellePrestation), MAX(prestation.descriptionPrestation), client.nomClient, client.prenomClient 
from depend 
INNER join prestation on prestation.idPrestation = depend.idPrestation
inner join rendez_vous on rendez_vous.idRdv = depend.idRdv 
inner join client on client.idClient = rendez_vous.idClient
GROUP BY depend.idRdv, client.nomClient, client.prenomClient 
WHERE rendez_vous.rdvValide=0 
and client.malade=1


Bon courage Smiley smile
Modifié par Mathieu8337 (01 Sep 2019 - 19:23)
Coucou,

pas de soucis t'en fais pas ^^,

pour la requête sql il y a un probleme après le where mais par contre quand je supprime la clause where et and a la fin il m'affiche ça :
upload/1567359874-65800-capture1.png

mais le soucis est que le rdv 2 à 2 prestation la coupe offerte et soin perruque donc je pense que ma problématique doit se régler qu'avec du php, parce que soit j'ai plusieurs fois le même rdv pour chaque prestation affichée soit je l'ai une seule fois mais avec 1 prestation sur les 2
je sais pas si je m'explique bien ><

et pour les tableaux php j'ai ce message :
Array to string conversion


voici mon tableau data['rdvMalade'] generé par code igniter
Array
(
    [0] => stdClass Object
        (
            [idRdv] => 2
            [dateRdv] => 2019-09-04
            [heureDebutRdv] => 14:00:00
            [heureFinRdv] => 15:00:00
            [rdvValide] => 0
            [idClient] => 4
            [nomClient] => DAVID
            [prenomClient] => camille
            [mailClient] => azert@gmail.com
            [mdpClient] => 202cb962ac59075b964b07152d234b70
            [adrClient] => 17 avenue salvador allende
            [cpClient] => 91220
            [paysClient] => France
            [telClient] => 1245788956
            [admin] => 0
            [malade] => 1
        )

    [1] => stdClass Object
        (
            [idRdv] => 3
            [dateRdv] => 2019-09-09
            [heureDebutRdv] => 14:00:00
            [heureFinRdv] => 15:00:00
            [rdvValide] => 0
            [idClient] => 4
            [nomClient] => DAVID
            [prenomClient] => camille
            [mailClient] => azert@gmail.com
            [mdpClient] => 202cb962ac59075b964b07152d234b70
            [adrClient] => 17 avenue salvador allende
            [cpClient] => 91220
            [paysClient] => France
            [telClient] => 1245788956
            [admin] => 0
            [malade] => 1
        )

)


il correspond a cette requete sql :
select * from rendez_vous INNER join client on client.idClient = rendez_vous.idClient WHERE client.malade=1 AND rendez_vous.rdvValide =0 
Salut,
Au final plus de problèmes que de solutions... Smiley confused

Alors pour le problème avec le WHERE, c'est de ma faute: le GROUP BY doit s'écrire après le WHERE et non pas avant.
Ensuite pour le résultat, cette syntaxe doit normalement te retourner un tableau dont la clé est idRdv, mais suivant comment est gérée la requête par code igniter c'est peut-être pas le cas.

Au final, tu as raison: le mieux est certainement de passer par du php pur: avec tes anciennes requetes, tu avais toutes les infos dont tu as besoin. En imbriquant deux foreach tu pourras créer un "vrai" tableau que tu pourras utiliser comme tu veux. Exemple:

<?php
$tableau_synthese = array();
$data['rdvMalade'] = $this->Rdv_m->get_rdv_malade () ;
foreach($data['rdvMalade'] as $item){
	$idRdv = $item->idRdv;

	//Saisie des infos liées au malade
	$tableau_synthese[$idRdv]['nomClient'] = $item->nomClient;
	$tableau_synthese[$idRdv]['prenomClient'] = $item->prenomClient;

	//Recherche des prestations
    $prestations = $this->Prestations_m->get_la_prestation($idRdv);
    foreach ($prestations as $presta) {
    	$tableau_synthese[$idRdv]['prestations'][$presta->idPrestation] = $presta;
    }
}

Ensuite niveau de l'affichage, tu devras juste réutiliser un foreach pour afficher toutes les prestations sur un même idRdv
Bonjour,

Je garde quand meme au cas ou la requete sql ^^

merci pour la tableau le print_r dans mon controleur donne ça:

Array
(
    [2] => Array
        (
            [nomClient] => DAVID
            [prenomClient] => camille
            [prestations] => Array
                (
                    [10] => stdClass Object
                        (
                            [idPrestation] => 10
                            [idRdv] => 2
                            [libellePrestation] => COUPE Offerte
                            [descriptionPrestation] => 
                            [idCategPresta] => 2
                        )

                    [12] => stdClass Object
                        (
                            [idPrestation] => 12
                            [idRdv] => 2
                            [libellePrestation] => SOIN Perruque
                            [descriptionPrestation] => 
                            [idCategPresta] => 2
                        )

                )

        )

    [3] => Array
        (
            [nomClient] => DAVID
            [prenomClient] => camille
            [prestations] => Array
                (
                    [11] => stdClass Object
                        (
                            [idPrestation] => 11
                            [idRdv] => 3
                            [libellePrestation] => POSE Perruque
                            [descriptionPrestation] =>   Agrément Sécurité Sociale
                            [idCategPresta] => 2
                        )

                )

        )

)


je teste pour la boucle dans ma vue :


		<div class="row">
			<!--RDV malade-->

            <?php foreach($rdvMalade as $item) {?>
		
            <div class="col-md-6">
                <div class="produits" style="border: 2px solid black;">
                    
                    <h3 >n°<?php echo $item->idRdv;?> - <?php echo $item->nomClient;?> <?php echo $item->prenomClient;?> </h3>
                    <div>
                        Description Prestation:
                        <?php
			
							foreach ($item as $ar) {
								echo $ar[$item->idRdv]['idPrestation'];
								echo $ar[$item->idRdv]['libellePrestation'];
								echo $ar[$item->idRdv]['descriptionPrestation'];
							}
                            
                                    
                        ?>
                        <br/>
                        <br/>
                        Date RDV  : <?php echo $item->dateRdv;?>
                        <br/>
                        Heure Debut RDV: <?php echo $item->heureDebutRdv;?>
                    </div>
					<div class="atc">
                        <a href="<?php echo base_url('index.php/Rdv_c/valideRdv/'.$item->idRdv); ?>" class="btn btn-success">
                            Valider le RDV
                        </a>
						
                    </div>
					<?php
						
					?>
				</div>
                <!-- Fin produits-->
				<br/>
            </div>
            <!-- Fin col-md-6-->
            <!-- FIN RDV malade -->
            <?php } ?>
		</div>
		<!-- Fin row -->


Dans code igniter quand on passe un tableau du controleur à la vue on le passe comme ceci :
$this->load->view('espaceMembre/admin/listeRdvAdmin_v', $data, $tableau_synthese);


la variable $data regroupe plusieurs chose:

$data["title"] = "J'OZE - Administration";
$data["nomPage"] = "rdvs";
$data['valideRdv'] = " ";
$data['rdvMalade'] = $this->Rdv_m->get_rdv_malade () ;


mais dans la vue on ne peut pas utiliser

foreach ($data['rdvMalade'] as $item)...


mais ceci
$rdvMalade as $item


du coup le code du tableau synthèse marche super bien dans le contrôleur vu que on a
$tableau_synthese[$idRdv]['prestations']


mais dans la vu je galère parce que je sais pas comment utilise le foreach avec un double tableau sans utiliser $tableau_synthese[$idRdv]['prestations'],
j'ai test ceci :

foreach($rdvMalade as $item) {?>
		
<div class="col-md-6">
    <div class="produits" style="border: 2px solid black;">
        
        <h3 >n°<?php echo $item->idRdv;?> - <?php echo $item->nomClient;?> <?php echo $item->prenomClient;?> </h3>
        <div>
            Description Prestation:
            <?php

                foreach ($item as $ar) {
                    echo $ar[$item->idRdv]['idPrestation'];
                    echo $ar[$item->idRdv]['libellePrestation'];
                    echo $ar[$item->idRdv]['descriptionPrestation'];
                }
                
                        
            ?>
            <br/>
            <br/>
            Date RDV  : <?php echo $item->dateRdv;?>
            <br/>
            Heure Debut RDV: <?php echo $item->heureDebutRdv;?>
        </div>
        <div class="atc">
            <a href="<?php echo base_url('index.php/Rdv_c/valideRdv/'.$item->idRdv); ?>" class="btn btn-success">
                Valider le RDV
            </a>
            
        </div>
        <?php
            
        ?>
    </div>
    <!-- Fin produits-->
    <br/>
</div>
<!-- Fin col-md-6-->
<!-- FIN RDV malade -->
<?php } ?>


mais il me met un erreur :
Uninitialized string offset: 2
et
 Illegal string offset 'idPrestation'


aurai tu une piste ou une idée ?
Re,
Dans ta vue, tu est obligé d'utiliser "foreach($rdvMalade as $item)" ? Parce que si tu pouvais utiliser directement $tableau_synthèse tous les problèmes seraient réglés^^

<?php
foreach($tableau_synthese as $idRdv => $item) {?>
		
<div class="col-md-6">
    <div class="produits" style="border: 2px solid black;">
        
        <h3 ><?= 'n° '.$idRdv.' - '.$item['nomClient'].' '.$item['prenomClient'] ?></h3>
        <div>
            Description Prestation:
            <?php

                foreach ($item['prestations'] as $ar) {
                    echo $ar->idPrestation.'<br/>';
                    echo $ar->libellePrestation.'<br/>';
                    echo $ar->descriptionPrestation.'<br/>';
                }
                
                        
            ?>
            <br/>
            <br/>
            Date RDV  : <?php echo $item['dateRdv'];?>
            <br/>
            Heure Debut RDV: <?php echo $item['heureDebutRdv'];?>
        </div>
        <div class="atc">
            <a href="<?php echo base_url('index.php/Rdv_c/valideRdv/'.$idRdv); ?>" class="btn btn-success">
                Valider le RDV
            </a>
            
        </div>
        <?php
            
        ?>
    </div>
    <!-- Fin produits-->
    <br/>
</div>
<!-- Fin col-md-6-->
<!-- FIN RDV malade -->
<?php } ?>

Bon faut juste modifier ton php au départ pour inclure dateRdv et heureDebutRdv à $tableau_synthese
D'ailleurs dans ton php, si tu n'as pas besoin de toutes les infos de l'objet Prestation, tu peux inclure juste ce dont tu as besoin sous forme de tableau

  <?php
     $prestations = $this->Prestations_m->get_la_prestation($idRdv);
    foreach ($prestations as $presta) {
        //Ce que tu as aujourd'hui :
        //$tableau_synthese[$idRdv]['prestations'][$presta->idPrestation] = $presta;

        //Ce que tu peux faire:
        $tableau_synthese[$idRdv]['prestations'][$presta->idPrestation]['libellePrestation'] = $presta->libellePrestation;
        $tableau_synthese[$idRdv]['prestations'][$presta->idPrestation]['descriptionPrestation'] = $presta->descriptionPrestation;

    }

Et du coup dans ta vue:

            <div>
            Description Prestation:
            <?php

                foreach ($item['prestations'] as $cle => $ar) {
                    echo $cle.'<br/>';
                    echo $ar['libellePrestation'].'<br/>';
                    echo $ar['descriptionPrestation'].'<br/>';
                }
                
                        
            ?>
oui je suis obligée sinon il me met
Undefined variable: tableau_synthese


j'avais essayer de faire ce que je fais dans le contrôleur dans la vue mais code igniter râle quand je fais appel au modèle dans la vue
Ha mince! Et tu peux pas passer tableau_synthese dans la vue comme tu avais fait avec rdvMalade avec genre $data['tableau_synthese'] ?
Désolé je connais pas du tout code igniter du coup là je sèche^^
Bonsoir,

ça marche super bien ! c'est vrai que j'avais pas pensé a mettre $tableau_synthese dans un $data

voici ce que j'ai fais dans le controleur

$tableau_synthese = array();
        $data['rdvMalade'] = $this->Rdv_m->get_rdv_malade () ;
        foreach($data['rdvMalade'] as $item){
            $idRdv = $item->idRdv;

            //Saisie des infos liées au malade
            $tableau_synthese[$idRdv]['nomClient'] = $item->nomClient;
            $tableau_synthese[$idRdv]['prenomClient'] = $item->prenomClient;
            $tableau_synthese[$idRdv]['dateRdv'] = $item->dateRdv;
            $tableau_synthese[$idRdv]['heureDebutRdv'] = $item->heureDebutRdv;

            //Recherche des prestations
            $prestations = $this->Prestations_m->get_la_prestation($idRdv);
            foreach ($prestations as $presta) {
                $tableau_synthese[$idRdv]['prestations'][$presta->idPrestation] = $presta;
            }
        }
        $data['tableau_synthese'] = $tableau_synthese;

j'ai rajouter la date Rdv et l'heure

j'ai plus qu'a faire de même avec les Rdv normaux ^^ merci beaucoup pour ton aide
upload/1567447345-65800-capture6.png
Ha super! Heureux d'avoir pu t'aider! Smiley biggrin
Merci de mettre le sujet en résolu Smiley smile
Modifié par Mathieu8337 (02 Sep 2019 - 21:41)