php
  • loops
  • if-statement
  • while-loop
  • 2012-01-06 4 views 0 likes 
    0

    디렉토리 목록을 만들 때 올바른 이벤트에서 트리거하기 위해 PHP if 문을 지시하는 데 어려움을 겪고 있습니다.PHP - 문이 필요한 경우이 간단한 작업에 더 나은 솔루션이 필요합니다.

    문은 두 단락의 표시를 제어합니다.

    그것은 다음과 같습니다

    if ($userIsLoggedIn && $_SESSION['accountNum'] == $lstId) 
    { 
        $pageContent .= " 
        <span class='editListing'><a href='/listings/edit/basic/index.php'>Edit Listing...</a></span> 
    "; 
    } else { 
    $pageContent .= " 
        <span class='editListing'>Your Listing? <a href='/listings/edit/basic/index.php'>Login to edit...</a></span> 
    "; 
    } 
    

    $userIsLoggedIn는 사용자가 웹 사이트에 로그인 한 있는지 확인하는 기능입니다. (웹 사이트로 사용자가 로그인, 계정 번호는 다음 세션 변수로 저장됩니다.)

    변수 $ lstId는 다음과 같이 설명 될 수있다 : 어디는 필드의 값

    while ($row = mysql_fetch_array($data)) { 
    $lstId = $row['id']; 
    ... 
    

    입니다 mysql 테이블에 저장된 특정 행의 id.

    이제 사용자가 2 개의 결과를 반환하는 문자열을 검색한다고 가정 해보십시오. 각 결과는 A 테이너 내에 보유되고 루프는 A 테이너가 일치하는 것으로 _ 견된 각 행 결과와 함 2 컨테이너를] 복하게합니다.

    컨테이너 내부는 if 문이 적용되는 곳입니다.

    내가 기본적으로하고 싶은 것은 각 목록에 대해 사용자에게 "귀하의 목록 - 편집을 위해 로그인하십시오"라는 메시지가 표시됩니다. 그리고 사용자가이 링크를 선택하면 로그인 한 후 로그인 페이지로 이동합니다 사용자 계정과 관련된 목록을 수정할 수 있습니다.

    하지만 난 데 문제는, $lstId이 반환하는 모든 행의 ID 것 같다되도록 기본적으로 웹 사이트에 사용자가 로그인은, 단락 "목록 편집"각자에 표시 될 때 그들의 결과와 관련이없는 것조차도 포함합니다. 사용자가이 링크를 클릭하면 자신의 목록을 수정할 수있는 페이지로 이동합니다.

    내가 목표로하는 효과는 단락 "편집 목록"이 자체 목록이 포함 된 결과에만 나타납니다. 그리고 다른 모든 목록에서 단락은 "귀하의 목록, 편집을 위해 로그인"으로 유지됩니다. 여기

    는 각각의 결과를 생성하는 데 사용됩니다 전체의 HTML입니다 :

    if ($tempVar == 0) { 
        $pageContent .= " 
        <div class='searchResultS'> 
        "; 
        if ($total_pgs > 1) 
        { 
         $pageContent .= " 
         <p>$paginator</p> 
         "; 
        } 
    } 
    
    $pageContent .= " 
         <div class='searchResult'> 
          <div class='searchResultWrapper'> 
    "; 
    
           if ($lstPage !== "") 
           { 
            $pageContent .= " 
             <span class='moreDetails'><a href='/listings/$lstPage.php'>More Details...</a></span> 
            "; 
           } 
    
    $pageContent .= " 
            <h3>$lstName</h3> 
    "; 
    
           if ($userIsLoggedIn && $_SESSION['accountNum'] == $lstId) 
           { 
            $pageContent .= " 
             <span class='editListing'><a href='/listings/edit/basic/index.php'>Edit Listing...</a></span> 
            "; 
           } else { 
            $pageContent .= " 
             <span class='editListing'>Your Listing? <a href='/listings/edit/basic/index.php'>Login to edit...</a></span> 
            "; 
           } 
    
    $pageContent .= " 
           <br style='clear:both; height:0; font-size: 1px; line-height: 0px;' /> 
           <div class='bizDesc'> 
            <p><span class='listHeadings'>Description:</span> $lstDesc</p> 
           </div> 
           <div class='bizAddr'> 
            <p><span class='listHeadings'>Street:</span> $lstAddress</p> 
            <p><span class='listHeadings'>Town:</span> $lstArea</p> 
            <p><span class='listHeadings'>Province:</span> $lstProvince</p> 
            <p><span class='listHeadings'>Post Code:</span> $lstPostcode</p> 
            <p><span class='listHeadings'>GPS Co-Ords:</span> $lstGps</p> 
           </div> 
           <div class='bizCont'> 
            <p><span class='listHeadings'>Contact:</span> $lstContact</p> 
            <p><span class='listHeadings'>Tel:</span> $lstTel</p> 
            <p><span class='listHeadings'>Cell:</span> $lstCell</p> 
            <p><span class='listHeadings'>Fax:</span> $lstFax</p> 
            <p><span class='listHeadings'>Skype:</span> $lstSkype</p> 
            <p><span class='listHeadings'>eMail:</span> <a href='mailto: $lstEmail?subject=Your listing on bergbiz.co.za'>$lstEmail</a></p> 
           </div> 
          </div> 
         </div><!-- end .searchResult --> 
    "; 
    $tempVar ++; 
    } 
    

    사람이에 대한 모든 입력, 제안이나 통찰력이있는 경우에 당신이 그것의 일부를 공유 할 수 있다면, 그것은 크게 감사하겠습니다 나 !!

    감사합니다.

    편집 : 루프 내에서 if 문 바로 뒤에 배치

    코드 :

    $td = $_SESSION['accountNum']; 
    echo"session var is $td"; 
    echo"lst id is $lstId"; 
    

    출력 :

    session var is 10005lst id is 10003session var is 10005lst id is 10004session var is 10005lst id is 10002session var is 10005lst id is 10005 
    

    이 같이 나오는 이유 어떤 아이디어? 세션 var는 동일하게 유지되지만 id 변수가 반복됩니다.

    +0

    if ($ userIsLoggedIn && $ _SESSION [ 'accountNum'] = $ lstId) 비교하는 대신 $ _SESSION [ 'accountNum']을 (를) 지정 하시겠습니까? –

    +0

    try == '$ _SESSION ['accountNum '] = $ lstId';) – canihavesomecoffee

    +0

    @Mark, 사용자가 로그인 양식을 작성하여 사이트에 로그인 할 때 세션 변수가 지정되지 않습니다. 내가하고 싶은 일은 계좌 번호와 특정 업체 정보의 ID를 비교하는 것입니다. –

    답변

    2

    첫 번째주의해야 할 점은 if 문은 = 및 not ==를 사용하므로 모든 $ lstId에 대해 true를 반환한다는 것입니다.이 변경 있는지 확인이에

    $_SESSION['accountNum'] = $lstId 
    

    을 :

    $_SESSION['accountNum'] == $lstId 
    

    은 즉각적인 문제가 해결되지 않습니다.

    $_SESSION['accountNum'] = $lstId 
    

    는 현재

    $_SESSION['accountNum'] == $lstId 
    

    , 당신은 $ _SESSION을 설정하는이어야한다 [ 'accountNum는'] $ lstId에 때마다 동일하게 : 물론 한 가지 문제

    +0

    내 응용 프로그램, 스크립트는 ==가 아닌 =로 읽으려고했습니다. 이것은 솔루션을 찾으려고 할 때 일어 났고 내 게시는 = 대신 ==를 표시하도록 편집되었습니다. 감사합니다 –

    +0

    좋아요 ... $ _SESSION [ 'accountNum'] 및 $ lstId를 루프 컨텍스트 내에서 디버깅 할 때 표시하면 무엇이 표시됩니까? – jcmeloni

    +0

    이제 시도해 보시고 답장을 보내 주시면 감사하겠습니다. –

    0

    는이 다음이다 if 문을 실행하면 자연스럽게 일치하고 사용자가 올바르게 로그인되어 있다고 가정하고 + 목록을 소유합니다.

    +0

    Hecksa, 나는 혼란이 발생했을 때이를 사과합니다. 이것은 오타였습니다. 다른 의견에 대한 답을 참조하십시오. –

    관련 문제