2011-09-23 2 views
-1

여러 명의 사용자가 로그인하여 이미지를 업로드 할 수있는 하나의 응용 프로그램이 플래시로 있습니다. 사용자 로그인시 사용자가 업로드 한 이미지를 볼 수 있으며 다른 사용자가 업로드 한 이미지 (허용 된 이미지 만 볼 수도 있음)를 볼 수 있습니다. PHP를 통해 XML 파일을 생성하고 있습니다.XML에서 하위 태그 순서를 변경하는 방법 (PHP로 생성)

xml 파일을 확인하십시오.

<images> 
    <users user_name="Hardik"> 
     <image image_id="1316683023140" image_title="water" image_desc="water" image_path="all_users/Hardik/1316683023140.jpg" image_like="false"/> 
     <image image_id="1316683057577" image_title="sunset" image_desc="sunset" image_path="all_users/Hardik/1316683057577.jpg" image_like="false"/> 
     <image image_id="1316683115124" image_title="hills" image_desc="hills" image_path="all_users/Hardik/1316683115124.jpg" image_like="false"/> 
     <image image_id="1316683713159" image_title="sun" image_desc="sun" image_path="all_users/Hardik/1316683713159.jpg" image_like="false"/> 
     <image image_id="1316684544200" image_title="sun" image_desc="sun" image_path="all_users/Hardik/1316684544200.jpg" image_like="false"/> 
     <image image_id="1316686014899" image_title="sun" image_desc="sun" image_path="all_users/Hardik/1316686014899.jpg" image_like="false"/> 
     <image image_id="1316600184214" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600184214.jpg" image_like="false"/> 
     <image image_id="1316668356801" image_title="hello" image_desc="hello" image_path="all_users/Hardik/1316668356801.jpg" image_like="false"/> 
     <image image_id="1316600221759" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600221759.jpg" image_like="false"/> 
     <image image_id="1316600193960" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600193960.jpg" image_like="false"/> 
     <image image_id="1316600172938" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600172938.jpg" image_like="false"/> 
     <image image_id="1316600144316" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600144316.jpg" image_like="false"/> 
     <image image_id="1316600173551" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600173551.jpg" image_like="false"/> 
     <image image_id="1316600177792" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600177792.jpg" image_like="false"/> 
     <image image_id="1316496700758" image_title="sunset" image_desc="sunset" image_path="all_users/Hardik/1316496700758.jpg" image_like="false"/> 
     <image image_id="1316252181829" image_title="allow" image_desc="allow" image_path="all_users/Hardik/1316252181829.jpg" image_like="false"/> 
     <image image_id="1316690195793" image_title="asasdas" image_desc="asdasd" image_path="all_users/Hardik/1316690195793.jpg" image_like="false"/> 
     <image image_id="1316600153509" image_title="asd" image_desc="asd" image_path="all_users/Hardik/1316600153509.jpg" image_like="false"/> 
     <image image_id="1316408901775" image_title="winter" image_desc="winter" image_path="all_users/Hardik/1316408901775.jpg" image_like="false"/> 
    </users> 
    <users user_name="raj"> 
      <image image_id="1315996252734" image_title="abc" image_desc="abc" image_path="all_users/raj/1315996252734.jpg" image_like="false"/> 
    </users> 
    <users user_name="sandip"> 
      <image image_id="1315996256153" image_title="abc" image_desc="abc" image_path="all_users/sandip/1315996256153.jpg" image_like="false"/> 
    </users> 
</images> 

난 (즉,이 PHP에 의해 생성되는) 내 XML 파일을 하나의 논리적 문제가있다. 이제 하위 태그 순서를 변경하고 싶습니다. 나는 첫 번째 위치에 (로그인 한) 사용자의 자식 태그를 갖고 싶다.

sandip 로그인의 경우 자녀 태그가 하드 링크 대신 우선되어야한다고 말합니다. 당신이 제발 앞으로 더 나은 솔루션이있는 경우

여기

