2009-12-07 3 views
0

Пожалуйста, со мной, пока я пытаюсь объяснить свой вопрос. У меня есть база данных Sqlite, в которой есть таблица, состоящая из информации о компании (компании) и таблицы, содержащей информацию о продукте (Продукты). Идентификатор таблицы компаний - Company_Name. Он объединяется с таблицей Products by Company_Name. Например, компания «А» может иметь много продуктов, связанных с ней, через внутреннее объединение компаний на Company_Name = ProductID (ProductID состоит из названий компаний).Получение и представление SQL записей в таблице записей с помощью PHP, Sqlite (или MySql) и HTML

Я пытаюсь отобразить эту информацию, используя цикл php while, чтобы был список компаний с их соответствующими продуктами. Я не могу понять, как это сделать. Я могу создавать одиночные записи, например, одну компанию с одним продуктом, но я не могу перечислить одну компанию с несколькими продуктами. Вот, что я пытаюсь достичь:

Компания "А" - место CA продукт 1, продукт 2, продукт 3

Компания "C" - место CA продукт 3, продукт 4, продукт 6

Компания "F" - место CA продукт 1, продукт 8

в этом примере запрос будет тянуть все компании в Калифорнии (CA).

Мой код выглядит следующим образом, но это не работает:

//srchtext is the value in a HTML text box// 
$txt = $_GET["srchtext"]; 
$dbstate = @$db->query("SELECT Company.Company_Name, Company.Company_City, Company.Company_State, Company.Company_Website, Company.Company_Service, Categories.Category_Name, Products.Product_Name FROM Company INNER JOIN Products On Company_Name = ProductID WHERE Company_State = '$txt'"); 
while ($hmstate = $dbstate->fetchArray()){ 
echo "<ul>"; 
echo "<font id='srchclr'; color='#666666';>"; 
echo '<strong>'.$hmstate['Company_Name'].'</strong>'.'<br>'.$hmstate['Company_City'].','.$hmstate['Company_State'].'<br>'. 
'<a href='.$hmstate['Company_Website'].'>'.$hmstate['Company_Website'].'</a>'.'<br>'.'<ul>'. 
'<br>'.'<strong>Products or Services Provided by this Company:</strong>'.'<br>'.'<br>'.'<ul>'.$hmstate['Company_Service'].'</ul>'; 
echo "<br>"; 
echo "<strong>Company Product Category:</strong>"; 
echo "<br>"; 
echo "<br>"; 
    //Product loop// 
    While ($hmstate = $dbstate->fetchArray()) { 
    echo "<ul>"; 
    echo $hmstate['Product_Name']; 
    echo "</ul>"; 
    } 
} 

В принципе, мой код дает мне одну компанию в Калифорнии и перечисляются все продукты, связанные со всеми компаниями в Калифорнии:

компании «A» - местонахождение CA продукт 1, продукт 2, продукт 3, продукт 3, продукт 4, продукт 6, продукт 1, продукт 8

Я попытался вынуть второй php «while loop», однако я бы получил следующие:

Компания "А" - место CA Продукт 1

Компания "А" - место CA Продукт 2

Компания "А" - место CA Продукт 3 ...

Хотя Я использую Sqlite, если у кого-то есть пример в MySql или любом другом sql Db, это действительно помогло бы. Я думаю, что моя проблема связана с запросом и php «while loop».

Я очень ценю вашу помощь.

Спасибо,

DFM

ответ

1

Ваш продукт во время петлевой выборки всех продуктов, потому что вы не «перерыва», когда изменения Company_Name.

Мой PHP не очень хорошо, но, возможно, что-то вроде этого:

. 
. 
(Your company PHP code here) 
. 
. 

//Product loop// 
if ($hmstate = $dbstate->fetchArray()) { 
$fetch_okay = true; 
$Current_Company_name = $hmstate['Company_Name']; 
$same_Company = true; 
} 

While (fetch_okay && same_Company) { 
    echo "<ul>"; 
    echo $hmstate['Product_Name']; 
    echo "</ul>"; 

    $fetch_okay = false; 
    $same_Company_Name = false; 
    if ($hmstate = $dbstate->fetchArray()) { 
    $fetch_okay = true; 
    if ($hmstate['Company_Name'] = $current_Company_name) { 
     $same_Company_Name = true; 
    } 
    } 
} 
+0

Здравствуйте Sigersted - Спасибо за помощь. Мне еще не удалось заставить код работать, но вы указали мне в правильном направлении. – user175328