2013-06-15 2 views
0

[код]Добавление данных MySQL с PHP в гармошку

<?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, чтобы быть строкой, ресурс приведены в C: \ XAMPP \ HTDOCS \ test.php в строке 14

Внимание: ucfirst() ожидает параметр 1, чтобы быть строкой, ресурс приведены в C: \ XAMPP \ HTDOCS \ test.php в строке 49

Если я поместил имена из массива, как бы получить имена в аккордеоне?

+0

Вы можете продолжить обсуждение здесь http://stackoverflow.com/questions/17126829/adding-mysql-data-with-php-into-an-accordion – jospratik

ответ

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 

Кроме того, вы предпочитаете использовать в качестве PDO mysql_ * является устаревшим, так как 5.3. Посмотрите об этом there.

+0

Вы можете показать мне пример @ Thomas – MethodManX

+0

@ Thomas and как бы я использовал это, чтобы добавить контент в аккордеан по буквам. – MethodManX

+2

Используйте свой мозг, попробуйте что-нибудь, я не буду делать домашнее задание. –

0

mysql_query() Функция запускает инструкцию SQL и (если это оператор SELECT) возвращает результат. Вы должны обработать этот результат с помощью подходящей функции, например mysql_fetch_array() или 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_* устарел.

Смежные вопросы