aşağı php çoklu seçim damla

3 Cevap php

burada benim mysql ve php kod düzeni:

Ben 3 tablolar var

  • tableA mağazalar benzersiz "bir kişi" bilgi
  • TABLEB mağazalar benzersiz "yerler" bilgi
  • Onlar "beenTo" sahip bir kişi ve yerler hakkında TableC mağazalar değil, eşsiz bilgiler.

here is how i layed out my form: -one big form to insert into "person" tableA; "beenTo" tableC in the form, a person mulitple selects "places" which get inserted into "beenTo"

ben nasıl ben kullanıcının zaten benim çoklu seçim seçenekleri görünmesi için açılır menüsünden seçilen ne görüntülerim bir "kişi" düzenlerken olduğumda benim soru nedir?

an sorguda "yerler" masa ve menü aşağı bir çoklu seçim damla görüntüler onu menüsünün aşağı benim damla. onun kolay bir kişinin beenTo bir yere sahip olduğunda birden "beenTo" yerler olduğunda, sorun arrises?

3 Cevap

Bunun beenTo varsa Foreach seçeneği kontrol edin. Doğruysa ardından etiketi seçilen = "Seçili" özniteliğini ekleyin.

Örnek:

<select multiple="multiple">
    <option selected="selected">Rome</option>
    <option>France</option>
    <option selected="selected">Underpants</option>
</select>

Ve PHP bu gibi görünebilir:

$beenTo = array("Rome","Underpants");
$places = array("Rome","France","Underpants");
?> <select multiple="multiple"> <?php
foreach($places as $place) {
    echo "<option";
    $found = false;
    foreach($beenTo as $placeBeenTo) {
        if ($placeBeenTo == $place) {
            $found == true;
            echo " selected=\"selected\">";
            break;
        }
    }
    if (!$found) echo ">";
    echo $place . "</option>";
}
?> </select> <?php

Bunu yapmak için çok daha verimli bir şekilde muhtemelen vardır.

Açıklama için, birden fazla seçilen seçenek düzgün çalışması için olanak sağlayan seçme etiketi için bir isim özniteliği yapmak isteyecektir.

<form method="post" action="">
<select name="places[]" multiple="multiple">
<?php
$_POST += array('places' => array());
$places = array('fr' => 'France', 'cn' => 'China', 'jp' => 'Japan');
$beenTo = array_flip($_POST['places']);
foreach ($places as $place => $place_label) {
  $selected = isset($beenTo[$place]) ? ' selected="selected"' : '';
  echo '<option value="' . $place . '"' . $selected . '>' . $place_label . '</option>';
}
?>
</select>
<input type="submit" value="Save Changes" />
</form>
<option id = 'example' <? if ($_POST['example']) echo 'selected' ?>>

Ama aşırı predjudice ile $ _POST dizi .. edit, geçmiş ziyaretleri saklamak için $ _SERVER ['kurabiye'] veya diğer önbelleği değil kullanarak olacak