• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Select Felder dynamisch mit PHP ausgeben

byron1778

Hacker
Hallo Forum,

ich habe aus einer MySQL Datenbank ENUM - Werte dynamisch ausgelesen.

Diese Werte sollen nun in SELECT Felder (von HTML) verpackt werden.

Leider aber schreibt er mir nicht die Werte automatisch hinein.

Kann mir jemand vielleicht dabei weiterhelfen?

Den Absatz mit der Select Anweisung habe ich herausgehoben aus dem Script!

Danke schon einmal für jede Hilfe.

Mfg
Byron



<html>
<body>
<?php



$database = "backup";
$user = "root";
$pass = "";
$link = @mysql_connect ("localhost", $user, $pass);

if (! $link) {

die ("Cannot connect to Database: ".mysql_error());

}

else { print '<p align="center">Verbindung wurde soeben hergestellt</p>'."\n";}

@mysql_select_db($database) or die("Cannot open Database: ".mysql_error());




$sql = 'show columns from backup like "StartDay"';

$result=mysql_query($sql);
if(mysql_num_rows($result)>0){
$row=mysql_fetch_row($result);
$options=explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\\2",$row[1]));
}
foreach ($options as $value) {
print "<p>$value</p>";
}


//mysql_free_result($result);

print "<title>Formular zum Uploaden</title>";


print '<h1 align="center">Formular zum Uploaden</h1>';


print '<form action="index2.php" method="get">';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';




print ' <table border="0" cellpadding="0" cellspacing="4" bgcolor="aqua" align="center">';
print ' <tr>';
print ' <td align="right">Node: *</td>';
print ' <td><input type="text"name="Node" size="32" maxlength="32"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">IP oder Rufnummer: *</td>';
print ' <td><input type="text" name="IP" size="30" maxlength="30"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Zugangsart:</td>';
print ' <td><input type="text" name="Zugangsart" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Port: *</td>';
print ' <td><input type="text" name="Port" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">User und Passwort für Zugang: *</td>';
print ' <td><input type="text" name="Userpasswort" size="30" maxlength="30"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">User und Passwort für Anlage: *</td>';
print ' <td><input type="text" name="Passwort" size="30" maxlength="30"></td>';
print ' </tr>';
print ' <tr>';




print ' <td align="right">Wochentag: *</td>';
print ' <td><input type="text"> <select name="Wochentag"> foreach ($options as $value) {print "<option>$value</option";}</select></td>';





print ' <tr>';
print ' <td align="right">Frequenz (1-30): *</td>';
print ' <td><input type="text" name="Frequenz" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Source Path:</td>';
print ' <td><input type="text" name="Source Path" size="30" maxlength="30" value="/usr4/BACKUP/DAY"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">File Mask:</td>';
print ' <td><input type="text" name="File Mask" size="30" maxlength="30" value="*"></td>';
print ' </tr>';
print ' </table>';

print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';

print '<h1 align="center"><font color="#FF0000">Die mit Stern * gekennzeichneten Felder sind Pflichtfelder</font></h1>';

print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';

print '<p align="center"><input type="submit" value="Hier Drücken" /></p>';


print '</form>';


mysql_close($link);

?>
</body>
</html>
Code:
Code:
 

Bartlin

Member
Code:
print ' <td align="right">Wochentag: *</td>';
print ' <td><input type="text"> <select name="Wochentag"> 
foreach ($options as $value) {
    print "<option>$value</option";}
</select></td>';

Meiner Meinung könnte der Fehler damit behoben werden, indem du den "Options" ein value-Wert gibst. also:
Code:
print ' <td align="right">Wochentag: *</td>';

print ' <td><input type="text"> <select name="Wochentag">'."\n";
foreach ($options as $value) {
print "<option value=\"$value\">$value</option>\n";}
print '</select></td>';
Dabei ist der Befehl "\n" dafür zuständig, dass eine neue Zeile begonnen wird (so als ob man Enter im Text drückt) und der Hauptfehler besteht meiner Meinung nach, dass du das alles in EINE print-Anweisung gepackt hast.
 
OP
B

byron1778

Hacker
Hallo danke Dir für die Hilfe,

ich konnte es ebenso lösen, habe eine falsche Interpunktion angewendet.

Hätte auch gleich eine weitere Frage dazu.

In einem anderen Script sollen dann die $_GET Methoden verarbeitet werden.

Es sollen alle Pflichtfelder ausgefüllt sein, dann soll eine Meldung wie diese erscheinen.

Pflichtfelder sind befüllt
Habe dazu alle $_GET Methoden mit einem && zusammengefasst.
Jedoch sobald es mehr als ein $_GET Methode wird, erscheint gar nichts mehr.

Woran könnte das liegen?

Habe folgenden Code ausprobiert im 2ten Script:

print "Ihr Eingabe ist im Feld Notes ID<b> ".$_GET['NotesID']."</b><br/>\n";
print "Ihr Eingabe ist im Feld IP oder Rufnummer<b> ".$_GET['IP']."</b><br/>\n";
print "Ihr Eingabe ist im Feld User für Zugangsart<b> ".$_GET['UserZugangsart']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Passwort<b> ".$_GET['Passwort']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Passwort nocheinmal zur Überprüfung<b> ".$_GET['Ueberprufung']."</b><br/>\n";
print "Ihr Eingabe ist im Feld User für Anlage<b> ".$_GET['UserAnlage']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Passwort für Anlage<b> ".$_GET['PasswortAnlage']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Passwort für Anlage nocheinmal zur Überprüfung<b> ".$_GET['PasswortUeberprufung']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Port<b> ".$_GET['Port']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Zugangsart<b> ".$_GET['Zugangsart']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Wochentag<b> ".$_GET['Wochentag']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Frequenz (1-30)<b> ".$_GET['Frequenz']."</b><br/>\n";
print "Ihr Eingabe ist im Feld Source Path (default: /usr4/BACKUP/DAY)<b> ".$_GET['SourcePath']."</b><br/>\n";
print "Ihr Eingabe ist im Feld File Mask (default: *)<b> ".$_GET['FileMask']."</b><br/>\n";

