2012-11-19 4 views
0

나는 PHP와 MySQL을 사용하여 독학합니다. 날짜 - - 시간 - 이메일 - 제품 - 나는에 수량 고객이 제품을 구입 때마다 기록 : 나는 다음과 같은 필드를 포함하는 데이터베이스있다 : 내가 이해할 수없는 문제에 직면하고있다 위에 나열된 정보를 데이터베이스에 저장하십시오. (제품 당 한 줄.). 고객이 여러 제품을 동시에 구매하는 경우 날짜, 시간 및 이메일이 동일합니다.PHP-MySQL : 여러 그룹 By 및 while

내 소원 : 동일하면 3 가지 정보로 구입 한 모든 제품의 날짜, 시간 및 전자 메일을 한 줄에 하나의 테이블에 모으겠습니다. 내가 쿼리 사용 : ".

MySQL의 그룹 기록"

내 문제는 다음이다 "그때가있는 테이블에 배포"날짜, 시간, 이메일로 고객 그룹에서 SELECT *를하면서 일 " . 내가 용액으로부터 멀지 않은라고 생각

$query_customer = "SELECT * FROM CLIENT GROUP BY date, hour, email"; 
mysql_query($query_customer) or die('Error customer table '.$query_customer.' <br/>'.mysql_error()); 
$result_customer=mysql_query($query_customer); 

    $row_customer = ''; 
    $name_product = ''; 
    $quantity_product = ''; 

    while($distribution_customer = mysql_fetch_array($result_customer)) 
    { 
    $email = '<span>'.$distribution_customer['email'].'</span>'; 
    $date = $distribution_customer['date'].' at '.$distribution_customer['hour']; 
    $quantity_product .= '(x'.$distribution_customer['quantity'].')'; 
    $name_product .= '<span>'.$distribution_customers['product'].'</br> '.$quantite_produit.'</span>'; 

    $row_customer .= ' 
      <tr> 
       <td>'.$date.'</td> 
       <td>'.$email.'</td> 
       <td>'.$name_product.'</td> 
      </tr> 
     '; 
    } 
     <table> 
     <?php echo $row_customer ?> 
     </table> 

하지만 난의 각도를 찾을 수 없습니다 "시간"제대로 "이메일"하지만, 제품의 표시에 일관성이 여기에

내 코드입니다 어쩌면 누군가가 나를 더 명확하게 볼 수 있도록 도와 줄 수 있습니까? "group_concat"을 사용해야합니까?

통찰력을 가져 주셔서 감사합니다.

+0

'GROUP_CONCAT : 데이터베이스는 4 개 테이블에 포함해야합니다 :

user (id, username, password, email, ...) product (id, productName, productDescription, price, ...) cart (id, user_id, date, totalValue, totalNumberOfItems, delivered, ...) cart_items (id, cart_id, product_id, quantity, ...) 

을 ... 이러한 테이블에서 무언가를 선택하면 다음과 같이 될 것이다 ',하지만 MySQL에서 결과를 정렬하고 PHP에서 결과 집합을 반복 할 때 현재 레코드가 이전 레코드와 동일한 순서에 속하는지 여부를 테스트하는 것이 좋습니다. – eggyal

답변

0

직면 한 문제는 데이터베이스의 정규화 부족 때문입니다. 예 : "username", "password", "email", other user-related columns, "product name", "product description", "product price", other product-related columns, "quantity", "date" etc 필드와 함께 table (작성한 데이터베이스가 아님) 데이터베이스에 많은 중복 정보가 있으면이 데이터를 업데이트해야 할 때 두통이 생길 수 있습니다. 이것은 과장된 예입니다.

데이터베이스에 중복 정보가 표시되지 않게하려면 적어도 3NF가되도록 테이블을 디자인해야합니다 (http://en.wikipedia.org/wiki/Third_normal_form 참조).) (

select * from user, product, cart, cart_items where user.id=cart.user_id and product.id=cart_items.product_id and cart.id=cart_items.cart_id and cart.delivered=0 group by cart.id sort by user.username asc;

감사합니다 당신은 사용할 수

+0

안녕하세요. 너무 빨리 답변 해 주셔서 감사합니다. 당신이 나에게 조언 한 것을 이해하고 생각한 후에 가능한 최소한의 테이블을 원하기 때문에 상류로 코드를보기로 결심했습니다. 따라서 모든 제품을 동일한 셀에 같은 줄에 저장하는 것이 좋습니다. "폭발"PHP는 제가 원하는대로 배포 할 수있게 해줍니다. 대단히 감사합니다. 진심으로 – Fletcher