web-dev-qa-db-de.com

Zeigt die Feldwerte der MySQL-Tabellenfelder im Auswahlfeld an

Ich möchte die Mysql-Tabelle Abgelegte Werte in selectbox anzeigen. Ich habe versucht, den folgenden Code anzuzeigen: Normalerweise werden jedoch die angegebenen Feldwerte in der Echo-Funktion und nicht im Auswahlfeld angezeigt. Ich weiß nicht, wo ich mich irre.

 $con = mysql_connect("localhost","root","root");
 $db = mysql_select_db("Time_sheet",$con);
 $get=mysql_query("SELECT Emp_id FROM Employee");
 while($row = mysql_fetch_assoc($get))
{
echo ($row['Emp_id']."<br/>");
}

<html>
<body>
<form>
 <select> 
<option value = "<?php echo($row['Emp_id'])?>" ><?php echo($row['Emp_id']) ?></option>
</select>
</form>
</body>
</html>

Auch die Feldwerte müssen in aufsteigender Reihenfolge angezeigt werden. Wie erreichen Sie .. 

<?php
$con = mysql_connect("localhost","root","root");
 $db = mysql_select_db("Time_sheet",$con);
 $get=mysql_query("SELECT Emp_id FROM Employee ORDER BY Emp_id ASC");
$option = '';
 while($row = mysql_fetch_assoc($get))
{
  $option .= '<option value = "'.$row['Emp_id'].'">'.$row['Emp_id'].'</option>';
}
?>
<html>
<body>
<form>
 <select> 
<?php echo $option; ?>
</select>
</form>
</body>
</html>

PS: Beenden Sie auf eine Randbemerkung die mysql_*-Funktionen. Schauen Sie sich die Gründe dafür an this thread.

15
asprin

Sie können es einfach so machen

$con = mysql_connect("localhost","root","root");
$db = mysql_select_db("Time_sheet",$con);
$get=mysql_query("SELECT Emp_id FROM Employee");

<html>
<body>
<form>
    <select> 
    <option value="0">Please Select</option>
        <?php
            while($row = mysql_fetch_assoc($get))
            {
            ?>
            <option value = "<?php echo($row['Emp_id'])?>" >
                <?php echo($row['Emp_id']) ?>
            </option>
            <?php
            }               
        ?>
    </select>
</form>
</body>
</html>
2
Muhammad Raheel

Sie müssen die while-Schleife verwenden, um die Option im Auswahlfeld anzuzeigen. Versuche dies ... 

 $con = mysql_connect("localhost","root","root");
 $db = mysql_select_db("Time_sheet",$con);
 $get=mysql_query("SELECT Emp_id FROM Employee order by Emp_id");

 <html>
 <body>
  <form>
    <select>
    <?php
     while($row = mysql_fetch_assoc($get))
     {
    ?>
      <option value="<?php echo $row['Emp_id']; ?>"><?php echo $row['Emp_id']; ?></option>
    <?php
     }
    ?>
    </select>
  </form>
 </body>
 </html>
0
Suhel Meman

Es gibt ein paar Tipps, die den Codeblock für diese Aufgabe verdichten - zu viele, um nur unter der akzeptierten Antwort zu kommentieren.

Getesteter Code:

if (!$con = new mysqli("localhost", "root", "root", "Time_sheet")) {
    echo "Database Connection Error: " , $con->connect_error;  // don't show actual error in "production" stage
} elseif (!$result = $con->query("SELECT Emp_id FROM Employee ORDER BY Emp_id")) {
    echo "Syntax Error: " , $con->error;  // don't show actual error in "production" stage
} else {
    echo "<select>";
    foreach ($result as $row) {
        echo "<option>{$row['Emp_id']}</option>";
    }
    echo "</select>";
}
  • Die if-Zeile deklariert sowohl $con als auch den Falsey-Rückgabewert in einem Schritt.
  • Stellen Sie den Benutzern niemals unbegründete Verbindungs- oder Abfragefehler zur Verfügung. Es ist in Ordnung während der Entwicklung, aber Sie möchten nicht, dass Fremde Zugriff auf kritische/informative Fehler haben, die Ihr Server bereitstellt. Dies ist eine grundlegende bewährte Methode für die Sicherheit.
  • Die elseif-Zeile deklariert sowohl $result als auch den Falsey-Rückgabewert in einem Schritt.
  • Der else-Block verarbeitet die null oder mehr Datenzeilen, die als Ergebnis der erfolgreichen SELECT-Abfrage generiert wurden.
  • Das Ergebnis von mysqli ist "traversable", dh Sie können es mit foreach() iterieren und haben direkten Zugriff auf die Zeilendaten über assoziative Schlüssel. PHP Manual ReferenceEin weiterer StackOverflow Post
  • Wenn Sie ein Array-Element durch Interpolation in eine Literal-Zeichenfolge schreiben, ist es (wenn auch nicht immer erforderlich) empfehlenswert, das Element in geschweifte Klammern zu setzen. Dies löst häufig hilfreiche Hervorhebungen in IDEs aus und stellt sicher, dass die Zeichen, die auf das Array folgen, nicht versehentlich mit dem Variablennamen selbst verbunden werden.
  • Sie müssen NUR ein value-Attribut in das <option>-Tag schreiben, wenn sich der Wert zwischen dem öffnenden und dem schließenden Tag (<option>the text in here</option>) vom Text unterscheidet. Formulareinreichungen und Javascript-Implementierungen funktionieren alle gleich, wenn Sie das redundante value-Attribut weglassen.
  • Wenn Sie im Auswahlfeld einen anderen Wert als den Text übergeben möchten, kann die Syntax wie folgt aussehen:

    echo "<option value=\"{$row['Emp_id']}\">{$row['Emp_name']}</option>";
    
  • Wenn Sie ein selected-Attribut in eine der Optionen schreiben möchten, die auf einer bereits vorhandenen Variablen (z. B. $selected_id) basiert, kann dies folgendermaßen aussehen:

    echo "<option" , ($row['Emp_id'] == $selected_id ? " selected" : "") , ">{$row['Emp_name']}</option>";
    
  • Wenn Sie die beiden vorherigen Prozesse kombinieren wollten, kann dies folgendermaßen aussehen:

    echo "<option value=\"{$row['Emp_id']}\"" , ($row['Emp_id'] == $selected_id ? " selected" : "") , ">{$row['Emp_name']}</option>";
    
0
mickmackusa
<?php
  $con = mysql_connect("localhost","root","root");
  $db = mysql_select_db("Time_sheet",$con);
  $get=mysql_query("SELECT Emp_id FROM Employee");
  ?>
 <html>
 <body>
    <form>
        <select> 
         <?php
             while($row = mysql_fetch_assoc($get)){?>
                <option value = "<?php echo($row['Emp_id'])?>" ></option>
                <?php } ?>
        </select>
    </form>
    </body>

0
<?php
 $con = mysql_connect("localhost","root","root");
 $db = mysql_select_db("Time_sheet",$con);
 $res=mysql_query("SELECT Emp_id FROM Employee");
?>

<html>
 <body>
  <form>
   <select>
    <?php
      while ($row = $res->fetch_assoc()) 
      {
        echo '<option value=" '.$row['id'].' "> '.$row['name'].' </option>';
      }
    ?>
    </select>
   <form>
  </body>
 </html>
0
rashedcs