if(! isset ( $_GET['NotesID'] && $_GET['SourcePath'])) {

print '<h1>Pflichtfelder sind gefüllt</h1>';

}

else {

print '<h1 align="center"><font color="#FF0000">Achtung Pflichtfelder duerfen nicht leer sein</font></h1>';

print '<h1 align="center"><a href="http://localhost/index.php">Zurück zur Eingabe</a></h1>';

}



--------------------------------------------------------------------------------------

So sieht der richtige Code aus im ersten Script (mit Erweiterungen)

<html>
<body>
<?php

/**********************************Verbindung zur Datenbank************************************/

$database = "backup";
$user = "root";
$pass = "";
$link = @mysql_connect ("localhost", $user, $pass);

if (! $link) {

die ("Cannot connect to Database: ".mysql_error());

}

@mysql_select_db($database) or die("Cannot open Database: ".mysql_error());




$sql = 'show columns from backup like "StartDay"';


$result=mysql_query($sql);
if(mysql_num_rows($result)>0){
$row=mysql_fetch_row($result);
$options=explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\\2",$row[1]));
}

$request= 'show columns from backup like "C_Type"';

$resultat=mysql_query($request);
if(mysql_num_rows($resultat)>0){
$rows=mysql_fetch_row($resultat);
$optionst=explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\\2",$rows[1]));
}

print "<title>Formular zum Uploaden</title>";


print '<h1 align="center">Formular zum Uploaden</h1>';



/**************************Ab hier beginnt das Formular*********************/



print '<form action="index2.php" method="get">';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';


print ' <table border="0" cellpadding="0" cellspacing="4" bgcolor="aqua" align="center">';
print ' <tr>';
print ' <td align="right">Notes ID: *</td>';
print ' <td><input type="text"name="NotesID" size="32" maxlength="32"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">IP oder Rufnummer: *</td>';
print ' <td><input type="text" name="IP" size="30" maxlength="30"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">User für Zugangsart:</td>';
print ' <td><input type="text" name="UserZugangsart" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Passwort: *</td>';
print ' <td><input type="text" name="Passwort" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Passwort nocheinmal zur Überprüfung: *</td>';
print ' <td><input type="text" name="Ueberprufung" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">User für Anlage: *</td>';
print ' <td><input type="text" name="UserAnlage" size="30" maxlength="30"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Passwort für Anlage: *</td>';
print ' <td><input type="text" name="PasswortAnlage" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Passwort für Anlage nocheinmal zur Überprüfung: *</td>';
print ' <td><input type="text" name="PasswortUeberprufung" size="30" maxlength="40"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Port: *</td>';
print ' <td><select name="Port" size="2"><option>1</option><option>2</option></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Zugangsart: </td>';
print ' <td><select name="Zugangsart">'; foreach ($optionst as $values) {print "<option>$values</option>";}print '</select></td>';
print ' </tr>';

print ' <tr>';
print ' <td align="right">Wochentag: *</td>';
print ' <td> <select name="Wochentag">'; foreach ($options as $value) {print "<option>$value</option>";}print '</select></td>';
print ' <tr>';
print ' <td align="right">Frequenz (1-30): *</td>';
print ' <td><select name="Frequenz"'; for($ida=0;$ida<=30;++$ida) {print "<option>$ida</option>";}print '</select></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">Source Path:</td>';
print ' <td><input type="text" name="SourcePath" size="30" maxlength="30" value="/usr4/BACKUP/DAY"></td>';
print ' </tr>';
print ' <tr>';
print ' <td align="right">File Mask:</td>';
print ' <td><input type="text" name="FileMask" size="30" maxlength="30" value="*"></td>';
print ' </tr>';
print ' </table>';

print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';

print '<h1 align="center"><font color="#FF0000">Die mit Stern * gekennzeichneten Felder sind Pflichtfelder</font></h1>';

print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';
print ' ';

print '<p align="center"><input type="submit" value="Hier Drücken" /></p>';


print '</form>';


mysql_close($link);

?>
</body>
</html>
 

Efchen

Newbie
Moin,

if(! isset ( $_GET['NotesID'] && $_GET['SourcePath'])) {

Es heißt wohl
Code:
if (isset($_GET['NotesID']) && isset($_GET['SourcePath'])) {

Du kannst die logische Verknüpfung nicht innerhalb Deiner Parameterliste haben, sondern musst isset() für jede Variable einzeln aufrufen.

Gruß,
-Efchen
 

Bartlin

Member
Sorry, byron1778, ich möchte nicht unhöflich sein, aber könntest du bitte beim nächsten Mal die "Code"- oder "Zitat"-Funktion benutzen, das erleichtert das Lesen echt ungemein. Die "Zitat"-Funktion hat den Vorteil, dass du da die anderen Dinge, wie Fett oder Kursiv benutzen kannst...

Danke und bitte echt nicht böse aufnehmen.
 
Oben