Je mets le code plus complet, ça aidera peut-être:
if(isset($_POST['name']) && isset($_POST['slug'])){
checkCsrf();
$slug = $_POST['slug'];
if(preg_match('/^[a-z\-0-9]+$/', $slug)){
$name = $db->quote($_POST['name']);
$page_id = $db->quote($_POST['page_id']);
$slug = $db->quote($_POST['slug']);
$slider = $db->quote($_POST['slider']);
if(isset($_GET['id'])){
$id = $db->quote($_GET['id']);
$db->query("
UPDATE sliders, posts
SET
name=$name,
page_id=$page_id,
slug=$slug,
slider =$slider
WHERE posts.id = sliders.page_id
AND posts.slider = sliders.id
AND sliders.id=$id
");
}else{
$db->query("
INSERT INTO sliders, posts
SET
sliders.name=$name,
sliders.page_id=$page_id,
sliders.slug=$slug
posts.slider=$slider
WHERE sliders.page_id = posts.slider
");
}
setFlash('Le slider a bien été ajouté');
header('Location:slider.php');
die();
}else{
setFlash('Le slug n\'est pas valide', 'danger');
}
}
J'ai également modifié quelque peu ma connexion à PDO afin d'avoir des erreurs, et j'ai ceci:
- undefined index slider [/code])
- Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'name' in field list is ambiguous'
- PDOException: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'name' in field list is ambiguous
slider n'est donc pas défini, et il y a un souci avec name également.
Alors pour slider, c'est le seul champ qui ne se trouve pas dans la table sliders, il est dans la table posts.
Et pour name, c'est un champ que l'on peu retrouver dans les 2 tables, idem pour slug.
Si je modifie ma requête et que je fais ceci:
if(isset($_GET['id'])){
$id = $db->quote($_GET['id']);
$select = $db->query("
UPDATE sliders, posts
SET
sliders.name=$name,
sliders.page_id=$page_id,
sliders.slug=$slug,
posts.slider =$slider
WHERE posts.id = sliders.page_id
AND posts.slider = sliders.id
AND sliders.id=$id
");
Je n'ai plus aucun message d'erreur, ma requête semble se dérouler normalement puisque mon setFlash se déclenche et affiche un "'Le slider a bien été ajouté", mais dans ma DB, rien ne se modifie.
Grrr ça me fait pêter une case lol
Sinon, j'ai déjà tenté de réaliser ma requête seule en SQL sous phpMyAdmin, mais même là je n'arrive pas à pondre la requête qui va modifier également le champ slider dans la table posts.