2016-06-30 8 views
0

私はアイブ氏は基本的に、私は、ユーザー名の文字列は会話が彼らと一緒に起動していることを意味し、アレイ内にある場合は、リンクと一緒に特別なイメージをエコーし​​ようとしています未回答の質問にmysql query returning false even when values DO exist in table? Trying to find if not in table?PHP - 文字列が配列に含まれていない場合にのみ、エコーリンクをオンにしますか?リンクが複数回エコーされましたか?

を説明することをここに問題があります。検索バーが中に入っているとき、これは、すべての起こり

私はどちらかがここSPECIAL IMAGEで印刷または印刷してはならないユーザーを保存することに成功しています。

$convoArray = array(); 

       echo '<form class="usersearchpm" method="post"><input class="searchbarpm" name="searchbarpm"></input></form>'; 
       $con = mysqli_connect("localhost","username","password","sqlserver"); 

        //$num = mysqli_query($con, "SELECT * FROM `pm_messages` WHERE user_from=".$account['id'].""); 
       $numCon = mysqli_query($con, "SELECT * FROM `conversation` WHERE user_one=".$account['id'].""); 
        $numrows = mysqli_num_rows($numCon); 
       while ($u = mysqli_fetch_assoc($numCon)) 
        { 
        //get other users usernames to echo link 
    $getUserTwo = mysqli_query($con, "SELECT * FROM `accounts` WHERE id=".$u['user_two'].""); 
     $s = mysqli_fetch_assoc($getUserTwo); //s[username] is a user that DOES have convo 



        array_push($convoArray, $s['username']); 
        //echo "<a href='message.php?id={$s['id']}'><li><img class = 'dmCircle' src = '../images/chatCircle.png'/>{$s['username']} </li></a>"; 
       } 

これは動作します。この問題は、検索が付属しています - エコーがループサークルのための各時間Aを通じて呼び出されるため、このコードは、各ユーザの会話の配列のサイズを出力します -

if(isset($_POST['searchbarpm'])){ 
// foreach($convoArray as $name) 
// { 
//  echo $name; 
// } 
//$sess->getUsers(); 
    $dbh = mysqli_connect("localhost","username","password","sqlserver"); 
        $query = $_POST['searchbarpm']; 
        $q = mysqli_query($dbh, "SELECT * FROM sqlserver.accounts WHERE username LIKE '%".$query."%'"); 
        //display all the results 
        while($row = mysqli_fetch_assoc($q)){ 

//      $checkConvo = mysqli_query($dbh, "SELECT * FROM sqlserver.conversation WHERE user_one=".$user_id." AND user_two=".$row['id'].""); 

         if($row['id']!= $user_id) { //only output users they dont have convo going with because theyre already printed!!! 

         for($i=0;$i<sizeof($convoArray);$i++) 
         { 
          if($row['username']==$convoArray[$i]) 
          { 
           echo 'match!!'; 
           echo $row['username']; 
           echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/chatCircle.png'/> {$row['username']}</li></a>"; 
          } 
          else 
          { 
           echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/noChatCircle.png'/> {$row['username']}</li></a>"; 
          } 
         } 

         } 
        } 
}// 

このコードは、ユーザーが検索時に認識しないでいますarrayとDOESは特殊なイメージを出力しますが、やはりこれを複数回行います。

私は助けが必要で、これを使わずにプロジェクトを終了できません。ここで一週間苦しんでいる。

アレイ内のユーザーを特殊な画像で印刷するにはどうすればよいですか?あるいは、検索でそれらをまったく有効にしないようにしますか?

私は間違っていますか?

+0

if(in_array($row['username'], $convoArray) { echo 'match!!'; echo $row['username']; echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/chatCircle.png'/> {$row['username']}</li></a>"; } else { echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/noChatCircle.png'/> {$row['username']}</li></a>"; } 

だから問題は、第二のコード内にある[$ convoArrayはユーザ名がその配列の値であり、含まれていると仮定すると]それ以外の条件であれば、毎回あなたのためにマッチをエコーし​​ていますか? – Dharam

+0

あなたは試合を見つけた後に休憩します。 'break;'ループ – Dharam

+0

@Dharam Okはマッチしたもので動作しますが、マッチしないものを何度もエコーしないようにするにはどうしたらいいですか? – skyguy

答えて

1

使用は、この代わりに、次のコード

for($i=0;$i<sizeof($convoArray);$i++) 
{ 
    if($row['username']==$convoArray[$i]) 
    { 
     echo 'match!!'; 
     echo $row['username']; 
     echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/chatCircle.png'/> {$row['username']}</li></a>"; 
    } 
    else 
    { 
     echo "<a href='message.php?id={$row['id']}'><li><img class = 'dmCircle' src = '../images/noChatCircle.png'/> {$row['username']}</li></a>"; 
    } 
} 
関連する問題