CREATE DATABASE met $_POST

Status
Niet open voor verdere reacties.

Twanno5483

Gebruiker
Lid geworden
1 mrt 2009
Berichten
74
Hoi Allemaal,

Het is de bedoeling dat ik via een combobox een waarde selecteer die ik via een $_POST functie een database laat aanmaken. Mijn script ziet er zo uit.
PHP:
// Database informatie
$DBServer = "localhost";
$DBname = "busvoorraad";
$DBUser = "*****";
$DBPasswd = "***********";
$tbl_login = "login";
$tbl_admin = "admin";

$con = mysql_connect($DBServer, $DBUser, $DBPasswd);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
if (isset($_POST['bussel']));
   {mysql_query ("CREATE DATABASE '".$_POST['bussel']."'" ) ;
   
   }

?>

Als ik '".$_POST['bussel']."' vervang door bijvoorbeeld test, wordt er wel een database aangemaakt met de naam test.

De waarde wordt door de $_POST functie wel overgenomen. Zoals onderstaand krijg ik mijn waarde wel te zien.

PHP:
Er wordt een database aangemaakt voor kenteken: <?php echo $_POST["bussel"]; ?>!<br />

Waar zit de fout?

Alvast bedankt.
Twanno
 
Laatst bewerkt:
Het is een zeer slecht idee om een database dynamisch te creëren (er zijn uitzonderingen). Op die manier heb je totaal geen controle meer over de structuur en de data. Behalve dat gaan er nog een aantal dingen mis. Je gebruikt een variabele uit een formulier direct in de script zonder enige escape. Via SQL injection kan de database zo worden gedumpt of de structuur worden aangepast.
En als je een script post verwijder van even de username en password voor veiligheid.
 
Ik dacht de gebruikersnaam en wachtwoord al te hebben gemaskeerd, foutje. Is al aangepast. Bedankt.

Heb je dan eventuele suggesties?
Ben net pas bezig met webdevelopment.
 
De vraag is wat je wil doen, waarom zou je dynamisch een database willen maken? [alleen interessant voor clouds of setup scripten]
 
De functie van de site is om de voorraden van de werkbussen bij te houden. Zo wil ik met php en mysql een site maken waar ik d.m.v. een login kan bepalen welke bus gemuteerd wordt.
Het moet natuurlijk ook mogelijk zijn om bussen toe te voegen en te verwijderen.

Met deze script wil ik dus een bus toe voegen aan de hand van een database en in die database de artikelen en categorieën om het overzichtelijk te houden.

Ik hoop dat je hiermee wat kan.

Alvast bedankt

groetjes
Twan
 
Volgens mij is het veiliger om de geposte data eerst door de 'mysql_real_escape_string' functie te halen.
Die verwijderd eventuele hackers aanvallen (SQL injections).

Het script komt er dan als volgt uit te zien;
PHP:
<?php// Database informatie
$DBServer = "localhost";
$DBname = "busvoorraad";
$DBUser = "*****";
$DBPasswd = "***********";
$tbl_login = "login";
$tbl_admin = "admin";
 
$con = mysql_connect($DBServer, $DBUser, $DBPasswd);
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
if (isset($_POST['bussel']));{
    $bussel = mysql_real_escape_string($_POST['bussel']);
    mysql_query ("CREATE DATABASE '".$bussel."'" ) ;
}
 
?>


Groetjes, Remi1995.
 
Waarom maak je steeds een apart database aan?
ik zou een database maken met een table bussen.
Daarin een column met id(auto increment), kenteken bus en actief.
En een table met busgegevens waar je aan de hand van de id van de bus de rest gegevens uit de database kunt halen.

Het lijkt me onlogisch om voor elke bus een database te hebben. Als je 100 bussen hebt dan zit je met 100 databases.
Of moet je voor elke bus duizende gegevens opslaan?
 
OK, dat van die escapestring snap ik, denk ik. ff kijken dat ik dat binnenkort toe pas.

Ik maak voor iedere database een aparte database aan, omdat ik zeker 200 artikelen per bus heb die ook nog eens op categorie worden gesorteerd.
misschien kan ik de voorraadgegevens mij de bus invullen en apart gelinkte velden maken naar de artikel en categorie.

bedankt voor jullie informatie.

Twanno
 
je zou het zo kunnen doen

ID | BusID | Catagorie | Titel | Gegevens | Datum | etc...
 
Ik zeg: normalisatie!
Ga je eerst eens voorbereiden voordat je 'zomaar' een project start, in een voorbereiding was je op onderzoek uit gegaan en had je gezien dat een nieuwe database maken voor elk nieuw object totaal nergens op slaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan