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 :

[Tableaux] Requête dynamique et tableau dynamique de résultats


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [Tableaux] Requête dynamique et tableau dynamique de résultats
    Bonjour
    comme le mentionne le titre j'ai fait une page qui permet à l'utilisateur de faire des statistique sur certaines entré du systeme.
    Le tout ce fait dynamiquement c'est-à-dire la récupération des donnée, la requete à ma base mysql de meme que l'affichage des résultats dans un tableau selon les choix sélectionné

    En gros ca marche mais j'ai quelque question ladessus:
    1-J'ai des checkbox(4) ayant le meme nom et je me demandais comment conserver le fait qu'ils ont été coché ou nom. J'ai inscrit une solution mais je ne sais pas si c'est la bonne alors voici le code (d'un des checkbox) afin que vous me conseillez ou approuvez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="chkOpt[]"<? if(isset($_POST['chkOpt']) && in_array('dossierNum',$_POST['chkOpt'])){echo' checked';}?> value="dossierNum">Num&eacute;ro dossier
    2-Je fais afficher mes résultats dans une <table>, comme je ne sais pas comment de checkbox et lesquelles ont été coché, je ne sais pas trop comment mettre de colonne dans ce tableau. Or lorsque je parcours mon array de valeur de retour je fais une serie de if, else if...
    Présentement ca va bien j'ai seulement 4 checkbox, donc 4 if, else if...
    Ma question -> jusqu'a quel point c'est performant de faire cela avec des if, car il faut noter que je suis dans un while...devrais-je utiliser un switch pour qu'il alle directement à sa valeur et pas passer par toute les conditions?

    3-En rapport avec la question 2...est-ce pesant de mettre cette serie de if dans le while? Devrais-je mettre un for à la place? car je creer les nom des colonnes avec un for comme suit:
    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
     
    $posted = (isset($_POST['chkOpt'])) ? $_POST['chkOpt'] : array();
    $nbTD = count($posted);
    $tdWidth = 100/$nbTD;
    //...
    for($i=0;$i<$nbTD;$i++){
    	echo'
    		<td align="center"  width="'.$tdWidth.'%">
    			<b>'.$posted[$i].'</b>
    		</td>
    	';
    }
    echo'
    	</tr>
    ';
    Ensuite je fais le while mysql_fetch_array() et la serie de if est dans ce while... alors qu'est ce qui serait le mieux?

    Merci pour vos suggestions
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Pour la question 2
    j'ai fais des test d'execution de script et le temps d'execution est environ le meme soir 0.6 à 0.9 sec pour l'affichage de 8900 retour
    sauf que j'ai l'impression qu'a force de demander des requete ma page s'engourdie, comme si ca demeurait constament en mémoire...
    mais bon les requete s'affiche toujours avec le meme nom
    par contre et là ca devient intéressant, les images ne s'affiche plus aussi facilement (j'ai 1 calendrier dynamique en javascript) qui prends quelque secondes à s'afficher après que j'ai cliqué dessus...
    et je teste en local

    Si j'étais sur mon ordi perso je dirais que c'est probablement du à la machine et/ou au manque de mémoire, mais au bureau c'est pas le cas...

    Donc sans s'égarer, est-ce plus politiquement correct les condition if, elseif , (dans le while de lecture des valeurs de retour de ma bdd) ou le switch?
    merci
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    Salut,
    1. Peros, j'utilise jamais les noms de champs avec les crochets pour faire des tableaux. Mais ce que je fais revient au même je pense.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="chkOpt1"<? if(isset($_POST['chkOpt1'])) {echo' checked';}?> value="dossierNum">Num&eacute;ro dossier
    2.En fait, strictement un switch est moins performant que des if. Il faut quand même que le programme défile les différents case avant de tomber sur le bon (et c'est pour ça qu'on met des break en général, pour que l'exploration du switch ne continue pas après avoir trouvé une correspondance). On l'utilise souvent pour la clarté du code.

    3. Je saurais pas dire, mais un while peut permettre de sortir plus rapidement de la boucle.

  4. #4
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bonjour, merci pour tes réponses
    Citation Envoyé par jibouze
    Salut,
    1. Peros, j'utilise jamais les noms de champs avec les crochets pour faire des tableaux. Mais ce que je fais revient au même je pense.
    Oui c'est ce que je fais aussi
    mais bon avec des crochet ca permet de pas valider tous les champs manuellement, je garde seulement ceux qui ont été coché avec la copie de l'array de post
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $posted = (isset($_POST['chkOpt'])) ? $_POST['chkOpt'] : array();
    Je travaille par la suite à partir de la variable $posted pour faire afficher mes valeurs.
    Mon petit bout de code fonctionne bien, mais j'ai modifier un peu l'affichage des mes résultats, car il y avait un peut trop d'affichage graphique dans une page, j'envoie les résultats sur une autres page, donc je n'ai plus besoin de cette validation.

    Pour ce qui est des autres interrogation, je laisse le post ouvert car je développe actuellement cette page, il y a de forte chance que j'ai d'autre question portant sur ce dynamisme
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

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

Discussions similaires

  1. Tableau dynamique dans tableau
    Par pascale86 dans le forum Langage
    Réponses: 1
    Dernier message: 22/03/2012, 11h08
  2. Liste de choix dynamique dans tableau dynamique
    Par rvm31 dans le forum Langage
    Réponses: 4
    Dernier message: 13/05/2009, 17h14
  3. [MySQL] Requête MySQL et tableau dynamique
    Par JimZ81 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/11/2008, 14h05
  4. Réponses: 1
    Dernier message: 23/06/2006, 11h19
  5. [Tableaux] Tableau dynamique
    Par albo69 dans le forum Langage
    Réponses: 8
    Dernier message: 20/04/2006, 20h58

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