2013-11-25 2 views
-1

는이 코드가 있습니다생성 된 옵션의 PHP 배열?

$prod = ""; 
$vys = mysqli_query($db,"SELECT * FROM products ORDER BY name"); 
while ($arr = mysqli_fetch_assoc($vys)) { 
    $prod .= "<option value='".$arr['id_produktu']."'>".$arr['nazev']."</option>";    
} 

을 나는 모든 배열 필드가 ID_TYPE 중 하나입니다이 옵션의 배열을 갖고 싶어. 하지만 루프에서 루프를 사용하여 약간 무서워 :(그것은 기술적으로 같을 것이다 :

$prod = ""; 
    $types = mysqli_query($db,"SELECT id_type FROM products"); 
    while ($ts = mysqli_fetch_assoc($types)) { 
     $res = mysqli_query($db,"SELECT * FROM products WHERE id_type=$ts['id_type'] ORDER BY name"); 
     while ($arr = mysqli_fetch_assoc($res)) { 
      $prod[$arr['id_type']] = "<option value='".$arr['id_produktu']."'>".$arr['nazev']."</option>";    
     } 
    } 

그래서 나중에 (눌러 진 버튼 값을 통해) 호출 ID_TYPE 값에 따라 옵션의 정확한 배열 할 수 있습니다. 이와 같이 (사용 JS) :

<script type=\"text/javascript\"> 
function setContent(divName, type){ 
      var newdiv = document.createElement('div'); 
      newdiv.innerHTML = \"<select name=idp[]>$prod[type]</select>\"; 
      document.getElementById(divName).appendChild(newdiv); 
} 

당신이 루프에서 루프를 사용하지 않고 가능하다고 생각하십니까)는 u는 하나 개의 루프를해야 할 것 같다 당신 :

+0

루프 외부의 모든 쿼리 결과를 하나의 조인 요청으로 가져온 다음받은 배열로 넘어갑니다. 루프에서 쿼리를 사용하는 것은 ** 항상 ** 나쁜 생각입니다. – Peon

+3

"루프에서 루프를 사용하지 않고 가능하다고 생각하십니까? *"... 예, INNER JOIN이라고합니다. 표준 SQL 구문. [웹상의 예] (https://duckduckgo.com/?q=mysql+inner+join). – Spudley

+0

@DainisAbols : 루프 (mysql_fetch_assoc)없이 MySQL 결과를 처리 할 수 ​​있다고 생각하지 않습니다. ( – user3019672

답변

1
$prod = array(); 
$vys = mysqli_query($db,"SELECT * FROM products ORDER BY name"); 
while ($arr = mysqli_fetch_assoc($vys)) { 
    $prod[$arr['id_type']][] = "<option value='".$arr['id_produktu']."'>".$arr['nazev']."</option>";    
} 

에 야기하는 것은 의미가 없다.

나중에 문자열처럼 사용하려면 내삽해야합니다.

echo implode(' ', $prod['some type']); 
+0

감사합니다 VG,하지만 JS에서 문자열 변환 문제가 배열 아닌가요? function setContent (divName, type) { .. newdiv.innerHTML = \ " \"; .. – user3019672

+0

내 대답의 두 번째 코드 블록을 참조하십시오. implode를 사용하면 문자열을 반환합니다. –

+0

감사합니다 VG,하지만 AJAX를 사용하지 않고 JavaScript에 PHP 코드를 삽입하는 방법을 찾지 못했습니다. ( function setContent (divName, type) { var newdiv = document.createElement ('div'); newdiv. innerHTML =document.getElementById (divName) .appendChild (newdiv); } "" " – user3019672

1

감사

?

및 따를 않는 두 querys 지금 자극 옵션의 배열이 제품을 포함이며, 같은 테이블 products

$types = mysqli_query($db,"SELECT id_type FROM products"); 
+0

Thx하지만 이미 "기록 된"유형의 신제품을 얻을 때마다 $ prod [ 'id_type']의 값을 대체하지 않습니까? 또는 "문자열"을 현재 "문자열"에 추가합니까? :) 고마워요 :) – user3019672

+0

당신은 다른 레코드가 동일한 id_type을 가지고 있다는 것을 의미합니까? – Patato

+0

예, 그게 바로 빵과 롤은 id_type = 1이고 콜라는 id_type = 2;) – user3019672