2014-03-26 25 views
1

我正在创建一个onlineshop,用户将添加一条新记录,方法是输入标题,描述,价格和图像,但我也想将用户的所有TABLES名称的下拉列表中选择它们作为添加产品的类别。 我的数据库的细节是: 数据库名=网上商店如何在下拉列表中列出数据库中的所有表(不是记录)MySQL PHP

connect.php

<?php  
    // Try to connect to MySQL 
    $connect = mysql_connect('localhost','root', '') or die('Sorry could not connect to  database'); 
    // Check connect and return error if failed 
$use_db = mysql_select_db('onlineshop'); 
$create_db = "CREATE DATABASE onlineshop"; 
if(!$use_db) { 
    echo mysql_error(); 
    mysql_query($create_db); 
    mysql_select_db('onlineshop'); 
} 
$con=mysqli_connect('localhost','root', ''); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

// Create database 
$sql="CREATE DATABASE onlineshop"; 
if (mysqli_query($con,$sql)) 
    { 
    echo "Database my_db created successfully"; 
    } 
else 
    { 
    echo "Error creating database: " . mysqli_error($con); 
    } 

//main table 
$sql = 'CREATE TABLE mens('. 
     'id INT NOT NULL AUTO_INCREMENT, '. 
     'title VARCHAR(20) NOT NULL, '. 
     'description VARCHAR(45) NOT NULL, '. 
     'price FLOAT NOT NULL, '. 
     'image varchar(200),'. 
     'image_small varchar(200),'. 
     'primary key (id))'; 

//copy attributes of the main table 
$sql2= 'CREATE TABLE women AS (SELECT * FROM mens where 1=2)'; 
$sql3= 'CREATE TABLE kids AS (SELECT * FROM mens where 1=2)'; 
$sql4= 'CREATE TABLE infants AS (SELECT * FROM mens where 1=2)'; 
$sql5= 'CREATE TABLE baby_books AS (SELECT * FROM mens where 1=2)'; 
$sql6= 'CREATE TABLE garden AS (SELECT * FROM mens where 1=2)'; 
$sql7= 'CREATE TABLE comics AS (SELECT * FROM mens where 1=2)'; 
$sql8= 'CREATE TABLE cooking AS (SELECT * FROM mens where 1=2)'; 
$sql9= 'CREATE TABLE desktop AS (SELECT * FROM mens where 1=2)'; 
$sql10= 'CREATE TABLE laptop AS (SELECT * FROM mens where 1=2)'; 
$sql11= 'CREATE TABLE mobile AS (SELECT * FROM mens where 1=2)'; 
$sql12= 'CREATE TABLE misc AS (SELECT * FROM mens where 1=2)'; 
$sql13= 'CREATE TABLE moviestv AS (SELECT * FROM mens where 1=2)'; 
$sql14= 'CREATE TABLE music AS (SELECT * FROM mens where 1=2)'; 
$sql15= 'CREATE TABLE games AS (SELECT * FROM mens where 1=2)'; 



$retval = mysql_query($sql, $connect); 
$retval2 = mysql_query($sql2, $connect); 
$retval3 = mysql_query($sql3, $connect); 
$retval4 = mysql_query($sql4, $connect); 
$retval5 = mysql_query($sql5, $connect); 
$retval6 = mysql_query($sql6, $connect); 
$retval7 = mysql_query($sql7, $connect); 
$retval8 = mysql_query($sql8, $connect); 
$retval9 = mysql_query($sql9, $connect); 
$retval10 = mysql_query($sql10, $connect); 
$retval11 = mysql_query($sql11, $connect); 
$retval12 = mysql_query($sql12, $connect); 
$retval13 = mysql_query($sql13, $connect); 
$retval14 = mysql_query($sql14, $connect); 
$retval15 = mysql_query($sql15, $connect); 
?> 

dropdown.php

<?php 
$connect = mysql_connect('localhost','root', '') or die('Sorry could not connect to database'); 

function runSQL($sql) 
{ 
    $mysqlConnection = getConnection(); 
    $ResultSet = $mysqlConnection->query($sql); 

    return $ResultSet; 
} 

function getTableList() 
{ 
    $sql = "SHOW TABLES"; 
    $ResultSet = runSQL($sql); 

    if(!$ResultSet) 
    { 
     echo "Table list not found"; 
    } 

    return $ResultSet; 
} 
?> 

