2 Stimmen

Wie kann ich den ausgewählten Wert von Dropdown-Listen mit Mysql-Daten füllen?

Ich benötige die Werte der Formulareingaben, die von der SQL-Datenbank ausgefüllt werden sollen. Mein Code funktioniert großartig für alle Text- und Textarea-Eingaben, aber ich kann nicht herausfinden, wie man den Datenbankwert den Dropdown-Listen zuweist, z. B. "Art der Eigenschaft" unten. Es dreht sich darum, die "Option ausgewählt", um den Wert in der Datenbank zu vertreten.

Hier ist mein Code:

$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>
....

5voto

Owen Punkte 79611

Mit Ihrem aktuellen Code:

<?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";
    }
  }
?>

unter der Annahme, dass $row['req_type'] ist einer der Werte in $options . ich empfehle dringend, Ihre Array-Elemente zu zitieren (dh $row['req_type'] 代わりに $row[req_type] . die letztgenannte Methode erzeugt Fehler unter error_reporting(E_ALL)

Sie können sich auch mit Ressourcen wie phpbuilder.com . einige Artikel sind ziemlich veraltet, aber sie liefern Ihnen einige Grundlagen, wie Sie Ihren Code besser strukturieren können. (z.B. würde die Trennung von HTML- und PHP-Code die Lesbarkeit in dieser Situation erheblich verbessern).

bearbeiten : Wie in den Kommentaren erwähnt, sollten alle angezeigten Informationen korrekt escaped werden (siehe htmlentities() zum Beispiel).

1voto

BKCOHEN Punkte 114

Nigel,

Siehe die Antwort mit dem Häkchen daneben. Das ist ein guter Anfang für die Lösung meines Problems. Zuerst wähle ich meine Daten aus der Tabelle aus, dann wähle ich die Daten aus, die ich in meinem Dropdown-Menü anzeigen möchte. Wenn die Daten aus der primären Tabelle mit den Daten aus der ausgewählten Dropdown-Tabelle übereinstimmen, wird ein Echo ausgegeben.

$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>";

0voto

user24632 Punkte 157

Es mag nicht effizient sein, aber es ist einfach und erledigt die Aufgabe.

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

0voto

Danke, Owen. Ihr Code scheint perfekt, aber gab eine Menge von php Fehler. Ich vereinfachte es zu diesem aber nur Leerzeichen als Optionen erhalten:

<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>

0voto

andyk Punkte 9971
        <?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>

...

Ups ein bisschen zu weit hergeholt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X