0

[代码]

<?php
mysql_connect("","","") or die("Could not connect to localhost");
mysql_select_db("") or die( "Could not connect to database");

$names[] = mysql_query("SELECT * FROM list ORDER BY name ASC");

// The list wasn't sorted, if you don't want sorting you can just remove this line.
asort($names);

// Prepare list for accordion.
$accordionData = [];
foreach($names as $name) {
  $accordionData[substr($name, 0, 1)][] = $name;
}

?>
<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Accordion - Collapse content</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    $( "#accordion" ).accordion({
      collapsible: true,
      active: false
    });
  });
  </script>
</head>
<body>
<div id="accordion">
<?php
// Print accordion, change the echoes to reflect your accordion html.
foreach($accordionData as $index => $names) {
?>

  <h3><?php echo strtoupper($index); ?></h3>
  <div>
  <?php
  foreach($names as $name) {
  ?>
    <p><?php echo ucfirst($name); ?></p>
  <?php
  }
  ?>
  </div>
  <?php
}
?>
</div>

我收到两个错误:

警告:substr() 期望参数 1 是字符串,资源在第 14 行的 C:\xampp\htdocs\test.php 中给出

警告:ucfirst() 期望参数 1 是字符串,资源在 C:\xampp\htdocs\test.php 第 49 行给出

如果我将名称从数组中取出,我将如何将名称放入手风琴?

4

2 回答 2

0

使用mysql_fetch_*函数来处理 mysql_query 返回的资源。

$qry = mysql_query("SELECT * FROM list ORDER BY name ASC");

while ($data = mysql_fetch_assoc($qry))
  echo $data['name']; // contains list.name from your db

此外,您更喜欢使用PDOmysql_* 自 5.3 以来已弃用。看看那里

于 2013-06-15T18:45:15.550 回答
0

mysql_query()函数运行一条 SQL 语句并(如果这是一条SELECT语句)返回一个结果。您必须使用合适的函数(如mysql_fetch_array()or )处理此结果mysql_fetch_assoc()

$result = mysql_query("SELECT * FROM list ORDER BY name ASC");

$names = mysql_fetch_assoc($result);

然后在循环 ( )中使用$names带有字段键的数组。while例如,$names["name"]获取当前行的名称字段值。

<div id="accordion">
    <?php
        // Print accordion, change the echoes to reflect your accordion html.
        while($names = mysql_fetch_assoc($result))
        {
            echo "<h3>" . substr(strtoupper($names["name"]),0,1) . "</h3>";
            //first letter of the name
            echo "<div>";

            foreach($names as $name) 
            {
                echo  "<p>" . ucfirst($name) . "</p>";
            }
            echo "</div>";
        }
    ?>
</div>

是的,我们知道mysql_*已弃用。

于 2013-06-15T18:48:20.533 回答