• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbankerstellung mit php klappt nicht

Lurid

Neues Mitglied
Hi leute.


habe hir ein problem welches ich nicht gelöst bekomme.:(
das erste formular fürt er ohne probleme aus, mit mysql werd ich auch verbunden, und das 2te formular giebt er auch aus wie er soll, aer wenn ich das 2te formular ausfüren will, dann setzt er alles auf anfang und die datenbank wird auch nicht erstellt.

könnt ihr mir vill sagen was das problem ist?

hier ist der code:
PHP:
<html>
<head>
</head>
<body>
   <h1>MySql verbindung</h1> 
   <form action="?" method="post">
   <h3>Host : </h3>
   <input type="text" name="host" size="15" value="localhost">
   <h3>Benutzer : </h3>
   <input type="text" name="benutzer" size="20" value="root">
   <h3>Passwort : </h3>
   <input type="text" name="pw" size="10" value="">
   <input type="submit" name="send" value="Senden">
   </form>
   <?php
   if(isset($_POST["send"])){
   $localhost = $_POST["host"];
   $root = $_POST["benutzer"];
   $pw = $_POST["pw"];
   $my_sql = mysql_connect("$localhost", "$root","$pw")or die (mysql_error());;
   print "<table border='0'>
   <form action='?' method='post'>
   <tr>
       <td>Name der Datenbank die angelegt werden soll : </td> 
       <td width='40px'><input type='text' name='db' size='25'></td>
   </tr>
   <tr>
       <td>Name der Tabelle die angelegt werden soll : </td> 
       <td width='40px'><input type='text' name='tb' size='25'></td>
   </tr>
   <tr>
       <td>Anzahl der Felder in der Tabelle</td> 
       <td width='40px'><input type='text' name='number' size='25'></td>
   </tr>
   <tr>
       <td width='30px'><input type='submit' name='send2' value='Senden'></td>
   </tr> 
   </form>
   </table>";
   if(isset($_POST["send2"])){
      $db = $_POST["db"];
	  $tb = $_POST["tb"];
	  $felder = $_POST["number"];
	  $i = 1;
	  $c = 1;
	  $typ = 1;
	  $atr = 1;
	  $laenge = 1;
	  $mysql_data = "CREATE  DATABASE $db";
	  $data_send = mysql_query($mysql_data) or die (mysql_error());
	  print "<h3>Bitte Namen der Tabellenfelder, atribut und länge eingeben.</h3>";
	  print "<table><tr><td>Name</td><td>Typ</><td>L&aumlnge</td><td>NULL</td></tr>";
	  print "<form action='?' method='post'>";
	  while ($i < $felder){
	  print " <tr><td><input type='text' name='$i' size='25'><td>
	              <td><select name='$typ'>
	                  <option>INT</option>
	                  <option>VARCHAR</option>
	                  <option>TEXT</option>
	                  <option>DATE</option>
	                  </select></td>
			      <td><input type='text' name='$laenge' size='25'><td>
				  <td><select name='$atr'>
				      <option>NULL</option>
					  <option>NOT NULL</option><td><tr>";
		   
	  $i ++;
	  $typ ++;
	  $laenge ++;
	  $atr ++;
	  }
	  print "<input type='hidden' name='number' value='".$felder."'>";
	  print "<input type='submit' name='send3' value='Senden'></form></table>";
	  if(isset($_POST["send3"])){
	  $mysql_data2 = "CREATE TABLE $tb";
	  $data_send2 = mysql_query($mysql_data2)or die (mysql_error());;
	  while($c < number){
	       if($i == "ID" or "id" or "Id" or "iD")
		   $sql =  "ALTER TABLE $tb ADD $i $typ($laenge) $atr auto_increment, PRIMARY KEY($i),";
		   else
		   $sql =  "ALTER TABLE $tb ADD $i $typ($laenge) $atr";
		   $c ++;
		   };
	  $data_send3 = mysql_query($sql);
      }
	  }
	  mysql_close($my_sql);
}											
?>

</body>
</html>

schonmal im voraus danke für die post's :)
 
Da ist so einiges nicht richtig.

- if(isset($_POST["send3"])){ wird nur evaluiert, wenn $_POST['send2'] gesetzt ist. Dasselbe Spiel mit $_POST['send2'] und $_POST['send'].

-
Code:
   $localhost = $_POST["host"];
   $root = $_POST["benutzer"];
   $pw = $_POST["pw"];
Diese Werte sind ab dem zweiten Schritt nicht mehr gesetzt. Es sind immer nur diejenigen $_POST-Werte gesetzt, die als Elemente innerhalb des abgeschickten Formulars stehen. Als Zwischenspeicher alter Werte bräuchtest du etwa Sessions.

- while ($i < $felder) dürfte ein Feld zu wenig erzeugen, da $i bei 1 startet.

- <td><select name='$atr'> Zahlen (erst recht nicht gleiche) sind keine zulässigen Namen für Formularelemente.
 
thx, das mit dem übernemen war es warscheinlich, denn jetzt klappt es. zumindest fast. er fürt laut php alles koreckt aus, aber bei mysql wird nur die datenbank erstellt, nicht die tabelle.

übrigends, mein code sieht jetzt nach der überarbeitung so aus:
PHP:
<html>
<head>
</head>
<body>
<h1>MySql verbindung</h1>
<form action="?" method="post">
<h3>Host : </h3>
<input type="text" name="host" size="15" value="localhost">
<h3>Benutzer : </h3>
<input type="text" name="benutzer" size="20" value="root">
<h3>Passwort : </h3>
<input type="text" name="pw" size="10" value="">
<input type="submit" name="send" value="Senden">
</form>
<?php
if(!$localhost = $_POST["host"])
;
else{
$localhost = $_POST["host"];
$root = $_POST["benutzer"];
$pw = $_POST["pw"];
$my_sql = mysql_connect("$localhost", "$root","$pw");
}
if(isset($_POST["send"])){
 
   print "<table border='0'>
   <form action='?' method='post'>
   <tr>
       <td width='120px'>Name der Datenbank die angelegt werden soll : </td> 
       <td width='40px'><input type='text' name='db' size='25'></td>
   </tr>
   <tr>
       <td width='120px'>Name der Tabelle die angelegt werden soll : </td> 
       <td width='40px'><input type='text' name='tb' size='25'></td>
   </tr>
   <tr>
       <td width='120px'>Anzahl der Felder in der Tabelle</td> 
       <td width='40px'><input type='text' name='number' size='25'></td>
   </tr>
   <tr>
       <td width='30px'>
       <input type='hidden' name='host' value='".$localhost."'>
       <input type='hidden' name='benutzer' value='".$root."'>
       <input type='hidden' name='pw' value='".$pw."'>
       <input type='hidden' name='my_sql' value='".$my_sql."'>
       <input type='submit' name='send2' value='Senden'></td>
   </tr> 
   </form>
   </table>";
   }
   print "<input type='hidden' name='host' value='".$localhost."'>
       <input type='hidden' name='benutzer' value='".$root."'>
       <input type='hidden' name='pw' value='".$pw."'>
       <input type='hidden' name='my_sql' value='".$my_sql."'>";
   if(isset($_POST["send2"])){
      $localhost = $_POST["host"];
      $root = $_POST["benutzer"];
      $pw = $_POST["pw"];
      $db = $_POST["db"];
      $tb = $_POST["tb"];
      $felder = $_POST["number"];
      $i = 0;
      $c = 0;
      $typ = 0;
      $atr = 0;
      $laenge = 0;
      $my_sql = mysql_connect("$localhost", "$root","$pw");
      echo $db;
      print "<h3>Bitte Namen der Tabellenfelder, atribut und länge eingeben.</h3>";
      print "<table><tr><td>Name</td><td width='15px'>Typ</><td>Länge</td><td>NULL</td></tr>";
      print "<form action='?' method='post'>";
      while ($i < $felder){
      print " <tr><td><input type='text' name='$i' size='25'><td>
                  <td><select name='$typ'>
                      <option>INT</option>
                      <option>VARCHAR</option>
                      <option>TEXT</option>
                      <option>DATE</option>
                      </select></td>
                  <td><input type='text' name='$laenge' size='5'><td>
                  <td><select name='$atr'>
                      <option>NULL</option>
                      <option>NOT NULL</option><td><tr>";
           
      $i ++;
      $typ ++;
      $laenge ++;
      $atr ++;
      }
      print "<input type='hidden' name='host' value='".$localhost."'>
             <input type='hidden' name='benutzer' value='".$root."'>
             <input type='hidden' name='pw' value='".$pw."'>
             <input type='hidden' name='my_sql' value='".$my_sql."'>
             <input type='hidden' name='db' value='".$db."'>";
      print "<input type='hidden' name='number' value='".$felder."'>";
      print "<input type='submit' name='send3' value='Senden'></form></table>";
      if(isset($_POST["send3"])){
      $localhost = $_POST["host"];
      $root = $_POST["benutzer"];
      $pw = $_POST["pw"];
      $my_sql = mysql_connect("$localhost", "$root","$pw");
      $db = $_POST["db"];
      $tb = $_POST["tb"];
      $felder = $_POST["number"];
      $mysql_data = "CREATE DATABASE $db";
      $mysql_data2 = "['$db'] CREATE TABLE $tb";
      $data_send = mysql_query($mysql_data) or die (mysql_error());
      $data_send2 = mysql_query($mysql_data2)or die (mysql_error());
      while($c < number){
           if($i == "ID" or "id" or "Id" or "iD")
           $sql =  "['$db'] ALTER TABLE $tb ADD $i $typ($laenge) $atr auto_increment, PRIMARY KEY($i),";
           else
           $sql =  "['$db'] ALTER TABLE $tb ADD $i $typ($laenge) $atr";
           $c ++;
           };
      $data_send3 = mysql_query($sql);
      }
      
      mysql_close($my_sql);
}                                            
?>

</body>
</html>
 
Keine Fehlermeldung? Probiere es mal so:

PHP:
      $mysql_data = "CREATE DATABASE $db";
      $data_send = mysql_query($mysql_data) or die (mysql_error());
      mysql_select_db($db);

      $mysql_data2 = "CREATE TABLE $tb";
      $data_send2 = mysql_query($mysql_data2)or die (mysql_error());

Besonders gut ist der Code noch immer nicht, aber vielleicht kommst du damit einen Schritt weiter.
 
wow, danke. ja jetzt habe ich den fehler angezeigt bekommen. jetzt führt er alles aus. danke :)

jetzt ist nur das problem das ich nen mysql syntax feher bekomme, aber das krig ich schon noch hin. Danke für die Hilfe. :)
 
Zurück
Oben