<?php 
    require_once('connection.php'); 

    header('Content-type: text/xml'); 
    echo "<?xml version='1.0' encoding='UTF-8'?>"; 
    echo "<images>"; 

    $id=''; 
    $count=0; 
    $result_1 = ''; 


    $query = "select ui.userId as 'UI userId', ua.userName as 'UI userName', ui.imageId as 'UI ImageId', ul.imageId as 'UL ImageId' , ui.imageRights, ui.imagePath, ui.imageTitle, ui.imageDesc from user_account ua, (select * from user_images where userId=".$_REQUEST['userId']." or imageRights='Allow') as ui left join (select * from user_likes where userId=".$_REQUEST['userId'].") as ul on ui.imageId = ul.imageId where ua.userId=ui.userId order by ui.userId"; 

    $result_row = mysql_query($query); 

    while($row = mysql_fetch_array($result_row, MYSQL_ASSOC)) 
    { 
      if($id != $row['UI userId']) 
      { 
       if($count == 0) 
       { 
        $result_1 .= "<users user_name='".$row['UI userName']."'>"; 
       } 
       else 
       { 
        $result_1 .= "</users>"; 
        $result_1 .= "<users user_name='".$row['UI userName']."'>"; 
       } 
       $id = $row['UI userId']; 
      } 

      $result_1 .= "<image image_id='".$row['UI ImageId']."' image_title='".$row['imageTitle']."' image_desc='".$row['imageDesc']."' image_path='".$row['imagePath']."' image_like='"; 

      if($row['UL ImageId']) 
       $result_1 .= "true"; 
      else 
       $result_1 .= "false"; 
      $result_1 .= "' />"; 

      $count++; 

      if($count == mysql_num_rows($result_row)) 
       $result_1 .= "</users>"; 
    } 

    echo $result_1; 
    echo "</images>"; 
?> 

내 PHP 코드를 확인할 수 있습니다.

+0

어떤 답변을하지 아래 표를 제발하지 않은 경우. 부디. – hardik

+0

나는 PHP에서 도움이 필요하다. 내가 따르도록해야 할 논리가 무엇인지, 나는 XML을 원한다. – hardik

+0

마침내 나는 (완벽하게 작동하는) 하나의 대답을 얻었지만 여전히 이것보다 더 나은 대답을 찾고있다. – hardik

답변

1
나는 당신의 문제를 해결하는 것 외에도 귀하의 PHP 스크립트에 약간의 수정을 제안하고자

:

$num_of_rows = mysql_num_rows($result_row); // Don't call this every loop it's very slow 
$rows = []; 
while($row = mysql_fetch_array($result_row, MYSQL_ASSOC)){ 
    if($id == $row['UI userId']){ 
     // Print the logged in user's images 
    } else { 
     $rows[] = $row; 
    } 
} 

// Print here the rest of the results 
foreach ($rows as $row) { 
    if($id != $row['UI userId']) 
    { 
     if($count == 0) 
     { 
      $result_1 .= "<users user_name='".$row['UI userName']."'>"; 
     } 
     else 
     { 
      $result_1 .= "</users>"; 
      $result_1 .= "<users user_name='".$row['UI userName']."'>"; 
     } 
     $id = $row['UI userId']; 
    } 

    $result_1 .= "<image image_id='".$row['UI ImageId']."' image_title='".$row['imageTitle']."' image_desc='".$row['imageDesc']."' image_path='".$row['imagePath']."' image_like='"; 

    if($row['UL ImageId']) 
     $result_1 .= "true"; 
    else 
     $result_1 .= "false"; 
    $result_1 .= "' />"; 

    $count++; 

    if($count == $num_of_rows) 
     $result_1 .= "</users>"; 
} 

echo $result_1; 
echo "</images>"; 
?> 
+0

많은 답변을 주신 고맙습니다. :) – hardik

+0

나는 여전히 이보다 나은 해결책을 생각하고 있습니다. 당신이 가지고 있다면. – hardik

+0

당신이 생각할 수 없다면 더 나은 해결책이 있다는 것을 어떻게 알 수 있습니까? 로그인 한 사용자가 어디에 있는지 알지 못하기 때문에이를 두 개의 루프로 분할하는 것 외에는 다른 방법이 없습니다. 그리고 더 나은 솔루션이 필요한 이유는 무엇입니까? – Shedokan

관련 문제