Page 1 sur 1

Script PHP pour zone de liste

Posté : 09 janv. 2015, 10:29
par Alexis06210
Bonjour,

Pour la petite histoire, j'ai réussi a modifier une fonction PHP qui génere un fichier texte appellé par une zone de liste.

Code original :
foreach ($listeunique as $valeur)
{
 $a_ecrire = "<option value=\"".$valeur."\">";
 $a_ecrire.= htmlspecialchars($valeur)." ";
 $a_ecrire.= "</option>";
 fwrite($ouverture, $a_ecrire, 4096);
}
fclose($ouverture);
unset($ouverture, $a_ecrire);
Code amélioré (ajout de optgroup automatique avec remplacement de texte (tout ce qui y a avant '/' devient un <optgroup>)
$prev = '!empty';
$first = true;

foreach ($listeunique as $valeur) {
    $a_ecrire = '';
    $tmp = explode('/',$valeur);
    if(isset($tmp[1])) {
        if($prev != $tmp[0]) {
            if($prev != '!empty') {
                $a_ecrire.= "</optgroup>";
            }
            $a_ecrire.= "<optgroup label=\"".$tmp[0]."\">";
            $prev = $tmp[0];
        }
        $a_ecrire.= "<option value=\"".$valeur."\">";
        $a_ecrire.= htmlspecialchars($tmp[1])." ";
    } else {
        $prev = '!empty';
        if(!$first) $a_ecrire.= "</optgroup>";
        $a_ecrire.= "<option value=\"".$valeur."\">";
        $a_ecrire.= htmlspecialchars($valeur)." ";
    }
    $a_ecrire.= "</option>";
    $first = false;
    fwrite($ouverture, $a_ecrire, 4096);
}
fclose($ouverture);
unset($ouverture);
Celle-ci fonctionne bien maintenant.

Je doit cependant effectué la même opération sur une autre zone de liste, qui cette fois-ci n'appelle aucun fichier texte mais extrait des données en live.

Voici le code original:
function listtypes($arrayname,$arrayverif, $texteval0)
{
 global $listetypearray, $bdd, $link;

 $xval = "<select name=\"".$arrayname."\">";
 $xval .= "<option value=''"; if ($arrayverif == '') {$xval .= " selected=\"selected\"";}
 $xval .= ">* $texteval0 *</option>";
 asort($listetypearray);

 //affichage
 foreach($listetypearray as $indice => $valeur)
 {
  $xval .= "<option value=\"".$indice."\"";
  if ($arrayverif == $indice) {$xval .= " selected=\"selected\"";}
  $xval .= "> ".$valeur." ";
  $xval .= "</option>";
 }
 $xval .= "</select>";
 
 return $xval;
}
Sur la base du deuxième code, je doit affiché cette zone de liste avec des <optgroup> à la place de tout ce qu'il y a avant des ']' cette fois ci.

Une âme experte et charitable ?