Update avec jointure [Résolu]

Signaler
-
 hamd18 -
Bonjour,

je ne suis entrain de développer une app web de gestion de parc informatique , j'aimerais à partir de mon interface graphique l'utilisateur(admin) puisse modifier , ajouter et supprimer un élément , au depart dans ma base données MySQL avec une table simple j'arrive à effectuer les différentes actions maintenant quand il s'agit d'une vue de jointure je n'arrive pas à faire (modifier , ajouter et supprimer) et jai des mes messages d'erreur : Erreur fatale: exception PDO non détectée: SQLSTATE [HY000]: erreur générale: 1288 Le burserv de la table cible de DELETE ne peut pas être mis à jour dans C: \ wamp64 \ www \ top \ burserv.php sur la ligne 17 //
( ! ) Fatal error: in C:\wamp64\www\top\upburserv.php on line 20
( ! ) PDOException: in C:\wamp64\www\top\upburserv.php on line 20


Erreur fatale: exception PDO non détectée: SQLSTATE [HY000]: erreur générale: 1471 Le burserv de table cible de INSERT n'est pas insérable dans C: \ wamp64 \ www \ top \ insburserv.php sur la ligne 19
(!) PDOException: SQLSTATE [HY000]: Erreur générale: 1471 Le burserv de table cible de INSERT n'est pas insérable dans C: \ wamp64 \ www \ top \ insburserv.php sur la ligne 19


script update:

<?php
// include database connection file
require_once'dbconfig.php';
if(isset($_POST['update']))
{
// Get the userid
$bureauid=intval($_GET['id']);
// Posted Values
$bureau=$_POST['bureau'];
$service=$_POST['service'];
// Query for Query for Updation
$sql="UPDATE bureau SET bureau.designation AS bureau=:b,service.designation AS service=:s FROM bureau LEFT JOIN service on bureau.service_idservice = service.idservice WHERE idbureau=:uid";
//Prepare Query for Execution
$query = $DB_con->prepare($sql);
// Bind the parameters
$query->bindParam(':b',$bureau,PDO::PARAM_STR);
$query->bindParam(':s',$service,PDO::PARAM_STR);
$query->bindParam(':uid',$bureauid,PDO::PARAM_STR);
// Query Execution
$query->execute();
// Mesage after updation
echo "<script>alert('MIse à jour réussie');</script>";
// Code for redirection
echo "<script>window.location.href='burserv.php'</script>";
}
?>

script supprimer :
<?php
// include database connection file
require_once 'dbconfig.php';

// Code for record deletion
if(isset($_REQUEST['del']))
{
//Get row id
$uid=intval($_GET['del']);
//Qyery for deletion
$sql = "DELETE FROM burserv WHERE idbureau=:id";
// Prepare query for execution
$query = $DB_con->prepare($sql);
// bind the parameters
$query-> bindParam(':id',$uid, PDO::PARAM_STR);
// Query Execution
$query -> execute();
// Mesage after updation
echo "<script>alert('Record Updated successfully');</script>";
// Code for redirection
echo "<script>window.location.href='burserv.php'</script>";
}
script ajouter:
<?php
// include database connection file
require_once'dbconfig.php';
if(isset($_POST['insert']))
{

// Posted Values
$bureau=$_POST['bureau'];
$service=$_POST['service'];

// Query for Insertion
$sql="INSERT INTO burserv(bureau,service) VALUES(:b,:s)";
//Prepare Query for Execution
$query = $DB_con->prepare($sql);
// Bind the parameters
$query->bindParam(':b',$bureau,PDO::PARAM_STR);
$query->bindParam(':s',$service,PDO::PARAM_STR);
// Query Execution
$query->execute();
// Check that the insertion really worked. If the last inserted id is greater than zero, the insertion worked.
$lastInsertId = $DB_con->lastInsertId();
if($lastInsertId)
{
// Message for successfull insertion
echo "<script>alert('Record inserted successfully');</script>";
echo "<script>window.location.href='burserv.php'</script>";
}
else
{
// Message for unsuccessfull insertion
echo "<script>alert('Something went wrong. Please try again');</script>";
echo "<script>window.location.href='buserv.php'</script>";
}
}
?>

merci de bien vouloir m'aider

2 réponses

Messages postés
12140
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 septembre 2020
683
bonjour,
ceci n'a rien à voir avec le php, tout à voir avec la base de données.
quand tu partages du code, peux-tu utiliser les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
quand tu as un soucis avec des requêtes, teste ces requêtes hors du programme php, directement sur la base de données.

je suggère de ne pas faire ces opérations de modification sur la jointure, et de plutôt les faire sur chacune des tables. donc de faire deux insert, deux delete ou deux update.
merci de me répondre aussi vite , mais en faite je suis débutant en php mysql , je sais pas comment m'y prendre svp
Messages postés
12140
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 septembre 2020
683 > hamd18
je te conseille alors de commencer par des exercices plus simples, pour progresser ensuite.
>
Messages postés
12140
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 septembre 2020

si si , je suis entrain de developer une app pour stage de fin d'etude BTS , je suis sur le projet depuis presque 1 mois et demi , c'est cette partie qui me pose le problème , c'est PHP MySQL que je comprend pour pouvoir créer mon app
Messages postés
29528
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 septembre 2020
2 774
Bonjour,

Déjà, quand on poste du code sur le forum, on doit utiliser les BALISES DE CODE.
Explications ( à lire ENTIEREMENT...) disponibles ici :
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ensuite :

quand il s'agit d'une vue de jointure je n'arrive pas à faire

Une vue ne peut pas être mise à jour via des requêtes sql...
Une vue est générée dynamiquement par la bdd ... la seule façon de la mettre à jour est de modifier les tables qui composent cette vue ou de recréer ta vue.

et pour finir, ta requête
UPDATE bureau SET bureau.designation AS bureau=:b,service.designation AS service=:s FROM bureau LEFT JOIN service on bureau.service_idservice = service.idservice WHERE idbureau=:uid"

est totalement fausse ....
Le "FROM" et tout ce qui suit n'a pas sa place dans cette requête !
merci jordane45 , je ne sais pas comment m'y prendre pour la requête je cherche depuis une semaine sur Internet, merci
> hamd18
merci grand merci , j'ai pu résoudre mon problème enfaîte j'ai du supprimer ma table de vue dans ma BD et réécrire la requête
 $sql = "DELETE bureau, service FROM bureau LEFT JOIN service ON bureau.service_idservice = service.idservice WHERE idbureau=:bid";


$sql="UPDATE bureau LEFT JOIN service ON bureau.service_idservice = service.idservice SET bureau.designation =:b,service.designation =:s WHERE idbureau=:bid";