2016-06-30 4 views
0

Ich habe hier ein Problem, dass Ive mysql query returning false even when values DO exist in table? Trying to find if not in table?PHP - echo Link ONLY ONCE wenn String nicht im Array ist? Link wiederholte mehrmals?

Grundsätzlich in der offenen Frage beschrieben, ich zusammen mit einem Link ein besonderes Bildes Echo versuchen IF ein Benutzername String in einem Array, das ein Gespräch bedeutet, hat mit ihnen begonnen . Dies alles geschieht, wenn eine Suchleiste in eingegeben

Ich habe in Speichern der Benutzer es gelungen, die entweder sollten Sie nicht hier mit einem SPECIAL Bild gedruckt oder gedruckt werden. Das funktioniert

$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>"; 
       } 

. Problem kommt mit der Suche - dieser Code druckt jeder Benutzer die die Größe des CONVO Array, weil das Echo jedes Mal eine for-Schleife Kreisen genannt wird, durch -

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>"; 
          } 
         } 

         } 
        } 
}// 

Dieser Code erkennt jedoch, wenn der Benutzer in der ist gesucht array und DOES drucken ein spezielles Bild, allerdings wiederholt es dies mehrfach.

Ich brauche Hilfe und kann mein Projekt nicht ohne dieses beenden. Ich habe hier eine Woche gekämpft.

Wie kann ich die Benutzer im Array mit einem speziellen Bild drucken? Oder hat die Suche sie überhaupt nicht aufgedeckt?

Was mache ich falsch?

+0

Also das Problem mit dem zweiten Code ist in wenn es sonst Bedingung ist, ist es jedes Mal für dich Echo Match? – Dharam

+0

machen Sie eine Pause, nachdem Sie das Spiel gefunden haben. 'break;' die Schleife – Dharam

+0

@Dharam Ok, das funktioniert für diejenigen mit einer Übereinstimmung, aber wie vermeide ich es, diejenigen ohne eine Übereinstimmung mehrmals zu echo? – skyguy

Antwort

1

verwenden [Unter der Annahme, dass $ convoArray enthält die Benutzernamen ihre Array-Werte sind]

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>"; 
} 

Anstelle des folgenden Code

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>"; 
    } 
}