Avatar billede drockles Nybegynder
27. juni 2006 - 21:00 Der er 11 kommentarer og
2 løsninger

en opfølgning på spm 698440

http://www.eksperten.dk/spm/698440


hvordan kan man (som bruger på hjemmesiden) definere titlen på tabellen?
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:32 #1
Det er ved at bruge en variabel istedet for: TMaccounts
Nu skal du ikke gøre sådan her, men kun som eksempel:

<?PHP

mysql_query("CREATE TABLE " .$_GET['tabelNavn'] . " (
    userid int(25) NOT NULL auto_increment,
      contact varchar(60) NOT NULL default '',
      companyname varchar(255) NOT NULL default '',
      vatno varchar(255) NOT NULL default '',
      address varchar(255) NOT NULL default '',
      postcode varchar(255) NOT NULL default '',
      city varchar(255) NOT NULL default '',
      state varchar(255) NOT NULL default '',
      country varchar(255) NOT NULL default '',
      phone varchar(255) NOT NULL default '',
      email varchar(255) NOT NULL default '',
      newsletter enum('0','1') default '0',
      signup_date datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (userid)
    ) TYPE=MyISAM PACK_KEYS=0 COMMENT='customers information'
");

?>

Så kunne du kalde filen: createTabel.php?tabelNavn=jakobdo
Så ville den oprette en tabel med navnet jakobdo
Dog er det kun et eksempel, du bør tjekke det data der kommer ind.
Avatar billede nielle Nybegynder
27. juni 2006 - 21:37 #2
Et bud:

<form method="post">
Opret tabel: <imput type="text" name="tabelNavn"><br>
<input type="submit">
</form

<?php
$tabelNavn = $_POST["tabelNavn"];
if (isset($tabelNavn) && trim($tabelNavn) != "")
{
    $tabelNavn = trim($tabelNavn);

    mysql_query("CREATE TABLE `$tabelNavn` (
        userid int(25) NOT NULL auto_increment,
        contact varchar(60) NOT NULL default '',
        companyname varchar(255) NOT NULL default '',
        vatno varchar(255) NOT NULL default '',
        address varchar(255) NOT NULL default '',
        postcode varchar(255) NOT NULL default '',
        city varchar(255) NOT NULL default '',
        state varchar(255) NOT NULL default '',
        country varchar(255) NOT NULL default '',
        phone varchar(255) NOT NULL default '',
        email varchar(255) NOT NULL default '',
        newsletter enum('0','1') default '0',
        signup_date datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (userid)
        ) TYPE=MyISAM PACK_KEYS=0 COMMENT='customers information'
    ") or die (mysql_error());
}
?>
Avatar billede nielle Nybegynder
27. juni 2006 - 21:37 #3
Note to self: Altid huske at reloade før man poster. :^)
Avatar billede jakobdo Ekspert
27. juni 2006 - 21:41 #4
Haha! :o)
Avatar billede drockles Nybegynder
27. juni 2006 - 21:55 #5
ok. mange tak :-)          vil i dele pointne?
Avatar billede jakobdo Ekspert
28. juni 2006 - 08:36 #6
Dele er fint med mig! :o)
Avatar billede drockles Nybegynder
28. juni 2006 - 11:37 #7
fino.. så skal vi bare liiige have nielle med også...

Jeg har lagt mærke til at du er temmelig aktiv i php-spørgsmålene Jakobdo.. kender du til nogle bøger som er gode at have ved hånden når man programmere php og mysql?
Avatar billede jakobdo Ekspert
28. juni 2006 - 11:52 #8
PHP bruger jeg disse:
http://www.php.net/manual/en/
http://www.php.net/download-docs.php
http://www.google.com (hvis du ved hvad du søger, så kan du finde meget kode eller hjælp på google)

Mysql:
http://dev.mysql.com/doc/

De kan hjælpe dig med alt.
Og så lige eksperten.dk selvfølgelig. :o)
Avatar billede drockles Nybegynder
28. juni 2006 - 17:04 #9
selvfølgelig :-) tak
Avatar billede nielle Nybegynder
29. juni 2006 - 17:58 #10
Når du tager brugerinput og laver noget i databasen på baggrund af dette, tilrådes det kraftigt at du validere inputtet for feltagelser eller for decideret ondskabsfuld kode (kode fra Joe the Hacker).

I mit oprindelige eksempel har jeg trimmet tabelnavnet for whitespace foran og bagefter navnet. Desuden er der sat en die() på SQL-kaldet som et led i en ordentlig fejlhåndtering. Dette er et absolut minimum af validering, og det sikre kun imod at dine brugere laver ged i din database via simple fejl. Det beskytter derimod ikke imod ondskabsfuld kode!

Denne variation forsøger at gøre noget ved dette problem:

<form method="post">
Opret tabel: <imput type="text" name="tabelNavn"><br>
<input type="submit">
</form

<?php
$tabelNavn = "" . $_POST["tabelNavn"];
$tabelNavn = trim($tabelNavn);

if ($tabelNavn != "")
{
    $tabelNavn = mysql_escape_string($tabelNavn);   

    mysql_query("CREATE TABLE `$tabelNavn` (
        userid int(25) NOT NULL auto_increment,
        contact varchar(60) NOT NULL default '',
        companyname varchar(255) NOT NULL default '',
        vatno varchar(255) NOT NULL default '',
        address varchar(255) NOT NULL default '',
        postcode varchar(255) NOT NULL default '',
        city varchar(255) NOT NULL default '',
        state varchar(255) NOT NULL default '',
        country varchar(255) NOT NULL default '',
        phone varchar(255) NOT NULL default '',
        email varchar(255) NOT NULL default '',
        newsletter enum('0','1') default '0',
        signup_date datetime NOT NULL default '0000-00-00 00:00:00',
        PRIMARY KEY  (userid)
        ) TYPE=MyISAM PACK_KEYS=0 COMMENT='customers information'
    ") or die (mysql_error());
}
?>
Avatar billede drockles Nybegynder
30. juni 2006 - 00:34 #11
ok tak. jeg har gidt tænkt på det, og det er heller ikke tilgængeligt for alle. - der er noget password på... :-)
Avatar billede jakobdo Ekspert
30. juni 2006 - 08:17 #12
Takker for point.
Avatar billede nielle Nybegynder
30. juni 2006 - 16:22 #13
Tekker for point :^)
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