0

PHP と MySQL を使用して、ネストされたリストまたはマルチレベルのリストを作成するだけです。これにすべての顧客を表示し、次に各顧客に関連するすべての電話番号を表示するにはどうすればよいですか。

例えば:

ジョン

555 555-5555

666 666-6666

クリステン

777 777-7777

エイミー

888 888-8888

999 999-9999

222 222-2222

<?php
$result = mysqli_query($dbc,"
SELECT 
fname,
phone
FROM 
customer,
phone,
customer_phone
WHERE
customer.id=customer_phone.customer_id
AND
phone.id=customer_phone.phone_id
");
while($row = mysqli_fetch_array($result))
{
echo $row['fname'];
echo "<br />";
echo $row['phone'];
echo "<br />";
}
?>
4

2 に答える 2

0

私は顧客クラスを行います。こうすることで、電話や名前だけでなく、より多くの情報を保存できます。

class Customer {
   public $phone = array();
   public $name = '';
}
while($row = mysqli_fetch_array($result))
{
$customerList[$row['fname']] = new Customer;
$customerList[$row['fname']]->name = $row['fname'];
array_push($customerList[$row['fname']]->phone, $row['phone'])
}

ただし、他に保存したいものがない場合は、キーが顧客名で値が顧客の電話の配列である単純な配列を実行することもできます。

于 2013-03-21T01:53:28.683 に答える
0

名前の順序と、名前が最初に表示されたときにのみ印刷する方法を確認してください。また、「on」句を使用して適切に参加する方法を学びます。

<?php
$result = mysqli_query($dbc,"
SELECT fname, phone
FROM customer
join customer_phone on customer.id=customer_phone.customer_id
join phone on customer_phone.phone_id=phone.id
order by fname
");
$oldname = null;
while($row = mysqli_fetch_array($result))
{
    if($oldname != $row['fname'])
    {
        echo $row['fname']."<br>";
        $oldname = $row['fname'];
    }
    echo $row['phone']."<br>";
}
?>
于 2013-03-21T01:50:11.050 に答える