Bonjour,

dans un projet, je réalise plusieurs formulaire avec la même structure.
J'ai effectué plusieurs fonction pour eviter de recopier plusieurs foi le même code seulement je plante sur le select

<?php if($oc->societe_etude_id != null){?>
    <div class="form-group">
        <label for="societe_etude" class="col-sm-5 control-label">Sous-traitants :</label>
        <div class="col-sm-7 text-right">
          <select name="societe_etude" id="societe" class="form-control" size="1" />
              <option value="">Veuillez indiquer le sous-traitant...</option>
              <?php foreach($societe as $se):?>
                  <?php if($se->etude === 'oui'):?>
                      <option <?php if($se->id === $oc->societe_etude_id) echo 'selected';?> value="<?= $se->id; ?>"> <?= $se->societe; ?></option>
                  <?php endif;?>
              <?php endforeach;?>
          </select>
        </div>
      </div><!-- SOUS-TRAITANT -->
<?php }else{?>
  <div class="form-group">
    <label for="societe_etude" class="col-sm-5 control-label">Sous-traitants :</label>
    <div class="col-sm-7 text-right">
      <select name="societe_etude" id="societe" class="form-control" size="1" />
        <option value="" <?php if($s->id != $oc->societe_nego_id) echo 'selected';?>>Veuillez indiquer le sous-traitant...</option>
        <?php foreach($societe as $s):?>
          <?php if($s->etude === 'oui'):?>
            <option <?php if($s->id === $oc->societe_nego_id) echo 'selected';?> value="<?= $s->id; ?>"> <?= $s->societe; ?></option>
          <?php endif;?>
        <?php endforeach;?>
      </select>
    </div>
  </div><!-- SOUS-TRAITANT -->
<?php }?>

mes select ont toujours cette forme et je plante surtout sur la partie foreach

2 réponses


cid5420
Auteur
Réponse acceptée

En faite je cherchais a faire une fonction select que j'appel dans mon formulaire pour eviter d'avoir tout ce code.
A l'état actuel, j'ai ce code 2 voir 3x sur 10 pages (enfin avec des données différentes) donc j'aimerais faire de ce code un objet que j'appel.

J'ai passé pas mal de temps pour enfin trouver une solution à mon problème qui fonctionne et par la même occasion, j'ai réduit mon code départ.

public function libSelectType($name, $label, $data, $var, $type, $value)
    {
        $select = '
            <div class="form-group">
                <label for="'.$name.'" class="col-sm-5 control-label">'.$label.'</label>
            <div class="col-sm-7 text-right">
                <select name="'.$name.'" id="'.$name.'" class="form-control" size="1" />
                    <option value="">Choisir dans cette liste</option>
        ';
        foreach($data as $k){
            if( $k->$type === 'oui'){
                $select .= '
                    <option value="'.$k->id.'"
                ';
            }
            if($k->id === $var){
                $select .= ' selected';
            }
            $select .= '>'.$k->$value.'</option>';
        }
        $select .= '</select></div></div>';
        return $select;
    }

l'appel dans mon formulaire

<?= $form->libSelectType('societe_etude', 'Sous-traitants :', $societe, $oc->societe_etude_id, 'etude', 'societe');?>

J'ai pas bien compris. Quel est réellement ton problème ? Qu'est-ce que tu cherches à faire ? Et qu'est-ce qui plante ? Surtout, dans le code que tu proposes, il n'y pas de fonction englobante.