Je me trouve confronté à un problème de suppression par cases à cocher.
Voici le code pour lequel l'utilisateur sélectionne ce qu'il veut supprimer :
?>
<p> Voici la liste des fonctions : </p>
<?php
$reponse = $bdd->query('SELECT * FROM fonction ORDER BY libfct ASC');
while ($donnees = $reponse->fetch())
{
?>
<span class="col"><input type="checkbox" name="fct[]" value="<?php echo $donnees["codefct"];?>" id="fct[]" /><label for="fct[]"><?php echo $donnees["libfct"];?></label></span><br />
<?php
}
Ensuite la page de confirmation qui affiche les cases à cocher qui ont été sélectionnées :
$fct = $_POST['fct'];
?>
<p>Etes-vous sur de vouloir supprimer : </p>
<?php
foreach($fct as $element)
{
$reponse = $bdd->query("SELECT libfct FROM fonction WHERE codefct='$element' ORDER BY libfct ASC");
while ($donnees = $reponse->fetch())
{
?>
<span class="col"><input type="checkbox" name="fct[]" id="fct[]" value="<?php echo $element; ?>" checked="checked"/><?php echo $donnees['libfct'].'<br />'; ?></span>
<?php
}
}
?>
<p> <input name="val" type="submit" value="Valider" /></p>
<?php
Et enfin la page de suppression qui contient donc l'erreur :
if (!empty($_POST['fct']))
{
$fct=$_POST['fct'];
$bdd->exec("DELETE FROM fonction WHERE codefct IN (" . implode(",",$fct).")");
$bdd->exec("DELETE FROM fonction_bis WHERE codefct IN (" . implode(",",$fct).")");
$bdd->exec("DELETE FROM l_collab_fct_met WHERE codefct IN (" . implode(",",$fct).")");
$bdd->exec("DELETE FROM l_collab_fct_met WHERE codefctbis IN (" . implode(",",$fct).")");
$bdd->exec("DELETE FROM l_comp_fct WHERE codefct IN (" . implode(",",$fct).")");
?><p class="style2"><?php echo 'Les fonctions ont été supprimées'; ?> </p>
<?php
}
Et voilà l'erreur qui est retournée Erreur : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'TS' in 'where clause'Le problème que j'ai en fait c'est que le codefct c'est des chaines de caractère et non des entiers et je ne sais pas comment le traiter.
Merci