2015-11-20 77 views
1

我在网上获得这行,并刚刚创建了一个函数名称。 问题是:它不再工作,我不知道为什么,已经尝试过但没有任何东西。有人能帮助我吗?如何将一些PHP行转换为函数和调用?

代码:

<?php 
    require 'PDOClasses/connection.php'; 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 

    function ShowCategories() { 
     $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC"); 
     $option = ''; 
     while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
      $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>'; 
     } 
    } 
?> 

这是我习惯叫:

<select id="category" name="category" tabindex="16" required> 
    <?php echo $option; ?> 
</select> 

这是我怎么现在打电话:

<select id="category" name="category" tabindex="16" required> 
    <?php ShowCategories(); ?> 
</select> 

回答

3

你既不返回值里面的功能或回声它。像这样做

function ShowCategories() { 
     $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC"); 
     $option = ''; 
     while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
      $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>'; 
     } 
     return $option; 
    } 

然后同时呼吁

<select id="category" name="category" tabindex="16" required> 
    <?php echo ShowCategories(); ?> 
</select> 

,或者你可以直接呼应函数内$option itself.Like

echo $options; 

没有返回它的。

+0

在这两种情况下,它不工作添加回声$选项:/ – user3310429

+0

@ user3310429他的解决方案适用于我,你收到任何错误? –

+0

请检查ShowCategories()函数,无论它是否获取数据表单数据库。 – Pradeepta

2

这里的问题是您不打印内容到HTML页面。所以 你在生成HTML字符串后你将需要echo这个字符串。

您的代码将如下所示。

<?php 
function ShowCategories() { 
     $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC"); 
     $option = '<option value=''>--Please select--</option>'; 
     while($row = $query->fetch(PDO::FETCH_ASSOC)) { 
      $option .= '<option value = "'.$row['id'].'">'.$row['name'].'</option>'; 
     } 
     echo $option; 
    } 
?> 

在HTML中,现在您可以使用现有的语法。

<select id="category" name="category" tabindex="16" required> 
 
    <?php ShowCategories(); ?> 
 
</select>

+0

上面的助手相同的错误 – user3310429

+1

对不起,我错过了我在html部分使用echo语句。我的道歉。 –

+0

发生@Pratik Soni。但它更好地返回函数内部并在调用时回显它。 – Pradeepta

1

它是这样工作

<?php 
    function ShowCategories() { 
     require 'PDOClasses/connection.php'; 
     error_reporting(E_ALL); 
     ini_set('display_errors', 1); 
     $query = $db->query("SELECT id, name FROM categories ORDER BY name ASC"); 
     $option = '<option value="">Selecione uma categoria</option>'; 
     while($category = $query->fetch(PDO::FETCH_ASSOC)) { 
      $option .= '<option value = "'.$category['id'].'">'.$category['name'].'</option>'; 
     } 
     echo $option; 
    } 
<?php ShowCategories(); ?> 
+0

是的,这将工作正常,但作出小chnages。 – Pradeepta

+0

哪些变化? – user3310429

+0

是的,但不会在while循环内回显,而是在回路外回显,如果您在那里回显,请在回拨时删除回显。 – Pradeepta

2

$ DB在你的函数是不确定的。无论是把它作为一个参数或使用“全球”

,并最终

+0

是的,你是对的。更好的做法是将连接作为全局或者传递给函数作为参数,而不是在函数内部创建连接。 – Pradeepta