索引包含形式以及我发现网上的功能即调用dropdown.php

index.html

<form action="insert.php" method="post"> 
<br> 
<div><label for="title">Title: </label><input type="text" name="title"/></div> 
<div><label for="description">Desc: </label><input type="text" name="description"/></div> 
<div><label for="price">Price: </label><input type="text" name="price" /></div> 
<input type="submit" name="submit" value="Submit"> 
</form> 



<form id="imageform" method="post" enctype="multipart/form-data" action='ajaximage.php'> 
Upload your image <input type="file" name="photoimg" id="photoimg" /> 
</form> 
<div id='preview'> 
</div> 


<?php 
include_once 'dropdown.php'; 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
     <select name="Tables" id="ddTables"> 
      <?php 
       $tableResults = getTableList(); 
       if($tableResults) 
       { 
        if($tableResults->rowCount() > 0) 
        { 
         $tables = $tableResults->fetchAll(PDO::FETCH_NUM); 
         foreach($tables as $table) 
         { 
          $name = $table[0]; 
          echo '<option value="'.$name.'">'.$name.'</option>'; 
         } 
        } 
       } 
       else 
       { 
        echo '<option value="0">No Data</option>'; 
       } 
      ?> 
     </select> 
     <input type="submit" id="tableSubmit" value="Submit"/> 
    </form> 

我得到的是一个空的下拉列表

我真的很新的到PHP,所以请让我知道我的数据库中的任何意见,以及如果你建议我为包括脚本。

我很确定问题是index.html中的getTablesList()函数没有返回任何东西。

开放给任何建议

+0

我们是在谈论了很多表?手动执行它可能不是一个坏主意,以防将来添加一个不想在列表中显示的表。 – Tasos

+0

你是什么意思'手动'? – cmario

+0

手动将它们自己添加到下拉列表中。 – Tasos

回答

0

"SHOW TABLES"查询这是关于如何从PHP.NET

清单表

http://us3.php.net/manual/en/function.mysql-list-tables.php

为例

dropdown.php的index.html

<?php 
    $dbname = 'mysql_dbname'; 

    if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) { 
     echo 'Could not connect to mysql'; 
     exit; 
    } 

    $sql = "SHOW TABLES FROM $dbname"; 
    $result = mysql_query($sql); 

    if (!$result) { 
     echo "DB Error, could not list tables\n"; 
     echo 'MySQL Error: ' . mysql_error(); 
     exit; 
    } 

    while ($row = mysql_fetch_row($result)) { 


    $tables .='<option value="{$row[0]}">{$row[0]}</option>'; 

    } 

    mysql_free_result($result); 
    ?> 

<?php 

include_once 'dropdown.php'; 

?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
<select name="Tables" id="ddTables"> 
<?php 

echo $tables; 

?> 
    </select> 
    <input type="submit" id="tableSubmit" value="Submit"/> 
    </form> 
+0

和我将用于下拉的表单(HTML)? – cmario

+0

我现在可以看到表格,但是以文本格式,我需要将上面的php函数加载到HTML表单中(下拉列表) – cmario

+0

好的一秒让我告诉你另一种方式,它可以用你的代码完成 – Tasos

0

而不是试图运行`SHOW TABLES”,尝试

SELECT * 
FROM information_schema.tables 
WHERE table_schema = 'onlineshop'; 

你将要使用的WHERE子句中的子句限制实际值表是所示。

+0

当我使用 – cmario

+0

时出现错误,出现什么样的错误?这可能是最好的方法 – DdD

0

如果你预先PHP 5.5.0,您可以如果你使用PHP 5.5.0使用mysql_list_tables功能(文档http://us3.php.net/manual/en/function.mysql-list-tables.php

或更高版本,我不知道是否有类似的对于mysqli对象的方法或没有,但你也可以修改"SHOW TABLES FROM $db_name"

+0

当我执行这两种方法时,我会在下拉列表中看到“无数据”字段。可能是什么问题? 没有数据结果在index.html getTableList()函数 – cmario

+0

的语句中列出'rowCount'方法不一定会返回您期望的结果([see here](http://ca2.php。净/手动/ EN/pdostatement.rowcount.php));在一些数据库中,但不是全部。尝试使用['num_rows'](http://us3.php.net/manual/en/function.mysql-num-rows.php)而不是 –

+0

有没有办法修改索引函数的php代码?我不是很满意,我只是想让它更简单 – cmario

相关问题