mysql-tabellen mit php automatisch erstellen
marcu
- php
hi,
ich bin fast am verzweifeln. ich will mit php automatisch mehrere tabellen erstellen und vorher den username,pw,server und die datenbank vom user abfragen. nun hab ich schon alles probiert aber das funzt alles nich :(.
kann mir vielleicht jemand von euch helfen???
hier mal der quellcode. vielleicht kann mir jemand sagen was ich falsch mache?
==================================================================
<html>
<head><title>Installation der Tabellen</title>
<body bgcolor="#4682B4">
<?
if ($submit) {
$connect = mysql_connect($hostname,$user,$pw); //Stellt verbindung zu Datenbank her
$use_db = "use"$db;
$create_software = "CREATE TABLE software2 (
pc_nr varchar(7) NOT NULL default '',
os varchar(30) default NULL,
prog_reg_nr varchar(50) default NULL,
os_reg_nr varchar(50) default NULL,
office varchar(30) default NULL,
office_reg_nr varchar(50) default NULL,
programmiersoftware varchar(30) default NULL,
netzwerksoftware varchar(30) default NULL,
zusatzsoftware varchar(100) default NULL,
extras varchar(200) default NULL,
PRIMARY KEY (pc_nr))";
$create_ea = "CREATE TABLE ea2 (
pc_nr varchar(6) NOT NULL default '',
monitor_t varchar(30) default NULL,
monitor_s_nr varchar(50) default NULL,
drucker varchar(30) default NULL,
drucker_s_nr varchar(50) default NULL,
scanner varchar(30) default NULL,
scanner_s_nr varchar(50) default NULL,
extras varchar(200) default NULL,
PRIMARY KEY (pc_nr))";
$create_hardware = "CREATE TABLE hardware2 (
pc_nr varchar(6) NOT NULL default '',
cpu varchar(30) default NULL,
ram varchar(30) default NULL,
hdd varchar(30) default NULL,
fdd varchar(30) default NULL,
cd_rom varchar(30) default NULL,
grafikkarte varchar(30) default NULL,
nic varchar(30) default NULL,
mac varchar(17) default NULL,
ip varchar(15) default NULL,
subnetmask varchar(15) default NULL,
PRIMARY KEY (pc_nr))";
if (!mysql_query($use_db,$connect)) die("verbindungsfehler"); // Verbindungsaufbau
if (!mysql_query($use_db,$create_software)) die("create_software fehler"); // Erstellt Software-Tabelle
if (!mysql_query($use_db,$connect,$create_ea)) die("create_ea fehler"); // Erstellt EA-Tabelle
if (!mysql_query($use_db,$connect,$create_hardware)) die("create_hardware fehler"); // Erstellt Hardware-Tabelle
echo("install ok"); //Erscheint wenn alles ok
mysql_close($connect); //schließt verbindung
}
else{?>
<table><form method="post" action="<? echo $PHP_SELF ?>">
<tr><th></th><th></th></tr>
<tr><td><p>Hostname</p></td>
<td><input type="text" name="hostname" value="<? echo $hostname ?>" size="50" maxlength="50"></td></tr>
<tr><td><p>User</p></td>
<td><input type="text" name="user" value="<? echo $user ?>" size="50" maxlength="50"></td></tr>
<tr><td><p>Password</p></td>
<td><input type="password" name="pw" value="<? echo $pw ?>" size="50" maxlength="50"></td></tr>
<tr><td><p>Datenbankname</p></td>
<td><input type="text" name="datenbank" value="<? echo $db ?>" size="50" maxlength="50"></td></tr>
<tr><td align="left"><input type="submit" name="submit" value="Abschicken"></td><td align="left"><input type="reset" border="0"></td></tr>
</table>
<? } ?>
</body>
</head>
</html>
--------------------------------------------------------------------
kann sein das so noch paar fehler drinn sind aber die dürften nich das erstellen behindern oder :(????
Hallo marcu,
$use_db = "use"$db;
Hier fehlt a) ein leerzeichen und b) der Verkettungsoperator:
$use_db = "use " . $db;
oder halt
$use_db = "use $db";
if (!mysql_query($use_db,$connect)) die("verbindungsfehler"); // Verbindungsaufbau
Ich würde lieber mysql_select_db nehmen...
if (!mysql_select_db($db, $connect)) die ("verbindungsfehler");
if (!mysql_query($use_db,$create_software)) die("create_software fehler"); // Erstellt Software-Tabelle
falsch. Richtig:
if (!mysql_query($create_software, $connect)) die(...);
if (!mysql_query($use_db,$connect,$create_ea)) die("create_ea fehler"); // Erstellt EA-Tabelle
if (!mysql_query($use_db,$connect,$create_hardware)) die("create_hardware fehler"); // Erstellt Hardware-Tabelle
s.o.
kann sein das so noch paar fehler drinn sind aber die dürften nich das erstellen behindern oder :(????
doch.
Ach ja, vielleicht ist *zusätzlich* zu den bekannten Fehlern noch register_globals aus, daher solltest Du auf Formularfelder über $_POST["variablenname"] anstelle von $variablenname zugreifen, also z.B.
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit"])) {
$connect = mysql_connect($_POST["hostname"], $_POST["user"], $_POST["pw"]) or die ("verbindungsfehler");
etc.pp.
Grüße,
Christian
hey, vielen dank. jetzt, nachdem du mir die fehler genannt und ich sie behoben habe funzt es *freu*. bin noch nen kleiner nube in sachen php deswegen wust ich das nich so - thx for help!
tschau