2013-07-10 1 views
0

상점에있는 항목과 같은 각 항목에 대한 정보를 표시하려고합니다.foreach를 통해 mysqli_fetch_array를 사용하여 가져온 배열 코드에 항목 ID를 통해 항목 정보를 추가하는 방법은 무엇입니까?

과 같이 :

사용자는 foreach 문에 mysqli_fetch_array

통해 foreach 문에서 액세스 코드 1234 쇼가있는 경우 : 1234 감지하고 내가 항목 정보를 원하시면 테이블이 해당 항목

에 대한 정보를 보여줍니다 user_id를 통해 사용자에게 연결하는 사용자 액세스 코드에 대한 테이블

: 기존 항목 번호/접속 번호와 각 항목에 대한 정보를 잡기 위해 시도

if (isset($_SESSION['user_login'])) { 
$access_query = mysqli_query($connection, "SELECT access FROM user_access WHERE user_id = '$user_id'"); 
$access_codes = Array(); 
while ($row = mysqli_fetch_array($access_query,MYSQL_BOTH)) { 
    $access_codes[] = $row['access']; 
} 
} 

: mysqli_fetch_array를 통해 배열/코드를 가져 오는에 대한

:이 시도하기 위해이


현재 코드

if (isset($_SESSION['user_login'])) { 
    $info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id = '$access_codes'") or die (mysqli_error($connection)); 
    $info_assoc = mysqli_fetch_assoc($info_query); 
    $info_info = $info_assoc['info_id']; 
} 

foreach :

foreach ($access_codes as $item_id) { 


$item_id = $item_info; 

?> 

<div style="background-color: #F2F2F2; border: 1px #E3E3E3 solid; padding: 20px; margin: 5px; width: 150px; float: left;"><?php echo $item_id;?></div> 


<?php 

} 
?> 

각 항목의 스타일을 표시하지만 아무 것도 표시하지 않습니다. 아이템이 있고 그 중 몇 개만 스타일 안에 아무것도 표시하지 않는다는 것을 알고 있습니다.

+0

$info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id = '$access_codes'") or die (mysqli_error($connection)); 

에서 변경할 수 있습니까? 코드에서 실제로 어떻게 보이는지 업데이트 할 수 있습니까? – Sean

+0

여기 : http://demo.php-pastebin.com/ykk6pdKI 비록 몇 가지 일을 시도해 보았습니다. – kmkmkm

답변

0

나는 당신이 JOIN 쿼리 할 경우 단순히 모든 코드를 수 있다고 생각 - 액세스 =의 ITEM_ID에 item_info 테이블과 함께 당신의 user_access 테이블을

SELECT i.* 
FROM user_access a 
LEFT JOIN item_info i 
ON i.item_id = a.access 
WHERE a.user_id = '$user_id' 

이 조인을하고, USER_ID은 로그인 한 사용자된다.

는 다음 코드를 줄일 수있다 -

if (isset($_SESSION['user_login'])) { 
    $info_query = mysqli_query($connection, "SELECT i.* FROM user_access a LEFT JOIN item_info i ON i.item_id = a.access WHERE a.user_id = '$user_id'"); 
    while ($row = mysqli_fetch_assoc($info_query)) { ?> 
      <div style="background-color: #F2F2F2; border: 1px #E3E3E3 solid; padding: 20px; margin: 5px; width: 150px; float: left;"><?php echo $row['vid_id']; ?></div> 
    <?php } 
} 
1
당신은 $item_id 가치를 일으키는 $item_id
이 줄 $item_id = $vid_info;$vid_info를 할당하는

이 삭제 될 수 있습니다.

$item_id = $item_info; 동일한 일을합니다.

+0

"vid"를 "항목"으로 변경하여 외부 시청자가 더 쉽게 이해할 수있게했습니다. 나는 그것을 고쳐 줄 것이다. – kmkmkm

+1

@ 존 당신은 여전히 ​​당신이'foreach ($ access_codes as $ item_id)'에 정의한'$ item_id'를 덮어 씁니다.당신이'$ vid_info' 또는'$ item_info'로 설정했는지 여부는 중요하지 않습니다. 여전히'$ access_codes' 값을 덮어 씁니다 – Sean

0

나는 (당신이 varible 이름 $ access_codes를 사용하기 때문에) 당신이하여 여러개의 액세스 코드를 가지고 있다고 생각, 당신은 같음을 ITEM_ID하는 $ info_query에서 여러 $의 info_info를 얻을하고자하는 액세스 코드. 과 관련하여 다음 코드 샘플 3은 그런 경우에는
,

$s_access_codes = implode(',', $access_codes); 
$info_query = mysqli_query($connection, "SELECT * FROM item_info WHERE item_id in ($s_access_codes)") or die (mysqli_error($connection)); 
관련 문제