Il primo è un operatore di assegnazione (=) e non fa altro che assegnare un valore ad una variabile.
Il secondo invece è un operatore di uguaglianza (==) che serve appunto per eseguire un test tra due valori.
Se tu usi l'operatore di assegnazione in una condizione con una espressione del genere (variabile = 1), il risultato di questa espressione restituirà sempre (1) che per la condizione significa (vero).
Una condizione il cui argomento da sempre (vero) sarà sempre "vista" e l'else verrà quindi tralasciato.
Da come mi hai posto la domanda però mi pare di capire che a te avvenga il contrario, cioè se usi == ti salta l'else. Il che è alquanto improbabile oppure ho interpretato male il tuo ultimo post.