Problem mit CREATE TABLE / MySQL - PHP

xxxTargetxxx

Grünschnabel
Hallo zusammen,

habe ein Problem mit dem erstellen einer Tabelle in einer MySQL Datenbank. Mein Quelltext sieht wie folgt aus, bekomme keine Fehlermeldung, aber die Tabelle wird trotzdem nicht erstellt. Wenn ich die SQL Syntax direkt in phpMyAdmin eingebe wird die Tabelle erstellt.

PHP:
if ($_POST['kat']) {
	$neu = ("
		CREATE  TABLE  `".$_POST['name']."` (  `id` int( 2  )  NOT  NULL  auto_increment ,
		 `sem_kurz` varchar( 10  )  NOT  NULL default  '',
		 `besch_kurz` varchar( 100  )  NOT  NULL default  '',
		 `abend_tag_std1` char( 3  )  NOT  NULL default  '',
		 `abend_tag_std2` varchar( 8  )  NOT  NULL default  '',
		 `dauer1` varchar( 13  )  NOT  NULL default  '',
		 `dauer2` varchar( 13  )  NOT  NULL default  '',
		 `mitglieder` varchar( 7  )  NOT  NULL default  '',
		 `n_mitglieder` varchar( 7  )  NOT  NULL default  '',
		 `prfg_geb` varchar( 6  )  NOT  NULL default  '',
		 `dat_1_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_1_tag2` varchar( 8  )  NOT  NULL default  '',
		 `dat_2_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_2_tag2` varchar( 8  )  NOT  NULL default  '',
		 `dat_3_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_3_tag2` varchar( 8  )  NOT  NULL default  '',
		 `dat_4_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_4_tag2` varchar( 8  )  NOT  NULL default  '',
		 `dat_5_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_5_tag2` varchar( 8  )  NOT  NULL default  '',
		 `dat_6_tag1` varchar( 8  )  NOT  NULL default  '',
		 `dat_6_tag2` varchar( 8  )  NOT  NULL default  '',
		 PRIMARY  KEY (  `id`  )  ) TYPE  =  MyISAM;");
	mysql_query($neu) or die(mysql_error() . "<br><br>" . $neu);
	}

Die Variable $name wir über ein POST Script übergeben...

Hab schon gegooglet und mein Script überprüft, aber selbst keinen Fehler gefunden... Vielleicht fehlt noch was, auf alle Fälle hab ich aber einen Connect, kann auch Datensätze in bestehenden Tabellen ändern, löschen oder hinzufügen. Nur das mit der Tabelle funktioniert nicht...

Vielen Dank schonmal
 
Also, ich sehe da erstmal auch nichts.. hast du mal die POST-Variablen ausgeben lassen?
Vielleicht werden die nicht richtig übergeben?

Layna
 
Ich bin jetzt eigentlich nicht sehr erfahren was PHP angeht, aber was gibst du der variable $kat mit? Kann ja nur an dem if liegen wenn du es so machst wie du sagst:

PHP:
if ($_POST['kat']) {
 
Die Variable $kat ist der Submit Button, mit value="Neu"

Kann die POST Variablen ausgeben und habe meine Werte!

Kann es vll daran liegen, dass ich eine MySQL 5.0 Datenbank habe und eigentlich alles mit PHP 4.0.1.7 (glaub ich) ausführe?

EDIT:
Habe gerade 2 Tabellen über das Script erstellen können. Jedesmal wurde mir die Variable $_POST['kat'] mit dem Wert "Neu" im Debug angegeben. Seit dem 3. Versuch kann ich keine Tabelle mehr erstellen. Die Variable $_POST['kat'] gibt mir nun auch keinen Wert mehr im Debug an!
Hilft das weiter?

Danke weiterhin für eure Hilfe
 
Zuletzt bearbeitet:
Zeig uns doch mal das Formular. Das SQL funktioniert jedenfalls bei mir auch ohne Probleme. Muss also an den Variablen liegen und/oder dem if.
 
Das Formular "kat.php":
PHP:
Neue Kategorie erstellen:

<form method="post" action="index.php">
<input type="text" name="name">
<input type="submit" name="kat" value="Neu">
<input type="hidden" name="change" value="kat">
</form>

Die Index-Datei "index.php":
PHP:
include ("../config/sql_con.php");  //SQL Connect

if ($_POST['kat']) { } // dann der if wie oben

<head>
<title>xyz</title>
</head>

<body>

include ("config/kat.php"); //Über ein if wird das menü "Kategorie" alias kat.php includet

</body>

Hoffe das reicht, ist ein ausschnitt, müsste aber das wichtigste sein!

EDIT:
Hab grad ein Zeichen übersehen, deswegen der EDIT -> korrigiert
 
Mit den if-tiefen von PHP kenne ich mich nicht aus... abe rist in PHP alles was nciht false ist == true?

if ($_POST['kat']) ist doch kein boolscher wert...?

Sorry, abe rich bin gerade unsicher und habe hier keinen PHP-serve rzum testen.

Layna
 
Habs bei mir lokal hinbekommen und zwar so (alles in einer Datei):

PHP:
<?php

include ("_class.db.inc.php");  //SQL Connect

if ($_POST['change']) {
$db = new database;
$db->connect();

    $neu = ("
        CREATE  TABLE  `".$_POST['name']."` (  `id` int( 2  )  NOT  NULL  auto_increment ,
         `sem_kurz` varchar( 10  )  NOT  NULL default  '',
         `besch_kurz` varchar( 100  )  NOT  NULL default  '',
         `abend_tag_std1` char( 3  )  NOT  NULL default  '',
         `abend_tag_std2` varchar( 8  )  NOT  NULL default  '',
         `dauer1` varchar( 13  )  NOT  NULL default  '',
         `dauer2` varchar( 13  )  NOT  NULL default  '',
         `mitglieder` varchar( 7  )  NOT  NULL default  '',
         `n_mitglieder` varchar( 7  )  NOT  NULL default  '',
         `prfg_geb` varchar( 6  )  NOT  NULL default  '',
         `dat_1_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_1_tag2` varchar( 8  )  NOT  NULL default  '',
         `dat_2_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_2_tag2` varchar( 8  )  NOT  NULL default  '',
         `dat_3_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_3_tag2` varchar( 8  )  NOT  NULL default  '',
         `dat_4_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_4_tag2` varchar( 8  )  NOT  NULL default  '',
         `dat_5_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_5_tag2` varchar( 8  )  NOT  NULL default  '',
         `dat_6_tag1` varchar( 8  )  NOT  NULL default  '',
         `dat_6_tag2` varchar( 8  )  NOT  NULL default  '',
         PRIMARY  KEY (  `id`  )  ) TYPE  =  MyISAM;");
    $res = $db->query($neu) or die(mysql_error() . "<br><br>" . $neu);
    }  

?>

<head>
<title>xyz</title>
</head>

<body>

Neue Kategorie erstellen:

<form method="post" action="index2.php">
<input type="text" name="name">
<input type="submit" name="kat" value="Neu">
<input type="hidden" name="change" value="kat">
</form>

</body>
</html>

Musst die SQL Anweisungen noch durch deine eigenen ersetzen dann sollte das klappen.
Und das Formular kannst du ja auch in dem Skript noch mit if ausklammern .. oder so :)
 
Vielen DANK! Funktioniert bei mir auch tadellos!!

Bin auch noch auf eine andere Idee gekommen. Der übergibt mir komischer weise nicht immer die Variable $_POST['kat'], hab den if Befehl in
PHP:
if($_POST['name'])
geändert. Jetzt funktioniert alles!!

Danke euch nochmal
 
Lass dir doche infach mal mit

PHP:
echo $neu;
ausgeben was er zusammensetzt. Dann kopierst du dir die Ausgabe und schaust in PHPmyAdmin nach an welcher Stelle es hängt, bzw welche Variable falsch oder eben gar nicht übergeben oder entgegengenommen wurde
 
Zurück