2009-12-09 7 views
1

J'ai une variable php ($list) qui est une liste de valeurs séparées par des virgules. J'essaie de comprendre comment convertir ou entrer cette variable dans une balise de sélection HTML. Voici ce que j'ai jusqu'à présent:Entrée variable PHP en HTML Select Tag

$dbquery = @$db->query('SELECT * FROM Company'); 
while ($queryText = $dbquery->fetchArray()){ 
    $array[]=$queryText['Company_Name']; 
} 
//the next batch of code, which is not included, converts the $array[] into a variable named $list// 
//the values for $list are: Company1, Company2, Company3, Company4...// 

//HTML select tag// 
echo '<select name="testSelect" id="testId">'; 
echo '<option value="'.$list.'">'.$list; 
echo '</option></select>'; 

Je comprends que je aurais besoin d'une boucle comme un « tout » ou « pour » à la liste des valeurs dans la liste $, mais je ne suis pas sûr de la syntaxe exacte . Quelqu'un peut-il m'aider avec cela?

Merci,

DFM

Répondre

2

Vous devez explode() la liste dans un tableau (si vous ne pouvez pas utiliser $array directement pour une raison quelconque) puis faire:

$listArray = explode(', ', $list); 
echo '<select name="testSelect" id="testId">'; 
foreach ($listArray as $item) 
    echo '<option value="'.htmlspecialchars($item).'">'. htmlspecialchars($item) . "</option>\n"; 
echo '</select>'; 
+0

Bonjour Greg - Merci; exemple travaillé pe parfaitement. – DFM

3

Vous aurez besoin d'un élément option pour chaque élément de la liste (nom de l'entreprise).

<select name="testSelect" id="testId"> 
    <?php foreach ($array as $companyName): ?> 
     <option value="<?php echo $companyName; ?>"><?php echo $companyName; ?></option> 
    <?php endforeach; ?> 
</select> 
+0

Cela fait ce que vous cherchez, bien qu'il saute l'étape '$ list' (vous n'avez pas besoin de créer la variable' $ list' si vous ne l'utilisez pas ailleurs dans votre code.) –

0

Voir implode()

Vous pouvez simuler l'implosion() fonctionne avec une concaténation en boucle et en chaîne.

Par exemple:

$out = ''; 
$append = ', '; 

for($arr as $v) 
{ 
    $out .= $v.$append; 
} 

$out = substr($out, 0, (-1) * strlen($append)); 
0

Pourquoi vous convertir les tableau dans une liste séparée par des virgules, en premier lieu? Une fois que vous avez un tableau, vous pouvez le faire

foreach ($company in $list) { 
    echo '<option value="' . htmlspecialchars($company) . '">' . htmlspecialchars($company) . '</option>'; 
} 

pour afficher vos options. Si vous avez vraiment besoin d'une étape de liste séparée par des virgules, vous pouvez toujours utiliser explode (',', $ list) pour le convertir en tableau.

0

Vous pouvez utiliser quelque chose comme explode() pour mettre la liste des choses dans un tableau, puis boucle à travers cette .. quelque chose comme:

$myArray = explode(",", $list); 

echo "<select name=\"testSelect\" id=\"testId\">\n"; 
for($i = 0; $i < count($myArray); $i++) { 
    // add each option to select list.. 
    echo "<option>" . $myArray[$i] . "</option>\n"; 
} 
echo "</option>\n"; 

En savoir plus sur la fonction PHP explode():

http://www.php.net/manual/en/function.explode.php