Nasıl MySQL veri ile listeler açılan seçilen değerini doldurmak?

8 Cevap php

Ben sql veritabanı tarafından doldurulur form girdilerin değerleri gerekir. Benim kod tüm metin ve textarea girişler için harika çalışıyor ama ben listeleri, örneğin aşağı düşmesi veritabanı değeri atamak için nasıl anlamaya olamaz. Aşağıda 'mülkiyet' Tip. Bu etrafında veritabanında tutulan değerini göstermek için 'Seçili seçeneğini' alma döner.

İşte benim kod:

$result = $db->sql_query("SELECT * FROM ".$prefix."_users WHERE userid='$userid'");    
$row = $db->sql_fetchrow($result);

echo "<center><font class=\"title\">"._CHANGE_MY_INFORMATION."</font></center><br>\n";
echo "<center>".All." ".fields." ".must." ".be." ".filled."  
<form name=\"EditMyInfoForm\" method=\"POST\" action=\"users.php\" enctype=\"multipart/form-data\">           
  <table align=\"center\" border=\"0\" width=\"720\" id=\"table1\" cellpadding=\"2\" bordercolor=\"#C0C0C0\">        
    <tr>                
      <td align=\"right\">".Telephone." :</td>                
      <td>
        <input type=\"text\" name=\"telephone\" size=\"27\" value=\"$row[telephone]\"> Inc. dialing codes
      </td>        
    </tr>        
    <tr>                
      <td align=\"right\">".Type." ".of." ".property." ".required." :</td>                                          
      <td>Select from list:
        <select name=\"req_type\" value=\"$row[req_type]\">                   
          <option>House</option>                  
          <option>Bungalow</option>                  
          <option>Flat/Apartment</option>                  
          <option>Studio</option>                  
          <option>Villa</option>                  
          <option>Any</option>                  
         </select>  
       </td>          
      </tr>
....

8 Cevap

Geçerli kodu kullanarak:

<?php
  $options = array('House', 'Bungalow', 'Flat/Apartment', 'Studio', 'Villa', 'Any');

  foreach($options as $option) {
    if ($option == $row['req_type']) {
      print '<option selected="selected">'.$option.'</option>'."\n";
    } else {
      print '<option>'.$option.'</option>'."\n";
    }
  }
?>

