[PHP && MYSQL] Check of tabelnaam aanwezig is.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey mensen,

na lang zoeken in search, mysql.org en php.net ben ik niet verder gekomen met het volgende probleem:

Ik wil (puur om het kunnen), een gastenboek maken die na het invullen van enkele parameters zelf een tabel aanmaakt in een aangegeven database, ALS de tabel nog niet bestaat.

Dat is dus meteen heb probleem. Ik heb wel kunnen vinden hoe ik kan checken OF er een tabel aanwezig is, maar niet WELKE.

Dus infeite gewoon een query waar ik een tabel kan aanvragen waar de naam 'guestbook' is.

Iemand die me op weg kan helpen?

bvd

Acties:
  • 0 Henk 'm!

Verwijderd

Een tabel maak je om gegevens in op te slaan.
De uiteindelijke gegevens sla je op in een record.

Een voorbeeld zou zijn gewoon een formuliertje in html te maken, met post erbij en de submit knop oko de naam submit geven

en dan

PHP:
1
2
3
if($_POST['submit']){
mysql_query($query);
}


De query die je dan bijvoorbeeld uitvoert is:

[sql]
INSERT test INTO gastenboek
[/sql]

[ Voor 21% gewijzigd door Verwijderd op 18-01-2006 14:42 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
rechtstreeks uit de manual:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

Klik

Acties:
  • 0 Henk 'm!

Verwijderd

Waarom wil je de table createn via een webformulier?? Je hebt maar 1 gastenboek toch en dus maar 1 table??

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Het kan handig zijn als installatiescript?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ik denk dat ie bedoelt dat ie gewoon de tabel wil maken bij installatie, zodat ie dat niet handmatig hoeft te doen. Een installatie-script dus.

Dan heb je gewoon CREATE TABLE IF NOT EXISTS tbl_name

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bosmonster schreef op woensdag 18 januari 2006 @ 14:45:
Ik denk dat ie bedoelt dat ie gewoon de tabel wil maken bij installatie, zodat ie dat niet handmatig hoeft te doen. Een installatie-script dus.
precies. Het is natuurlijk waanzin om dat allemaal te doen als je het voor eigen gebruik maakt :)


Heren.. erg bedankt. Ik ga ff proberen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 18 januari 2006 @ 14:41:
Een tabel maak je om gegevens in op te slaan.
De uiteindelijke gegevens sla je op in een record.

Een voorbeeld zou zijn gewoon een formuliertje in html te maken, met post erbij en de submit knop oko de naam submit geven

en dan

PHP:
1
2
3
if($_POST['submit']){
mysql_query($query);
}


De query die je dan bijvoorbeeld uitvoert is:

[sql]
INSERT test INTO gastenboek
[/sql]
Ik snap, echter, het hele script is al af. Ik wilde achteraf alleen even de "installatie" makkelijker maken door een table te maken voor de user, wanneer hij of zij dat nog niet heeft gedaan, of niet weet hoe dat moet. Dit moet natuurlijk alleen als de tabel nog neit gemaakt is... en DIE check. Daar gaat het om.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Well ... dit staat bovenaan in het script:

PHP:
1
2
3
4
5
6
7
8
/**
* Establishing database connection, else error on failure.
**/
$db = mysql_connect($dblink, $dbaseuser, $dbasepassword) or die("Connection to the database failed" .mysql_error());
mysql_select_db($dbasename, $db);
session_start();

mysql_query("CREATE TABLE `".$dbasetable."` IF NOT EXISTS `".$dbasetable."` (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`user` TEXT NOT NULL ,`message` TEXT NOT NULL ) TYPE = innodb");


Maar wat ik dan dus krijg is onder de inputvelden voor het gastenboek:

"Table 'uw-webarchitect.guestbook' doesn't exist"

Hij maakt hem dus niet aan ...

Acties:
  • 0 Henk 'm!

  • Tsunami
  • Registratie: Juni 2002
  • Niet online
Verwijderd schreef op woensdag 18 januari 2006 @ 15:12:
Well ... dit staat bovenaan in het script:

PHP:
1
2
3
4
5
6
7
8
/**
* Establishing database connection, else error on failure.
**/
$db = mysql_connect($dblink, $dbaseuser, $dbasepassword) or die("Connection to the database failed" .mysql_error());
mysql_select_db($dbasename, $db);
session_start();

mysql_query("CREATE TABLE `".$dbasetable."` IF NOT EXISTS `".$dbasetable."` (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`user` TEXT NOT NULL ,`message` TEXT NOT NULL ) TYPE = innodb");


Maar wat ik dan dus krijg is onder de inputvelden voor het gastenboek:

"Table 'uw-webarchitect.guestbook' doesn't exist"

Hij maakt hem dus niet aan ...
Zoals al meedere malen gezegd:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

dus niet twee keer de tabelnaam, alleen aan het eind.

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Euhmm ja, ^^ dat kan ook... ik had gewoon niet eens gezien dat de tabelnaam 2x in de query stond. :o |:( Nouja, sowieso wel handig voortaan (iedergeval tijdens het testen) overal een die(mysql_error()) achter te zetten. :)


--- oude bericht ---

Waar ik zo als eerste aan denk:

Op regel 8 wordt de tabel gemaakt wanneer deze niet bestaat. Echter, omdat er geen die(); achter staat, zal er geen error in beeld komen. Als je dus als MySQL-gebruiker geen rechten hebt om nieuwe tabellen te maken, zal er geen tabel gemaakt worden. Er komt alleen ook geen melding, en hij gaat gewoon door. Dan blijkt ergens anders dat de tabel niet bestaat, en krijg je de error die je post.

[ Voor 24% gewijzigd door OkkE op 18-01-2006 15:23 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

dus het volgende:
code:
1
mysql_query("CREATE TABLE IF NOT EXISTS `".$dbasetable."` (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`user` TEXT NOT NULL ,`message` TEXT NOT NULL ) TYPE = innodb");


Volgens mij mag je een tabelnaam trouwens niet in backquotes zetten. Anders doe ff makkelijk; upload phpmyadmin, selecteer die tabel, klik op "export" vink het hokje "if not exists" aan, vink het hokje "export data" uit, en klik op "spuug" (lees: export). Daar 1 regel van maken, vervolgens testen of het werkt en zo ja in script bouwen.

En om dat probleem van Okke op te lossen doe je "DESCRIBE tabelnaam" NA het aanmaken om te kijken of het gelukt is, dan krijg je wel een error als die niet bestaat.

[ Voor 20% gewijzigd door xces op 18-01-2006 15:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OkkE schreef op woensdag 18 januari 2006 @ 15:20:Waar ik zo als eerste aan denk:

Op regel 8 wordt de tabel gemaakt wanneer deze niet bestaat. Echter, omdat er geen die(); achter staat, zal er geen error in beeld komen. Als je dus als MySQL-gebruiker geen rechten hebt om nieuwe tabellen te maken, zal er geen tabel gemaakt worden. Er komt alleen ook geen melding, en hij gaat gewoon door. Dan blijkt ergens anders dat de tabel niet bestaat, en krijg je de error die je post.
Eigenlijk staat die or die(mysql_error()); er wel achter. Misschien foutje tijdens plaatsen van dit bericht.
xces schreef op woensdag 18 januari 2006 @ 15:25:
dus het volgende:
code:
1
mysql_query("CREATE TABLE IF NOT EXISTS `".$dbasetable."` (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,`user` TEXT NOT NULL ,`message` TEXT NOT NULL ) TYPE = innodb") or die(mysql_error());
That works! (met error erachter).... Bedankt! Stom dat ik werkelijk uren gezocht heb om dit op te lossen terwijl het zo simpel is :/.

[ Voor 28% gewijzigd door Verwijderd op 18-01-2006 15:40 ]

Pagina: 1