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

Langage PHP Discussion :

Récupérer des données issues d'une requête


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut Récupérer des données issues d'une requête
    Bonjour,

    Je souhaite récupérer mes données issues d'une BDD et les afficher dans un tableau HTML. Le problème c'est que mon tableau doit afficher les données en rowspan plus tard.

    Pour l'instant je faisait tout le traitement sur une seule page :

    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
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    $nligne = 0;
    $rowspan[0]=NULL;//Déclaration de rowspan pour ne pas avoir les notices
     
    $reponse = $bdd->prepare("SELECT * FROM cars ORDER BY Marque"); //On classe les résultats en fonction de la marque pour faciliter leur exploitation dans les boucles
    $reponse->execute();                        
     
    while($donnees = $reponse->fetch())
    {             
    	//Test pour voir si c'est une nouvelle marque
    	if($rowspan[0][0] == $donnees[0])//C'est la même marque que la ligne précédente
    	{             
    		array_push($rowspan,$donnees);//On met la nouvelle ligne à la fin du tableau
    	}
    	else//Si c'est une nouvelle marque
    	{
    		Insertion_tableau($rowspan,$nligne);
    		$nligne ++;
    		$rowspan = array($donnees); //On écrase data avec les données d'une nouvelle disso
    	}
    }
    Insertion_tableau($rowspan,$nligne); //On fait une insertion aprés la boucle pour la dérniére marque du tableau
    for($i=1 ; $i<=$NbPage ; $i++)
    {
    	echo " <a href=\"testmysql.php?p=$i\">$i</a> /";
    }             
     
    //*******************************************************************************************************************
    //Création tableau HTML
    function Insertion_tableau(&$rowspan, &$nligne)
    {
    	if($rowspan[0] != NULL)//Condition pour la 1ere ligne (sinon rajoute ligne vide au début du tableau à cause de ma condition au 1er tour de boucle au dessus)
    	{                                                            
    		$height = count($rowspan); //On prend le nombre d'enregistrements dans data(qui representent le nb de voiture d'une même marque) pour calculer le rowspan
    		if($height==1) // Si il y a une seule ligne
    		{
    			echo '<tr class="ligne_'.$nligne.'"> <td class="col_marque">'.$rowspan[0][0].'</td> <td>'.$rowspan[0][1].'</td> <td>'.$rowspan[0][2].'</td> <td>'.$rowspan[0][3].'</td> </tr>'; //On ne met pas de rowspan s'il ya une seule ligne  
    		}
    		else //Si il y a plusieurs ligne
    		{
    			echo '<tr class="ligne_'.$nligne.'"> <td class="col_marque" rowspan="'.$height.'">'.$rowspan[0][0].'</td> <td rowspan="'.$height.'">'.$rowspan[0][1].'</td> <td>'.$rowspan[0][2].'</td> <td>'.$data[0][3].'</td> </tr>'; //On place le rowpsan sur la 1ere ligne
     
    			for($i=1 ; $i<$height ; $i++) // On commence à 1 car la 1ere ligne a déjà été placé
    			{
    				echo '<tr class="ligne_'.$nligne.'"> <td>'.$rowspan[$i][2].'</td> <td>'.$rowspan[$i][3].'</td> </tr>';
    			}
    		}
    	}             
    }
    Maintenant je souhaiterais passer à un modèle MVC, il faudrait donc que j'envoie à mon controlleur, le tableau des données que j'ai récupéré avec mon modéle.
    C'est la que ma question se pose:

    Faudrait-il mieux envoyer un tableau simple et faire le traitement pour l'affichage en JS? Ou lors de la réception de la requête, je les place dans un tableau multidimensions comme j'ai fait jusqu'ici, sauf qu'au lieu de faire l'affichage à chaque changement de rowspan, je le met dans un array qui aura deja l'architecture de mon tableau HTML? Ou alors peut-être il y a-t-il une meilleurs solutions que celles la?

    Voila si quelqu'un sait éventuellement quelle technique est la plus "correct" OU si il y en a une autre bien entendu.

    Merci.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,

    (M)odel - (V)iew - (C)ontroller .

    La question ne se pose même pas, c'est ta vue qui doit se charger de la mise en page, le controller ne doit fournir que la données reçu du model.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Bonjour et merci pour votre réponse.

    J'ai bien compris que c'est la Vue qui doit se charger de la mise en page et de l'affichage, mais n'est-elle pas sensée ne faire que cela?

    Ma question portée sur le format au quel envoyer mes données et non pas sur le la mise en page à proprement parler.
    Peut-être que je n'ai pas compris votre réponse ou je me suis surement mal exprimé : Faut-il mieux tout mettre dans un tableau en faisant un [strong]fetch_array();[/strong] ou si il faut mieux directement faire le découpage de mon tableau à la réception de la requête?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Alors suivant votre outil/ORM

    Cela se décompose comme ceci :

    Model :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...
    public static fucntion maFunction(){
     
    $reponse = $bdd->prepare("SELECT * FROM cars ORDER BY Marque"); //On classe les résultats en fonction de la marque pour faciliter leur exploitation dans les boucles
    $reponse->execute();                        
     
    $donnees = $reponse->fetchAll(PDO::FETCH_OBJ)
     
    return $donnees
    }
    Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    public function index(){
     
    //recupère mes données
     
    $data = OBJET:: maFunction();
     
    //envoie vers la vue
     
    $this->set(['data'=>$data]);
    }
    Vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <table.....
     
    <?php foreach($data as $values): ?>
     
     
     
        <td><?= $value->maColonne; ?></td>
     
    <?php endforeach; ?>
    </table>

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    D'accord c'est plus clair.
    La couche Modéle ne doit faire aucun traitement seulement les envoyers au Controler qui lui les dirige vers la vue.

    Citation Envoyé par MaitrePylos Voir le message
    Alors suivant votre outil/ORM
    Je n'utilise pas d'ORM (est-ce une erreur?), quant à l'outils, est-ce que PDO en est un?

    Je vois que vous utilisez la POO, est-ce une obligation avec le modèle MVC? (par ce qu'il me semblait avoir lu quelque part que non) En fait je voudrait juste améliorer la lisibilité de mon code et le découpage de mon code et apprendre la POO plus tard).

    Merci bien pour votre explication.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Vaste débat que l'utilisation d'un ORM ou non

    Perso ceux que j'utilise sont vraiment spécialisé, tel que celui de CakePHP ou le Hoa\Database, Comme j'utilise particulièrement PostgreSQL, j'utilise POMM (qui n'est pas un ORM ).
    Sinon PDO est une couche d'abstraction aux méthode spécifique de PHP (la majorité des ORM's se repose dessus).

    Alors faire dU MVC sans faire de la Oo, n'as pas beaucoup de sens, surtout que cela va apporter découpage et simplicité.

    Tu devrais regarder des mini framework pour débuter cela apporte pas mal de confort tel que Slim, Silex ....il y en a pléthore.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Alors faire dU MVC sans faire de la Oo, n'as pas beaucoup de sens, surtout que cela va apporter découpage et simplicité.
    En fait je fais cela dans le cadre d'un petit projet, le problème c'est que j'ai donc des délai à respecter donc je ne pensais pas me lancer dans l'apprentissage de la POO (qui à l'air effrayent de ce que j'ai vu).
    Mais comme l'application est toute simple (un tableau HTML qui récupère les données issue de ma BDD, possibilité d'ajouter et de supprimer des données et export d'une sélection du tableau vers un fichier excel), je ne sais pas en fin de compte si la mise en place d'un modéle MVC et l'apprentissage de la POO est justifiée vu la taille du projet... Qu'en pensez-vous?

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Moi ? j'en pense rien !!!!!

    Mais vous et votre intelect, votre envie d'évoluer, d'apprendre, de bien coder...elle en pense quoi ?
    Cela dépend de votre chemin de vie....

    Et un petit projet est idéal pour apprendre....maintenant si votre deadline est proche.....

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Bien sûr si j'avais tout le temps, j'apprendrais la POO les architectures, .... Je le ferais même pas par la suite.
    Seulement le temps m'ai compté et je n'ose pas trop me lancer dans l'apprentissage maintenant car je ne sais pas combien de temps cela va me prendre avant de maîtriser ces methodes.
    En tout cas merci pour vos explications.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2015, 16h51
  2. Récupération des données issues d'une requête
    Par TeoSitran dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 29/04/2014, 09h36
  3. [PHP 5.3] Récupérer des données issues d'une requête http GET
    Par Pierrea4564 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2013, 08h15
  4. [FPDF] Mettre des données issues d'une requête dans l'entête
    Par zoom61 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 30/03/2007, 10h10
  5. [MySQL] Remplir un array() avec des données issues d'une bdd
    Par fichtre! dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/12/2006, 17h03

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