$row['req_type'] $options değerlerden biridir varsayarak. i şiddetle dizi elemanları (alıntı önermek yani $row['req_type'] yerine $row[req_type]. ikinci yöntem error_reporting(E_ALL) altında hataları oluşturur ve

Ayrıca böyle phpbuilder.com gibi kaynaklara bakmak isteyebilirsiniz. bazı makaleler oldukça eski, ama daha iyi kodunuzu yapısı nasıl bazı temel sağlayacaktır. (Örneğin, bu sitaution içinde PHP kodu woulud yardım readiability bir sürü sizin HTML ayıran).

edit: Yorumlar başı olarak, görüntülenen herhangi bir bilgi (htmlentities() bakınız örneğin) doğru kaçtı edilmelidir.

Nigel

Yanındaki onay işareti ile cevaba bakınız. O benim sorunu çözme başlıyorum. Önce tablosundan benim veri seçin, sonra ben benim açılır menüden ekranı istediğiniz verileri seçin. Birincil tablodaki verileri seçilen açılan tablodan verileri eşleşirse yankılandı.

$query9 = "SELECT *
       FROM vehicles
       WHERE VID = '".$VID."'
       ";

$result9=mysql_query($query9);
while($row9 = mysql_fetch_array($result9)){
    $vdate=$row9['DateBid'];
    $vmodelid=$row9['ModelID'];
    $vMileage=$row9['Mileage'];
    $vHighBid=$row9['HighBid'];
    $vPurchased=$row9['Purchased'];
    $vDamage=$row9['Damage'];
    $vNotes=$row9['Notes'];
    $vKBBH=$row9['KBBH'];
    $vKBBM=$row9['KBBM'];
    $vKBBL=$row9['KBBL'];
    $vKBBR=$row9['KBBR'];
    $vYID=$row9['YID'];
    $vMID=$row9['MID'];
    $vModelID=$row9['ModelID'];
    $vELID=$row9['ELID'];
    $vECID=$row9['ECID'];
    $vEFID=$row9['EFID'];
    $vColorID=$row9['ColorID'];
    $vRID=$row9['RID'];
    $vFID=$row9['FID'];
    $vDID=$row9['DID'];
    $vTID=$row9['TID'];
}

$query1 = "SELECT * FROM year ORDER BY Year ASC";
$result1=mysql_query($query1);
echo "<select  name='Year'>";
while($row1 = mysql_fetch_array($result1)){
    echo "<option value = '{$row1['YID']}'";
    if ($vYID == $row1['YID'])
        echo "selected = 'selected'";
    echo ">{$row1['Year']}</option>";
}
echo "</select>";

Verimli olabilir, ama basit & değil miyim iş bitmiş olur.

$dropdown = str_replace("<option value=\"".$row[column]."\">","<option value=\"".$row[column]."\" selected>",$dropdown);

Teşekkürler Owen. Sizin kod mükemmel görünüyor ama php hataları sürü verdi. Ben bu basitleştirilmiş ama sadece seçenek olarak boşluk olsun:

<td>Select from list: <select name=\"req_type\">    	

$option = array('House', 'Bungalow', 'Flat/Apartment', 'Studio', 'Villa', 'Any');

foreach($option as $option) {  
if ($option == $row[req_type]) {    
    <option selected>$option</option>} 
else {    
<option>$option</option>}};
</select></td>
        <?php
            $result = $db->sql_query("SELECT * FROM ".$prefix."_users WHERE userid='$userid'");    
            $row = $db->sql_fetchrow($result);

            // options defined here
            $options = array('House', 'Bungalow', 'Flat/Apartment', 'Studio', 'Villa', 'Any');

       ?>     
            <center><font class="title"><?php echo _CHANGE_MY_INFORMATION; ?></font></center><br />

            <center> All fields must be filled </center> 
            <form name="EditMyInfoForm" method="POST" action="users.php" enctype="multipart/form-data">           
              <table align="center" border="0" width="720" id="table1" cellpadding="2" bordercolor="#C0C0C0">        
                <tr>                
                  <td align="right">Telephone :</td>                
                  <td>
                    <input type="text" name="telephone" size="27" value="<?php echo htmlentities($row['telephone']); ?>" /> Inc. dialing codes
                  </td>        
                </tr>        
                <tr>                
                  <td align="right">Type of property required :</td>                                          
                  <td>Select from list:
                    <select name="req_type">
                  <?php foreach($options as $option): ?>     
                      <option value="<?php echo $option; ?>" <?php if($row['req_type'] == $option) echo 'selected="selected"'; ?>><?php echo $option; ?></option>                  
                  <?php endforeach; ?>
                     </select>  
                   </td>          
                  </tr>

...

ayyy .. biraz çok uzakta taşıdı.

Daha önce kapalı: link text

Teşekkür için tüm senin yardım için herkes. Ben çalışmak için herhangi bir cevap alamadım rağmen bana fikir verdi ve ben işi başardık! Ben bu konuda uzun soluklu bir yol gidiş sona erdi ama eğer o değil hey-ho kırdı bunu düzeltmek yok.

if ($row[$req_type]=='House'){
    $sel_req_type1='selected';
}
else if ($row[$req_type]=='Bugalow'){
    $sel_req_type2='selected';
}

vs vs vs

Ve tabloda:

<option $sel_req_type1>House</option>
<option $sel_req_type2>Bulgalow</option>

vs vs vs

Ben hala metin alanları için yani htmlentitiesi aşmak ve yerine $row[req_type] dizisi öğeleri (yani $row['req_type'] alıntı başka sorunları var. Ama başka bir soru üzerine isteyeceğiz. Tekrar teşekkürler

İşte bu konuda giderek bir başka yoludur.

<?php
$query = "SELECT * FROM ".$prefix."_users WHERE userid='$userid'";
$result = mysql_query($query); ?>
$options = array('House', 'Bungalow', 'Flat/Apartment', 'Studio', 'Villa', 'Any');
<select name="venue">
<?php
    while($row = mysql_fetch_array($result)) {
    	print '<option value="'.$option.'"';
    	if($row['req_type'] == $option) {
    		print 'selected';
    	}
    	print '>'.$option.'</option>';
    } 
?>
</select>