2012-04-17 2 views
0

탐색 항목을 다시 정렬하는 시스템이 있습니다.배열이 데이터를 보유하고 있지 않습니다.

새로운 순서를 배열에 저장 한 다음 for 루프를 사용하여 배열을 탐색하고 데이터베이스를 업데이트합니다.

<?php 
$apageid = array(); 
$apagename = array(); 
$apageorder = array(); 

$q = "SELECT g.id, g.title, n.order FROM tbl_general g INNER JOIN tbl_navigation n ON n.pageid = g.id WHERE n.type = '$_SESSION[parent]' ORDER BY n.order"; 
$return = $database->query($q); 
while($row=mysql_fetch_assoc($return)){ 
    $apageid[] = $row['id']; 
    $apagename[] = $row['title']; 
    $apageorder[] = $row['order']; 
} 

$count = count($apageid); 
$bpageid = array(); 
$bpageorder = array(); 
?> 
<div class="form-holder"> 
<?php 

//run through each page one at a time and update the order of the menu 
mysql_data_seek($return, 0); //reset the pointer to do the same query 
$i = 0; //the count for saving the new configuration 
while($row=mysql_fetch_assoc($return)){ 

    $id = $row['id']; 
    $title = $row['title']; 
    $order = $row['order']; 
    ?> 
    <div class="form-row"> 
     <div class="form-label"> 
      Page Name 
     </div> 
     <div class="form-field"> 
      <select class="select-small" name="<?php echo $bpageid[$i]; ?>"> 
       <?php 
       for($j=0; $j<$count; $j++){ 
        if($apageid[$j] == $id) { 
         $selected = true; 
        } else { 
         $selected = false; 
        } 
        ?> 
        <option value="<?php echo $apageid[$j]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apagename[$j]; ?></option> 
        <?php 
       } 
       ?> 
      </select> 
      <select class="select-small" name="<?php echo $bpageorder[$i]; ?>"> 
       <?php 
       for($k=0; $k<$count; $k++){ 
        if($apageorder[$k] == $order) { 
         $selected = true; 
        } else { 
         $selected = false; 
        } 
        ?> 
        <option value="<?php echo $apageorder[$k]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apageorder[$k]; ?></option> 
        <?php 
       } 
       ?> 
      </select> 
     </div> 
    </div> 
    <?php 
    $i++; 
} 
?> 

첫 번째 청크는 항목을 재정렬 할 수있는 메뉴입니다.

처음에는 현재 선택을로드하고 사용자가 순서를 변경할 수 있습니다.

function reorderChildren($pageid, $pageorder){ 
    global $database; 

    $count = count($pageid); 
    //run through each page one at a time and update the order of the menu 
    for($i=0; $i<$count; $i++){ 
     //set a few variables 
     $pid = $pageid[$i]; 
     $porder = $pageorder[$i]; 
     echo "pid = $pid porder = $porder"; 
     $q = "UPDATE tbl_navigation SET order = '$porder' WHERE pageid = '$pid' AND type = '$_SESSION[parent]'"; 
     $database->query($q); 
    } 
    return 0; 
} 

정보가 여기에 전달되고 정보가 for 루프 인 것으로 나타납니다.

누구나 볼 수 있습니까?

사용 된 이름이 아니므로 확인했습니다.

배열에 정보를 올바르게 저장하고 있습니까?

정보를 전달하는 배열 인 $bpageid$bpageorder이라는 정보를 명확하게 표시 할 수 있습니까?

감사합니다.

+0

나는 100 % 확실하지 않지만 [이것을 보길 원할지도 모른다] (http://bobby-tables.com/). – Bobby

+0

보안 양식이며 관리자 만 액세스 할 수 있습니다. – sark9012

답변

0

당신은 loop.No 값은 그 후

를 할당하는 동안 먼저

<select class="select-small" name="<?php echo $bpageid[$i]; ?>"> 

사용 후 상단에 $bpageid = array();을 initilized했지만 값 때문에이 선택 상자의 이름이 비어 $bpageid[$i]에 없습니다.

문제 일 수 있습니다. 이를 확인하고 필요한대로 수행하십시오.

+0

이렇게 할 수있는 다른 방법을 제안 할 수 있습니까? select 요소의 값을 저장하고 전달하는 방법을 찾으려고합니다. 선택 값의 양은 현재 추가 된 수에 따라 다르지만 변경됩니다. – sark9012

0

당신은 select 요소의 옵션에서 json을 생성하여 숨겨진 필드에 저장하거나 처리를 위해 PHP 스크립트에 아약스 요청을 보내려고 할 수 있습니다. 주문은 "weight"값 1,2,3 등으로 만들 수 있습니다. .... PHP와 루프를 정렬하고 표시하기 위해

+0

나는 당신이 무엇을 제안하고 있는지 정말로 이해하지 못한다. JSON에 대해 잘 알지 못합니다! – sark9012

+0

www.w3schools.com/json/json_intro.asp json의 예제 인 json_decode()는 PHP에서 사용하기 위해 JSON 문자열을 디코딩하는 PHP 함수입니다. – Gntem

+0

다음과 같이 보겠습니다. 감사. – sark9012

1

간단한 수정이었습니다! 문제는 select 이름이 위에 나열된 이름이 아니라 name = "bpageid []"일 필요가 있다는 것입니다. 바보!

관련 문제