Demande d'aide pour syntaxe requête SQL

GoldRazor
Invité n'ayant pas de compte PHPfrance

23 nov. 2012, 16:21

Bonjour à toute la communauté,

Je suis en train de finaliser mon site et je suis en galère sur une fonction.

J'ai ma table "Membres" avec la colonne "id"
J'ai ma table "Annonces" avec les colonnes "titre", "description" et "nomembre"

le nomembre de "annonces" = le id de "membres"

Je voudrai ajouter à ce bout de code, en plus de la suppression des annonces frauduleuses, la suppression du compte membre
<?php

include("mysql.php");

$liendb = mysql_connect ($serveur, $utilisateur, $motdepasse);
mysql_select_db ($basededonnees);

$sql = "

DELETE FROM `annonces` WHERE (

`titre` LIKE  '%d\'argent%'
OR  `description` LIKE  '%d\'argent%'
OR  `titre` LIKE  '%cigarette%'
OR  `description` LIKE  '%cigarette%'
OR  `titre` LIKE  '%financier%'
OR  `description` LIKE  '%financier%'

)";

mysql_query ($sql); 

mysql_close($liendb);

?>
Est ce que quelqu'un peut m'aider ?

Merci

Mammouth du PHP | 672 Messages

23 nov. 2012, 16:46

Si je peux me permettre, c'est un peu dangereux de supprimer définitivement un membre, juste pour une annonce (pire, pour un mot dans une annonce).
Exemple : je vends le livre "Comment j'ai arrêté la cigarette" ou une "Médaille en argent"...

En respectant ton système, je dirais simplement :
1. Dans ton Système de Gestion de Bases de Données, définir la relation entre MEMBRES et ANNONCES, et demander la suppression en cascades.
Ca dépend du SGBD, mais en gros, le principe c'est QUAND je supprime un enregistrement dans ma table "maîtresse", je peux définir la réaction du SGBD pour les tables "esclaves". Il suffit de lui demander poliment de supprimer les lignes se rapportant à l'enregistrement supprimé.

2. Dans le PHP, demander la suppression du membre. Le SGBD se chargera de supprimer le membre, puis (par cascade) de toutes les annonces créées par lui...

goldrazor
Invité n'ayant pas de compte PHPfrance

23 nov. 2012, 18:11

Salut macgawel, tres gentil d'avoir répondu.

Mais comment "demander poliment de supprimer les lignes se rapportant à l'enregistrement supprimé " ?

Merci

Avatar du membre
Mammouth du PHP | 1609 Messages

23 nov. 2012, 20:05

Salut tes tables doivent être en type InnoDB. Ça te permet de configurer les clés étrangères pour activer le delete cascade.
Développeur web depuis + de 20 ans