Créer une fonction.

Résolu/Fermé
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 - Modifié par zerdg le 3/06/2015 à 12:34
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 - 4 juin 2015 à 11:47
Bonjour,
J'ai un code fonctionnel non fini mais qui fait le plus gros de ce que je veux.
Je souhaiterais l'alléger au possible. Je sais qu'on peut créer des fonctions. J'aimerais donc si c'est possible que vous m'aidiez à remplacer ceci:
 $ligne = 2;
                while($data = $req->fetch()){
                        $colonne=0;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['identifiant']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['code']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['sexe']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['age']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['composition']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_3ans']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_matpri']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_sec']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreTotalEnfants']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['modeGardeActuel']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['depose']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['organisation']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['choixModeGarde']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['employeur']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['raison']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['maniere']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesLundi']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMardi']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMercredi']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesJeudi']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesVendredi']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesLundiP']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMardiP']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMercrediP']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesJeudiP']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesVendrediP']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['attentes']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['estivale']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['residence']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['remarques']);$colonne++;
                        $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['dateHeure']);$colonne++;
                                                
                         
                        $ligne++;//ligne suivante                                       
                                                }

Par une fonction.
Merci d'avance pour votre aide.

4 réponses

blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
Modifié par blackduck le 3/06/2015 à 15:39
Salut,

Déjà si les valeurs du tableau $data sont biens ordonnées ce qui à l'air d'être le cas tu peux remplacer toutes ces lignes par

$ligne = 2;
while($data = $req->fetch()){
$colonne=0;
foreach($data as $value){
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $value);
$colonne++;
}
$ligne++;
}


Après pour en faire une fonction c'est assez simple mais je visualise pas très bien le comportement que tu veux lui donner, apparemment il y une requête avant, il serait peut être bien de tout englober. Que veux tu exactement dans ta fonction?
Résolu? ===> [RESOLU]
2
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 2
3 juin 2015 à 16:16
Oui il y a une requête avant je peux la poster si c'est ce que tu demande :

$sql = 'SELECT * FROM reponses where employeur = "oui, tout à fait"';
$req = $bdd->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$req ->execute();

J'ai aussi un souci avec ce que tu ma donné il me rempli le tableau mais me répète la même ligne et le contenu des colonnes sont doublé au lieu de m'afficher a b c d
il m'affiche a a b b c c d d.
Mon code faisant + de 1400 lignes je voulais simplement avoir de quoi diminuer sa taille j'ai donc pensé aux fonctions mais je ne savais pas par quoi commencer je pensais en faire une qui me fasse et remplisse un tableau. Donc ce que fait le while mais dans une fonction.
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
3 juin 2015 à 16:58
Je serais tenté de te dire de faire ce qui te semble le plus naturel et compréhensible. Par exemple histoire de compartimenter le code j'aurais fait une fonction responsable de me renvoyer un tableau avec les donnée souhaitées. Par exemple getEmplOui() qui retourne le résultat de ta requête dans un array, puis dans un second temps un fonction MakeTabHtml($array) qui te retourne un string avec la mise en forme html que tu souhaites.

C'est étrange que ça double en bdd car je n'est fais qu'une boucle sur le tableau ^$datas. Si tu fais un var_dump de ton tableau tu es sûr que rien n'est doublé à l'intérieur?
0
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 2
Modifié par zerdg le 3/06/2015 à 20:42
Non je n'ai aucune valeur en double j'ai vérifié deux fois (on sait jamais)
j'ai essayé de biduler la boucle mais j'ai pas réussis à la rentre utilisable
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
Modifié par blackduck le 4/06/2015 à 10:11
Remplace ton fetch() par fetch(PDO::FETCH_ASSOC) et regarde si ça double toujours
0
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 2
4 juin 2015 à 11:17
Non ça ne double plus merci.
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
4 juin 2015 à 11:23
Finalement tu as séparé ton code en fonction ou non?
0
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 2
4 juin 2015 à 11:31
Je souhaitais juste une méthode qui me permette d'alléger ce code le fait d'utiliser une fonction m'était venu en premier mais utiliser une boucle foreach me convient tout au si bien. De plus je ne suis pas tout à fait au point niveau classe/fonction.
Merci encore d'avoir pris le temps de me répondre.
0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
4 juin 2015 à 11:44
Ok ben si tu veux faire un petit chantier pour faire des classes et des méthodes hésite pas à poster un nouveau sujet.

Si tu peux mettre ce poste la en "résolu" c'est cool ;)

Bon courage pour la suite
0
zerdg Messages postés 86 Date d'inscription jeudi 21 mai 2015 Statut Membre Dernière intervention 30 novembre 2017 2
4 juin 2015 à 11:47
Encore merci
0