Zur Navigation

HTML Formular mit Array-Werten füllen (MySQL, PHP)

1 Kokarde

Hallöchen

Diesmal komme ich mit einer PHP und MySQL Frage um die Ecke, in Verbindung mit einer HTML Datei (Formular).

Dateiname: test.html

Ziel der Datei: Auflistung des Inhaltes der Tabelle "hersteller" in einem Drop-Down-Menü

Tabellen-Zeilen: ID + HName

Im Moment sieht die Datei so aus und ich weiss leider nicht, wie ich das Drop-Down erstelle. Ich habe schon ein paar Lösungen ausprobiert, Google hat versucht zu helfen, aber es kam immer nur Müll als Ausgabe oder überhaupt nix.

Auch weiss ich nicht ob der Ansatz so korrekt ist, denn oft wird von einer foreach Schleife gesprochen.


<!DOCTYPE html>
<html>

    <head>
         <title>HERSTELLERLISTE</title>
 </head>
    <body>

<select name="hersteller_id">
    
        <?php

error_reporting(-1);    
ini_set('display_errors', TRUE);  
              

define ( 'MYSQL_HOST',      'localhost' );
define ( 'MYSQL_BENUTZER',  'xxxxx' );
define ( 'MYSQL_KENNWORT',  'xxxxxx' );
define ( 'MYSQL_DATENBANK', 'xxxxxxxxx' );
define ( 'MYSQL_TABELLE', 'hersteller' );

$db_link = mysqli_connect (
                     MYSQL_HOST, 
                     MYSQL_BENUTZER, 
                     MYSQL_KENNWORT, 
                     MYSQL_DATENBANK
                    );

$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
} 
          
$sql = "SELECT * FROM hersteller";
 
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}
      

while ($daten = mysqli_fetch_array( $db_erg, MYSQLI_ASSOC))

{
    
for ($i = 0; $i < $daten; $i++) 
                { 
                    echo "<option value=\"$i\">  [i]KEINE IDEE WAS HIER HIN SOLL[/i] </option>"; 
                } 
    
}

?>


</select>
        
        </body>
</html>

Ich danke schon mal vorab für jeden Tipp oder Lösungsansatz :)

Peace

Kai

06.07.2017 11:19 | geändert: 06.07.2017 11:30

2 Jörg Kruse

Eine foreach oder for Schleife benötigst du hier denke ich nicht, denn die Ergebnismenge wird ja bereits in der while Schleife durchlaufen. Im Array $daten sollte sich jeweils ein einzelner Datensatz befinden, wobei aufgrund des zweiten Arguments MYSQLI_ASSOC die Keys mit den Namen der Datenfelder identisch sein sollten.

while ($daten = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) {
    echo '<option value="' . $daten['ID'] . '">' . htmlspecialchars($daten['HName']) . '</option>';    
}

06.07.2017 12:52

3 Kokarde

Hi Jörg

Vielen Dank, die Datei sieht nun so aus, nachdem ich den Fehler mit der nicht zugewiesenen Variablen entfernt habe, scheinbar hatte ich da doppelt den $db_erg hinein kopiert.

Zudem muss die Datei natürlich nach .php umbenannt werden :)

Dein Tipp war die Lösung und es funktioniert nun wunderbar!

<!DOCTYPE html>
<html>

    <head>
         <title>HERSTELLERLISTE</title>
 </head>
    <body>

<select name="hersteller_id">
    
        <?php

error_reporting(-1);    
ini_set('display_errors', TRUE);  
              

define ( 'MYSQL_HOST',      'localhost' );
define ( 'MYSQL_BENUTZER',  'xxxxx' );
define ( 'MYSQL_KENNWORT',  'xxxxxx' );
define ( 'MYSQL_DATENBANK', 'xxxxxxxxx' );
define ( 'MYSQL_TABELLE', 'hersteller' );

$db_link = mysqli_connect (
                     MYSQL_HOST, 
                     MYSQL_BENUTZER, 
                     MYSQL_KENNWORT, 
                     MYSQL_DATENBANK
                    );
  
$sql = "SELECT * FROM hersteller";
 
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}
      

while ($daten = mysqli_fetch_array($db_erg, MYSQLI_ASSOC)) {
    echo '<option value="' . $daten['ID'] . '">' . htmlspecialchars($daten['HName']) . '</option>';    
}

?>


</select>
        
        </body>
</html>

DANKESCHÖN und für alle ANDEREN ... hier mal wieder ein cooles code snippet für eigene Projekte.

06.07.2017 15:16

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]