Avatar billede Slettet bruger
29. juli 2007 - 14:31 Der er 13 kommentarer og
1 løsning

Tilretning af Opret Tabel i MySQL

Hej.

Jeg sidder lige og roder lidt med at lave kode så man fra PHP kan oprette en tabel i en given database.

Jeg synes bare at det ser forkert ud. En der lige vil hjælpe med at få det rigtigt. Jeg har nu følgende kode:

<?php require_once('DATABASE.php'); ?>

<?php
$TabelNavn = $_POST['Navn'];

// USE `DATABASE`

// Tabelformat er dato: 040707  ( ddmmåå )

mysql_query("CREATE TABLE $TabelNavn; (
  `id` int(11) NOT NULL auto_increment,
  `BestilNr` varchar(10) NOT NULL default '',
  `Opstilling` varchar(10) default NULL,
  `Forfatter` varchar(40) default NULL,
  `Titel` varchar(50) default NULL,
  `Tekst` text,
  `Forlag` varchar(40) NOT NULL default '',
  `Udgivet` varchar(15) NOT NULL default '',
  `Info` longtext,
  `Dato` date NOT NULL default '0000-00-00',
  `Koebt` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id`)
") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

?>

Jeg glæder mig til at se hvad jeg har glemt/lavet forkert/eller hvad jeg nu har gjort, så jeg synes det ser forkert ud. På forhånd tak.

Ole.
Avatar billede erikjacobsen Ekspert
29. juli 2007 - 14:48 #1
mysql_query("CREATE TABLE $TabelNavn; (
  `id` int(11) NOT NULL auto_increment,
  `BestilNr` varchar(10) NOT NULL default '',
  `Opstilling` varchar(10) default NULL,
  `Forfatter` varchar(40) default NULL,
  `Titel` varchar(50) default NULL,
  `Tekst` text,
  `Forlag` varchar(40) NOT NULL default '',
  `Udgivet` varchar(15) NOT NULL default '',
  `Info` longtext,
  `Dato` date NOT NULL default '0000-00-00',
  `Koebt` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0";


...formentlig bare. Men det er ikke godt at oprette tabeller for hver dato. Du kan ikke lave forespørgsler på tværs, det koster i performance. Hellere een tabel som den du har, med et ekstra felt - eller med det du allerede har `Dato`  - med et indeks på er det langt at foretrække.
Avatar billede Slettet bruger
29. juli 2007 - 15:09 #2
Tak Erik.

Det ser jo ud til at jeg havde parkeret anførselstegnet forkert.

Nu er det ikke dagligt der skal oprettes en tabel, men måske en hver eller hver anden måned. Ved at bruge dato kan man jo hurtigt finde den nyeste. Men det kan da godt være det kan laves smartere :)

Når der er flere tabeller oprettet er det meningen at man skal kunne få dem listet og ved et klik på navnet, få vist indholdet. Men det giver nok også et spørgsmål eller to.

Jeg prøver at arbejde videre med dette.

Tak for det, og vil du have lidt for ulejligheden, så læg et svar  :-)

Ole.
Avatar billede erikjacobsen Ekspert
29. juli 2007 - 15:34 #3
Fint nok - tænk over det. Jeg samler slet ikke på point, tak. Svar selv, accepter eget svar. 73 de oz6ks  ;)
Avatar billede Slettet bruger
29. juli 2007 - 15:36 #4
73 Erik og TAK.
Avatar billede Slettet bruger
29. juli 2007 - 16:05 #5
Nå det var ikke helt så let som jeg troede.

Den giver denne fejl:

Parse error: parse error, unexpected ';'

i denne linie:

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0";

Hvad mon det kan skyldes ?
Avatar billede dkfire Nybegynder
29. juli 2007 - 16:10 #6
du mangler lige en ) før ;
Avatar billede Slettet bruger
29. juli 2007 - 16:17 #7
Ja det er rigtigt.

Men jeg må mangle noget mere, for der kom ingen fejl, men den oprettede heller ikke tabellen.
Avatar billede Slettet bruger
29. juli 2007 - 16:18 #8
Jeg må mangle en kommando der lige får den til at udføre den query ?
Avatar billede erikjacobsen Ekspert
29. juli 2007 - 16:26 #9
Den skulle blive udført, men der kan sagtens være fejl. Du skal

  mysql_query("CREATE ......") or die(mysql_error());
Avatar billede Slettet bruger
29. juli 2007 - 16:34 #10
Ak ja, alle de fejl :)

Nu har jeg:

mysql_query("CREATE TABLE $TabelNavn (
  `id` int(11) NOT NULL auto_increment,
  `BestilNr` varchar(10) NOT NULL default '',
  `Opstilling` varchar(10) default NULL,
  `Forfatter` varchar(40) default NULL,
  `Titel` varchar(50) default NULL,
  `Tekst` text,
  `Forlag` varchar(40) NOT NULL default '',
  `Udgivet` varchar(15) NOT NULL default '',
  `Info` longtext,
  `Dato` date NOT NULL default '0000-00-00',
  `Koebt` varchar(10) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0") or die(mysql_error());

og det giver denne fejl:

290707 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '290707 ( `id` int(11) NOT NULL auto_increment, `BestilNr` varchar(10) NOT' at line 1

Hmmm, det ser mig noget underligt ud, men det er sikkert fordi jeg ikke fatter hvad den mener.
Avatar billede Slettet bruger
29. juli 2007 - 16:45 #11
Nu virker det.

Der skulle lige ændres her:

mysql_query("CREATE TABLE `$TabelNavn` (

Det er bare super - ja man lærer hele tiden noget nyt :)
Avatar billede Slettet bruger
29. juli 2007 - 17:52 #12
dkfire - når nu Erik ikke vil ha' skal vi så dele ? :-)
Avatar billede Slettet bruger
30. juli 2007 - 21:00 #13
Hvis nogen vil svare, så må det være tid nu :) Ellers ryger de i min bank :-)
Avatar billede Slettet bruger
30. juli 2007 - 22:31 #14
Nu er det ved at være slut :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester