PHP/MySQL

Skapa nya tabeller

Ibland när informationsmängden ökar behöver man dynamiskt bygga ut sin databas. Ibland räcker det att lägga till nya rader i redan befintliga tabeller men ibland måste man även skapa nya tabeller.

Anta att något händer som gör att databasen måste utökas med en tabell. Det är för krångligt för en vanlig datoranvändare att göra detta direkt i databasen vid behov, men även denna del kan skötas från PHP och vårt användargränssnitt.

Tänk er nu situationen att Nike får valpar och hennes matte vill lägga upp en tabell för varje valp för att hålla reda på lite saker som ska ligga på webbsidan. Webbmastern hade som tur var tänkt på att den här situationen skulle kunna uppkomma och hade redan skapat php-kod för detta. Kopplat till ett formulär som användarn kan skicka med numret på valpen finns denna "enkla kod".

	$connection = mysql_connect ("localhost", "nike", "password") 
	or die ("Error connecting to SQL server --> " . 
		mysql_errormessage($connection));
	
	mysql_select_db("nike");

	$nr = $_POST['nr'];	

	$tableName = "puppy_" . $nr;
	$query = "create table " . $tableName . "
				(
				id int auto_increment primary key,
				name text, 
				birthdate date, 
				color text)";
				
				
	$result = mysql_query($query, $connection) 
				    or die("Invalid query: " . mysql_error());
			    
			

Det som händer när vi skickar formuläret till följande sida är att variabeln $nr läses in varpå variabeln $tableName skapas. Denna utgör namnet på den tabell som kommer att skapas och fås genom att sätta ihop strängen "puppy_" med det värde som användaren skickade in via formuläret. Variabeln får till exempel värdet puppy_1 om användaren skickat med värdet "1". I frågan till databasen anänds sedan variabeln $tableName.

Koden som inte ser värst skrämmande ut utför bara en fråga till databasen, nämligen att lägga till den efterfrågade tabellen. Det görs på precis samma sätt som om ett annat gränssnitt till databasen hade använts. För att veta mer om hur man skapar tabeller behöver du bara lära dig om databaser och MySQL i synnerhet, men den här introduktionen till PHP och MySQL kommer inte att gå djupare in på det.