non capisco da dove spunta $id.

se lo passi nel form va da se che quella e' un UPDATE altrimenti dove lo avresti preso?

Hai un modo solo e certo per fare un aggiornamento ed e' quello di prendere il record se esiste passarlo al form tenendoti hidden l'id ed offrendo solo i campi modificabili.

Se invece il titolo non esiste e vuoi farne l'inserimento allora passi ad un form per inserimento che sicuramente avra' ulteriori campi oltre quei due da compilare.

Quando riceverai il POST bastera' valutare il submit (inserisci o modifica) per capire cosa devi fare.

grosso modo direi:

compilazione e ricerca di un titolo,
se esiste compili un form aggiorna oppure segnali che il titolo e' gia' esistente e di cambiare se vuole inserire,
se non esiste compili un form inserisci.

Se aggiorna puo' ripeterlo tutte le volte che gli pare tanto se il contenuto e' uguale a quello che gia' si trova nel db non viene effettuata alcuna modifica. Se invece e' un insert per impedire un rilancio volontario o casuale che sia, che provocherebbe la scrittura di un record doppio, invii la risposta di inserimento tramite una terza pagina di script in modo da svuotare il POST e rilanciare la home o quel che l'e'. A questo punto se riscrive di nuovo lo stesso titolo la risposta che ricevera' sara' quella di un update.

quello, cattivissimo, ti aggiunge un cazzobuffo al titolo e reinserisce. Non c'e' pace per i buoni.