login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Create database form

Offline coLd - 21/08/2011 23:44
Avatar van coLdLid Ik ben zeg maar bezig met een script om een database te creëren buiten me phpmyadmin page maar ik krijg het niet werkend.

Ik heb de volgende code

  1. // Dit heb ik boven mijn header
  2. <?php
  3. include ('actions/dbconnection.php'); // include database connectie
  4.  
  5. if ($_POST['dbcreate'])
  6. {
  7. $dbname = $_POST["dbname"]; // database naam statement
  8. $dbproporties = $_POST["dbproporties"]; // eigenschap database statement
  9. if ( !empty($dbname) && !empty($dbproporties)) {
  10. (mysql_query("CREATE DATABASE ('$_POST[dbname]')",$dbcon)); // Create database, connectie maken met mysql server
  11. }
  12. else {
  13. $error = true;
  14. }
  15. }
  16. ?>


Hierzo maakt die de actie in de formulier en wil ik dat die een error plaatst als die er is.

  1. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  2. <?php
  3. if ( $error && empty($dbname) ) {
  4. echo "<div class=\"error-create-database\">\n";
  5. echo "<p>Vul een database naam in.</p>\n";
  6. echo "</div>\n";
  7. }
  8. ?>
  9. <label for="field1">Naam:</label><input type="text" id="dbname" value="<?php $dbname; ?>" name="dbname" class="input-1"/>
  10. <?php
  11. if ( $error && empty($dbproporties) ) {
  12. echo "<div class=\"error-create-database\">\n";
  13. echo "<p>U bent vergeten de eigenschappen toe te voegen.</p>\n";
  14. echo "</div>\n";
  15. }
  16. ?>
  17. <label for="field2">Eigenschappen:</label> <input type="text" id="dbproporties" value="<?php $dbproporties; ?>" name="dbproporties" class="input-1"/>
  18. </div>
  19. <div class="create-database">
  20. <input type="submit" name="dbcreate" value="Create" id="Create"/>
  21. </div>
  22. </form>


Alvast bedankt.

2 antwoorden

Gesponsorde links
Offline FrankL - 22/08/2011 00:27 (laatste wijziging 22/08/2011 00:39)
Avatar van FrankL Lid
  1. // Dit heb ik boven mijn header
  2. <?php
  3. include ('actions/dbconnection.php'); // include database connectie
  4.  
  5. if ($_POST['dbcreate'])
  6. {
  7. $dbname = $_POST["dbname"]; // database naam statement
  8. $dbproporties = $_POST["dbproporties"]; // eigenschap database statement
  9. if ( !empty($dbname) && !empty($dbproporties)) {
  10. (mysql_query("CREATE DATABASE $dbname",$dbcon)); // Create database, connectie maken met mysql server
  11. }
  12. else {
  13. $error = true;
  14. }
  15. }
  16. ?>


Probeer het zo eens. Immers je defineert $dbname als $_POST["dbname"], dan is het sowieso makkelijker om ook die te gebruiken.

edit:
En de haakjes zijn er niet nodig;)

Zie anders ook deze link http://www.htmlite.com/mysql005.php
Offline MiST - 22/08/2011 01:22 (laatste wijziging 22/08/2011 01:26)
Avatar van MiST Lid 1) waarom steek je dbname in een variabele als je daarna toch weer $_POST['dbname'] (moet met apostrofs/quotes zijn) gebruikt?
2) als je niet meer dan 1 connectie hebt, hoef je dbconn niet mee te geven aan je query.
3) plaats achter je mysql_query 'or die(mysql_error())' zodat je toch tenminste weet WAT er fout gaat Of gebruik een gewone if lus. Als mysql_query faalt, geeft dit een boolean FALSE terug. Check de PHP manual.
4) kijk na of de gebruiker die de database aanmaakt rechten heeft om een database aan te maken.
5) Check ook de syntax voor je query. Jij doet "CREATE DATABASE ('<dbname>')" terwijl de syntax is zoals hierboven al getoond: "CREATE DATABASE <dbname>;" De code van FrankL is wel potentieel schadelijk. Stel dat je zou invullen "tabel; DROP TABLE users" In dat geval, ben je je user tabel kwijt, veronderstellende dat die tabel users heet. Maar dit kan met eender welke naam. Escape dus altijd je argumenten in een query.

Succes!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s