2010-05-24 4 views
3

나는이 배열을 만드는 방법에 조금 붙어 있습니다.이 배열을 어떻게 만듭니 까? (PHP)

내 데이터 :

category_id | category_name 
    1    bikes 
    2    cars 
    3    books 
    4    computers 

배열 :

$category=array(); 
$query = "SELECT * FROM categories ORDER BY name ASC"; 
$result = $db->query($query); 
$category=array('category_id'=>$category_id, 'category_name'=>$category_name); 
while ($row = $result->fetch_array()){ 
    $category_id=$row['category_id']; 
    $category_name=$row['name']; 
} 

내가 라디오 목록 등의 데이터를 에코 할 수 있도록 배열을 만들려면 ...

<input type='radio' value='<?PHP echo $category['category_id']; ?>' 
name='category[]'><?PHP echo $category['category_name']; ?> 

o bikes 
o cars 
o books 
o computers 

문제는 배열이 한 쌍 (1, 자전거)만으로 구성되며 모든 데이터가 아닌 것입니다. 모든 데이터로 배열을 만들려면 어떻게해야합니까?

감사합니다. 당신이 잘못 세 가지를하고있는

$category=array(); 
$query = "SELECT * FROM categories ORDER BY name ASC"; 
$result = $db->query($query); 
$category=array('category_id'=>$category_id, 'category_name'=>$category_name); 
while ($row = $result->fetch_array()){ 
    $category_id=$row['category_id']; 
    $category_name=$row['name']; 
?> 
<input type='radio' value='<?PHP echo $category['category_id']; ?>' 
name='category[]'><?PHP echo $category['category_name']; ?> 
<?php 
} 

답변

3

먼저 당신이 실제로하지 않은 : 같은 당신에게 단지 첫 번째 행의 기록을 제공하여이 루프의 측면을 울리는 때문이다

+0

당신은 선생님입니다! 고마워, 나는 이런 식으로하려고했지만 foreach 루프에 숨어있다. – jpjp

+0

키가 있으면 array_push를 사용하여이 작업을 수행 할 수 있습니까? 첫 번째 매개 변수는 배열이어야하지만 [category_id]에 있고 [0], [1] 등이 아니길 원한다고 말합니다. – jpjp

+0

구문의 $ categories []는 무엇을 의미합니까? array_push()와 같습니다. –

2

자전거를 예, 당신은 무엇을해야 $ category를 아무 것도 아닌 것으로 설정 - 정의되지 않은 두 개의 값 (기본값은 null). 당신이 그들을 설정 할 때

array('category_id' => null, 'name' => null) 

둘째, 당신은 $ CATEGORY_ID의 가치와 $ CATEGORY_NAME에 아무것도하지 않고있다 : 그래서 당신은 같은 배열로 끝날. 다음으로, 항목별로 항목을 배열하지 않고 배열의 길이가 짧은 다른 문제와 연결된 초기 설정을 출력합니다. 그것은 1 차원이 아닌 2 차원이어야합니다.

이 코드는 모두의 요점을 요약합니다. 필자는 PHP에서 배열이 어떻게 작동하는지 그리고 어떻게 정의하는지에 대해 읽어 볼 것을 제안합니다. 프레임 워크 등에서 매우 일반적으로 사용되는 데이터 유형입니다.

$query = "SELECT * FROM categories ORDER BY name ASC"; 
$result = $db->query($query); 

$categories=array(); 

while ($row = $result->fetch_array()){ 
    $categories[] = array('category_id' => $row['category_id'], 'category_name' => $row['name']); 
} 

은 그럼 당신은 출력을 필요로 할 때 : 물론

foreach ($categories as $category) { 
    ?> 
    <input type='radio' value='<?php echo $category['category_id']; ?>' name='category[]'><?php echo $category['category_name']; ?> 
    <?php 
} 

이 캔은 더 정리 될 수있다.

+0

당신이 할 경우'$는 행 = $에서 그 결과> fetch_array()'다음'$의 row' 배열은 모든 데이터 당신이 경우를 포함 'print_r ($ row);로 확인하십시오. –

+0

@jpjp : 당신은 환영합니다 ......... –

1

배열 $ category가 아닌 $ category_id 및 $ category_name 변수에 할당하므로 쿼리에서 반환 된 첫 번째 행만 표시됩니다.

나는 일반적으로 PDO를 사용하고, 그것을 다음처럼 작성할 수는 :

<?php 
    $db = ... 
    $sql = 'SELECT * FROM categories ORDER BY category_name ASC'; 
    $categories = $db->query($sql); 
?> 

<html> 
<body> 
<? foreach ($categories as $category): ?> 
<input type="radio" name="category[]" value="<?= $category->category_id ?>"> 
    <?= $category->category_name ?> 
</input> 
<? endforeach ?> 
</body> 
</html> 
관련 문제