[MySQL] create table

mrtom

Well-known member
ID: 12439
L
31 Mai 2006
97
0
un hab ich das nächste prob...
eine probedatei zur anlegung (aus einem tutorial) klappt zu 100% und legt eine tabelle an


PHP:
<?
include ("config.php");

mysql_query("CREATE TABLE cds (
id int(255) NOT NULL auto_increment,
interpret varchar(100) NOT NULL,
titel varchar(100) NOT NULL,
PRIMARY KEY (id)
);");

mysql_close();
echo "Die Tabelle wurde angelegt";
?>
die zweite von mir angelegte datei funzt ohne error-ausgabe, jedoch wird auch keine tabelle angelegt


PHP:
<?
include ("config.php");

mysql_query("CREATE TABLE cdss (
id int(255) NOT NULL auto_increment,
potenzial int(2),
ladestelle int(2),
fa-name1 varchar(40) NOT NULL,
fa-name2 varchar(40),
fa-name3 varchar(40),
strasse varchar(50),
land int(3) NOT NULL,
plz int(5) int(5) NOT NULL,
stadt varchar(30) NOT NULL,
laendervorwahl int(4) NOT NULL,
vorwahl int(8) NOT NULL,
telenr character(15) NOT NULL,
faxnr varchar(20),
email varchar(60),
infos text,
PRIMARY KEY (id)
);");

mysql_close();
echo "Die Tabelle wurde angelegt";
?>
obwohl beide bis auf tabellenwerte identisch sind
 
Naja wenn es ein Installscript werden soll ist phpmyadmin net wirklich behilflich außer er lässt sich nachher de php code geben.

Nimm mal das hier ist besser.
PHP:
<?
include ("config.php");

mysql_query("CREATE TABLE cdss (
id int(255) NOT NULL auto_increment,
potenzial int(2),
ladestelle int(2),
fa-name1 varchar(40) NOT NULL,
fa-name2 varchar(40),
fa-name3 varchar(40),
strasse varchar(50),
land int(3) NOT NULL,
plz int(5) int(5) NOT NULL,
stadt varchar(30) NOT NULL,
laendervorwahl int(4) NOT NULL,
vorwahl int(8) NOT NULL,
telenr character(15) NOT NULL,
faxnr varchar(20),
email varchar(60),
infos text,
PRIMARY KEY (id)
);") OR die(mysql_error());

mysql_close();
echo "Die Tabelle wurde angelegt";
?>

ps int(255) ist zwar net falsch aber nicht schickin deinem Fall. Siehe hier. ich habe mir angwöhnt in die Klammern nur die bytes zu schreiben, außer ich will cerofill dann gebe ich die stellen an. Wenn man kein cerofill macht hat die Zahl eh keine Bedeutung.
 
mysql_error hilft weiter... oder augen auf ;)
PHP:
plz int(5) int(5) NOT NULL,

@strolch00 für faule is phpmyadmin ideal... man klickt sich die tabelle zusammen und sieht dannach das sql statment.

*edit* für deutsche postleitzahlen CHAR(5) nehmen ;) gibt auch plz mit 0xxxx... bei int würde die 0 fehlen.
 
Mir hat mal ein kluger Kopf gesagt: Nur das als Zahl abspeichern mit dem man auch rechnen will. PLZ-Durchschnitt ist wahrscheinlich nicht so interessant.
 
@BOYerchen: da ist schon was dran, andersrum verbraucht char(5) 5 Byte Speicher aber ein SmallInt z.b. nur 2 Byte
Zudem besteht in DE ein PLZ nur aus Zahlen und nicht aus Buchstaben, der entsprechende Datentyp kann/könnte also auch zur "Validierung" der Eingabe herangezogen werden. ;)

edit: korrektur zu strolchs punkt 1: zerofill - und der zusatz unsigned ist auch nicht verkehrt.
 
strolch, das war doch kein vorwurf, nur die korrektur eines verschreibers cerofill!=zerofill + zusatz der mir beim tippen noch einfiel ;)
 
da is man 1 tag nich da und soviele antworten.
danke erstmal
lese es mir jetzt mal in ruhe durch und werd dann ggf. erneut fragen stellen ;)
 
gut das einzigste was ich nicht gerafft hab is das cerofill (???) ...

will später mit den plz die entfernung ausrechnen per geodb das geht ja dann auch mit char oder?
 
gut das einzigste was ich nicht gerafft hab is das cerofill (???) ...

will später mit den plz die entfernung ausrechnen per geodb das geht ja dann auch mit char oder?

cerofill bedeutet, dass wenn du angibst 6 zahlen gespeichert werden und du nur 4 übergibst die beiden vorderen stellen mit 0en gefüllt werden

geodb? hmm, da gibts in meinem buch nen extra-kapitel drüber, da war irgendeine rafinesse dabei. wie ich oben schon sagte ist ne char-spalte langsamer als int und das wird sich gerade bei mathematischen berechnungen von geodb-koordinaten zeigen.

Edit: MySQL GIS-Funktionen unbedingt lesen, weit performanter als die selbstimplementierten Umkreissuchen