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 :

Créer une boucle un peu bizarre.


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut Créer une boucle un peu bizarre.
    Bonjour,

    Voila mon souci :
    Je dois créer une boucle qui prends des valeurs un peu étranges.
    Je dois avoir une valeur alphanumérique dans une variable qui est incrémentée alphabétiquement et numériquement mais pas de manière "linéaire".
    Bon pour être claire voici à quoi devraient ressembler les valeurs de cette variable à chaque incrémentation :

    A1 - A2 - A3 - A4 - B1 - B2 - B3 - B4 - C1 - C2 - C3 - C4 - etc...

    Remarquez je ne suis pas sur que ce soit le plus efficace pour ce que je veux faire mais je suis un peu perplexe.
    Pour que vous sachiez tout, mon problème (abordé dans un autre sujet) est que je dois lire un fichier Excel.
    Pour ce faire j'ai vu qu'il existait "$ligne=$worksheet->getCell('B2')->getCalculatedValue();" qui me permet de mettre le contenu de la ligne B2 dans la variable $ligne.
    Seulement voila, je dois lire les 4 cellules qui composent chaque ligne et les stocker dans 4 variables différentes, puis je dois exécuter un petit code HTML qui exploite ces 4 variables.
    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     echo
      <<<HTML
    <p>
    <img src="{$ligne[1]}" align=left hspace=12>
    <span style='text-align: left; font-size: 24px; line-height:30px;'>{$ligne[2]}</span>
    </BR>
    <span style='text-align: left; font-size: 16px; line-height:22px;'>{$ligne[3]}</span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:22px;'>Réservation : <a href="{$ligne[4]}" target="_blank">Site internet - </a> <a href="{$ligne[5]}">Par e-mail </a>                                                                                                   </span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:22px;'>Numéro de téléphone : {$ligne[6]}</span>                                                                                                         </span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:1px;'>------------------------------------------------------------------</p>
    HTML;
    , ensuite je passe à la ligne suivante de mon fichier Excel.

    J'ai l'impression que mon approche est un peu nulle vu que j'ai un tableau et que en quelque sorte j'en refait un...

    Si quelqu'un a une idée

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux désigner une cellule par numéro de ligne et colonne :
    getCellByColumnAndRow(numéro_colonne, numéro_ligne)

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 028
    Points : 308
    Points
    308
    Par défaut
    Merci en effet ça ma beaucoup aidé et je suis arrivé à quelque chose qui fonctionne.
    Bon ça fonctionne mais je pense que ce n'est pas très propre.
    Il y a des parties que je ne maitrise pas, en particulier le concept de Foreach.
    Le souci étant d'exécuter la boucle qui passe les lignes jusqu'a avoir lu toutes les lignes...

    Je mets mon code ici, svp ne vous moquez pas mais par contre si vous pouvez me dire quelles sont mes erreurs et m'aider à comprendre comment mieux faire ce serait cool :-).

    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
    <?php
    /** Charger la bibliothèque **/ 
    set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/');
    include 'PHPExcel/IOFactory.php';
     
    /** définir le fichier à examiner*/ 
    $inputFileName = './sampleData/example1.xls';
    /** On "charge le fichier excel*/
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
    /** ici je crois comprendre qu'on dit que c'est la feuille 0 du fichier excell qu'on va utiliser*/
    $worksheet=$objPHPExcel->getSheet(0);
    /** je met à zero la variable qui va compter les lignes*/
    $i=0;
     
    /**Je ne comprends pas trop comment marchent ces foreach*/
    foreach ($worksheet->getRowIterator() as $row) {
    	$cellIterator = $row->getCellIterator();	
    	foreach ($cellIterator as $cell) {
     
    /** Ici je met dans les différentes variables le contenu de la cellule concernée pour la ligne en cours*/
    												$affiche    =$worksheet->getCellByColumnAndRow($i,'1')->getCalculatedValue();
    												$lieu       =$worksheet->getCellByColumnAndRow($i,'2')->getCalculatedValue();
    												$date       =$worksheet->getCellByColumnAndRow($i,'3')->getCalculatedValue();
    												$site       =$worksheet->getCellByColumnAndRow($i,'4')->getCalculatedValue();
    												$mail       =$worksheet->getCellByColumnAndRow($i,'5')->getCalculatedValue();
    												$telephone  =$worksheet->getCellByColumnAndRow($i,'6')->getCalculatedValue();
     
    /**On va exploiter les différentes variables dans du code HTML pour afficher ce qu'il faut comme il faut*/												
    echo  <<<HTML
    <p>
    <img src="{$affiche}" align=left hspace=12>
    <span style='text-align: left; font-size: 24px; line-height:30px;'>{$lieu}</span>
    </BR>
    <span style='text-align: left; font-size: 16px; line-height:22px;'>{$date}</span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:22px;'>Réservation : <a href="{$site}" target="_blank">Site internet - </a> <a href="{$mail}">Par e-mail </a>                                                                                                   </span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:22px;'>Numéro de téléphone : {$telephone}</span>                                                                                                         </span>
    </BR>
    <span style='text-align: left; font-size: 14px; line-height:1px;'>------------------------------------------------------------------</p>
    HTML;
     
    /** on ajoute 1 à la valeur de $i pour passer à la ligne suivante*/								
    $i++;	
    	}
    }
    ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as seulement ta boucle cellIterator qui n'est pas utilisée.
    Cette boucle n'est pas utile puisque tu veux specifiquement recuperer les colonne 1->4 de chaque ligne
    Tu peux également obtenir le numero de ligne plutôt que de l'incrementer manuellement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($worksheet->getRowIterator() as $row) {
       $i = $row->getRowIndex();
       $affiche = $worksheet->getCellByColumnAndRow($i,'1')->getCalculatedValue();

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

Discussions similaires

  1. [XSLT] Comment créer une boucle
    Par Kefass dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 28/02/2007, 22h57
  2. Une question un peu bizarre
    Par krapoulos2006 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 19/12/2006, 00h16
  3. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 16h48
  4. Comment créer une boucle ?
    Par kikica dans le forum Langage
    Réponses: 5
    Dernier message: 15/03/2006, 22h02
  5. [XSLT]créer une boucle
    Par fraoustin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 11/01/2005, 15h13

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