2010-12-02 7 views
0

J'espère que quelqu'un peut aider à crier!problème de boucle dans une déclaration

fondamentalement j'essaye de faire quelques choses avec la déclaration ci-dessous;

Je veux d'abord vérifier si l'ID utilisateur existe dans member_categories_position. Si je veux alors exclure toutes les entrées de la deuxième instruction où member_id est égal à tous les résultats de la première instruction la troisième instruction est l'instruction else qui s'affiche si le member_id n'est pas présent dans la position member_categories. PROBLÈME - le résultat du premier système est correct, mais quand j'essaie de l'insérer dans la seconde instruction (! = '$ Memid'), cela ne produit aucun résultat et n'a aucun effet. Je pense que le problème est que $ memid est un résultat en boucle. Comment est-ce que j'obtiens la deuxième déclaration pour dire que n'importe quel member_id qui est dans member_categories_position ne montrera pas dans cette déclaration?

$sql2 = " 
    SELECT * 
    FROM member_categories_position a 
    JOIN member_users b 
     ON b.id = a.member_id"; 

$rs2 = mysql_query($sql2); 
while ($row = mysql_fetch_array($rs2)) 
{ 
    $memid = "".$row['member_id'].""; 
} 

if(mysql_num_rows($rs2) != 0) 
{ 
    $new= " 
     SELECT * 
     FROM member_categories 
     JOIN member_users 
      ON member_categories.member_id=member_users.id 
     JOIN member_config 
      ON member_categories.member_id=member_config.member_id 
     WHERE 
      member_categories.categories='$category' 
      AND member_categories.member_id !='$field' 
     GROUP BY member_config.member_id 
     ORDER BY RAND() limit 0,42"; 

    $rs = mysql_query($new); 

    while ($row = mysql_fetch_assoc($rs)) 
    { 
     echo "result excluding member ids from the first statement"; 
    } 
    echo "<div class=\"clear\"></div>"; 
} 
else 
{ 

    $new= " 
     SELECT * 
     FROM member_categories 
     JOIN member_users 
      ON member_categories.member_id=member_users.id 
     JOIN member_config 
      ON member_categories.member_id=member_config.member_id 
     WHERE 
      member_categories.categories='$category' 
     GROUP BY member_config.member_id 
     ORDER BY RAND() limit 0,42"; 

    $rs = mysql_query($new); 

    while ($row = mysql_fetch_assoc($rs)) 
    { 
     echo "Result with all member ids"; 
    } 
    echo "<div class=\"clear\"></div>"; 

} } <-- (second is a stray from original post) 
+0

S'il vous plaît modifier votre code ci-dessus pour utiliser une indentation correcte - ça va-il beaucoup plus facile pour nous de vous aider. – jball

+0

D'où proviennent les valeurs $ field et $ category? –

+0

$ champ doit être $ memid et $ category est un $ _REQUEST qui fonctionne bien qui est placé au-dessus de ce codage. – nade93

Répondre

0

$ memid n'est pas inclus dans la portée car il semble être défini à l'intérieur de la boucle. Essayez de définir $ memid = ''; en haut de votre script .. comme ça.

$memid = ''; 
$sql2 = " 
     SELECT * 

De cette façon, il sera défini lorsque vous utilisez ci-dessous ..

+0

$ memid est défini à partir de la première instruction, ce sont les résultats qui vérifient si l'ID membre existe dans member_categories_position, cela détermine ensuite les résultats qui doivent être affichés – nade93