Bonjour, je développe actuellement une solution pour mon site pour un système d'inscription/connexion, ce que je voudrai faire soit que chaque user de la table 'membres' ait un champs 'favoris' dans la base de donnée, sur le site, il sélectionnera les elements qu'il souhaitera mettre en favoris grace a un fichier addfav.php, qui ajoute dans le champs 'favoris' de l'user, l'id de l'element sélectionné sur le site.
Quand on clique sur "Ajouter en favoris" cela execute addfav.php (le fichier récupère l'id de l'element par l'URL) :
<?php
session_start();
$_SESSION['user'] = $user_name;
echo $user;
if (!isset($_SESSION['login'])) {
header ('Location: login.php');
}
$servername = "";
$username = "";
$password = "";
$dbname = "";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$id = $_GET['id'];
if (empty($id)) {
echo "Erreur";
}
else {
// sql to delete a record
$sql = "UPDATE 'membres' SET 'favoris' = ".$id." WHERE 'user' = ".$user_name."";
if ($conn->query($sql) === TRUE) {
header('Location: allmovie.php');
} else {
echo "Error deleting record: " . $conn->error;
}
$conn->close();
}
?>
Mais cela ne marche pas...
- Edité par francois_mari 24 janvier 2017 à 20:37:40
Edit : Sprintf Pas obligatoire, mais utilise toujours mysqli::escape_string sur des chaine de caractère dans une requête pour éviter les injections et assure toi que les nombres en soit belle est bien (Ici en l’occurrence id => %u nombre entier non signé base 10)
Il faudrait surtout commencer par gérer les erreurs SQL (au moins par un mysqli_error sinon bien mieux mysqli_report vu que c'est global).
On n'entoure pas de ' les noms de tables ou colonnes et il manque effectivement les quotes pour le SQL autour de $user_name (qui sort d'où d'ailleurs ?)
Pas obligatoire mais utilise toujours mysqli::escape_string sur des chaine de caractère dans une requête pour éviter les injections et assure toi que les nombres en soit belle est bien (Ici en l’occurrence id => %u nombre entier non signé base 10)
Là, si, c'est obligatoire (une quote ' dans $user_name et la requête plante(rait) déjà). Sinon on peut arrêter le "bricolage" et préparer ses requêtes, c'est fait pour (du moins un de leurs buts) ! Pas besoin d'aller chercher un tournevis pour enfoncer un clou quand on a un marteau sous la main.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli