Requète DELETE et INSERT

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 9 mars 2015 à 16:21
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 10 mars 2015 à 23:42
Bonjour,
Excusez moi du titre je ne savais pas trop comment le nommer.
En fait c'est un peu particulier.
J'ai un lien afin de pouvoir supprimer une entrée d'une table.
le lien
<a href="./index.php?body=supp_calendrier&type=admin&id_calendrier=<?php echo $donnees['id_calendrier'];?>"></a>

Mais ce que je souhaiterai c'est lorsque je supprime cette entrée ça m'insert cette même entrée dans une autre table.
voilà ce que j'ai ébauché.
	public function SuppCalendrier() {
		$sql = "DELETE
				FROM tb_calendrier
				WHERE id_calendrier = :id_calendrier";
		$requete = $this->bdd->prepare($sql);
		$success = $requete->execute(array(
						':id_calendrier' 	=> $this->id_calendrier,
						));
		
		$sql2 = "INSERT INTO tb_historique_calendrier(date_sortie_historique, lieu_sortie_historique)
				VALUES(:date_sortie_historique, :lieu_sortie_historique)";
		$requete2 = $this->bdd->prepare($sql2);
		$success = $requete2->execute(array(
						'date_sortie_historique' 	=> $this->date_sortie_historique,
						'lieu_sortie_historique' 	=> $this->lieu_sortie_historique,
						));
		
		return $success;
	}

La suppression ce fait bien mais pas l'insert, pouvez vous s'ils vous plait m'éclairer un peu je ne vois vraiment pas comment m'y prendre.
Merci beaucoup

17 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 9/03/2015 à 21:55
Bonsoir,

@Anthox:

Parce-que la... tu fais une requête qui supprime les id du champ id_calendrier de la table tb_calendrier

Et après tu ajoute dans la table tb_historique_calendrier des id dans les champs date_sortie_historique et lieu_sortie_historique.

Hein ?
Il ne fait pas ça du tout....
Il supprime de sa table tb_calendrier la ligne correspondante.... puis il insert dans une autre table des données qu'il a "stocké" dans son objet..... il n'y a rien d'anormal là dedans.


on ne supprime pas quelques chose avant de l'ajouter

Là oui, je suis d'accord avec toi.


@Papy:

j'ai déjà pu faire un petit espace membre qui est opérationnel sans trop de complications bien sur

On va dire ça... :-)
Pour ce qui est de ton souci :
L'idéal.. est de séparer tes deux requêtes... dans deux fonctions...
De séparer les paramètres que tu passes dans le execute (du execute)
De faire attention à la syntaxe (tu as des virgules en trop à la fin de tes array)
De nous donner le message d'erreur...car tu dois en avoir sûrement un....
Et si tu n'en as pas.. ajouter un bloc TRY CATCH pour les avoir.
ce qui donnerait :

public function SuppCalendrier(){
 $result=array();
 $result['historisation'] = $this->HistoCalendrier();
 $result['suppression'] = $this->SuppCalendrierByID();

return  $result;

}
private function SuppCalendrierByID() {
  try{
   $params = array('id_calendrier'=> $this->id_calendrier);
        $sql = "DELETE
                     FROM tb_calendrier
                     WHERE id_calendrier = :id_calendrier";
 $requete = $this->bdd->prepare($sql);
 $success = $requete->execute($params);
  }catch(Exception $e) {
     echo '<br>Exception -> '$e->getMessage();
  }
 return $success;
}

private function HistoCalendrier(){ 
 try{
  $params = array('date_sortie_historique'=> $this->date_sortie_historique
                             ,'lieu_sortie_historique'=> $this->lieu_sortie_historique);
   $sql = "INSERT INTO tb_historique_calendrier(date_sortie_historique, lieu_sortie_historique)
  VALUES(:date_sortie_historique, :lieu_sortie_historique)";
   $requete = $this->bdd->prepare($sql);
   $success = $requete->execute($params);
  }catch(Exception $e) {
     echo '<br>Exception -> '$e->getMessage();
  }
  return $success;
}

2