salut,
c'est pas clair ce que tu veux il te faut être plus explicite.
dans ton code tu peux sortir le prépare avant la boucle foreach, tu ne fera qu'une fois et fera plusieurs insert avec c'est à cela que servent les requête préparée

ce que tu fait et pas simple et source d'ennuie.
pourquoi utiliser le table pour les noms des colonnes tu les connait met les les clairement dans la requête ce sera plus performant et plus lisible

(surtout que la tu le fait à chaque "tour" de la boucle).
a priori tu insère une annonce par choix ?
est ce qui te gène et ce que tu souhaite régler ?
si oui cela ce gère en corrigeant le défaut de conception originale

il te faut une jointure entre l'annonce et une table qui contient les types.
en clair
une table type qui contient une clef primaire et un libellé
une table typeAnnonce qui contient deux colonnes clef étrangère : pk de la table annonce et pk de la table type.La pk de cette table est les deux colonnes.
lorsque tu insère ton annonce tu récupère la clef primaire (id ?).
pour chaque choix tu insère une ligne dans la table type annonce.
pour cela il faut que les case a cocher (ou la liste déroulantes) aient en valeur la clef primaire de la table type.
cela te permet d'avoir un modèle simple, et maintenable.
Dans la même optique, si tu a un "espace membre" il ne faut pas mettre le pseudo dans la table annonce mais la clef primaire de la table qui contient les utilisateur (imagine le merdier si tu renomme un utilisateur).
je ferais un truc dans ce genre
CREATE TABLE annonce (
idannonce INT NOT NULL PRIMARY KEY,
sexe VARCHAR(1) NOT NULL CHECK (lower(sexe) IN ('m'), 'f'),
jours VARCHAR(50) NOT NULL,
annonce VARCHAR(500) NOT NULL,
userid INT NOT NULL
);
CREATE TABLE type (
idtype INT NOT NULL PRIMARY KEY,
libelle VARCHAR(20) NOT NULL
);
CREATE TABLE typeAnnonce (
idtype INT NOT NULL,
idannonce INT NOT NULL,
PRIMARY KEY (idtype, idannonce)
);
ALTER TABLE type ADD CONSTRAINT fk_type FOREIGN KEY (idtype) REFERENCES type (idtype);
ALTER TABLE typeAnnonce ADD CONSTRAINT fk_annonce FOREIGN KEY (idannonce) REFERENCES annonce (idannonce);
userid est la clef primaire de la table contenant les utilisateurs il s'agit d'une clef étrangère.
je n'ai pas gérer l'auto increment des clefs primaires cela dépend de la base de donnée que tu utilises.
@+
Il en faut peu pour être heureux ......