Page 1 sur 1

SELECT WHERE LIKE

Posté : 15 juin 2005, 11:18
par BFH
Bonjour,
j'effectue une suppression dans une base de données. Voici un bout du code :
$query="DELETE FROM report WHERE RHost LIKE '".addslashes($RHost)."%'";//supprime tout les rapports choisit
mysql_query($query)or die(mysql_error());
$RHost contient des nom de lieu, donc si la valeur du champs RHost est similaire à $RHost le rapport est supprimé!

Mon problème:
Supprimer le lieu Syndicat EAU supprimera les rapports
Syndicat EAU,
Syndicat EAU_accueil
Syndicat EAU_entrée Ce qui est bien !

Hors ça va aussi supprimer les rapports:
Syndicat EAU EST_accueil
Syndicat EAU NORD_serveur
Cependant ces rapport ne correspondent pas aux même lieux!

Comment faire pour que le % de ($RHost)."%" soit différent d'un espace??

Posté : 15 juin 2005, 11:21
par Cyrano
Utilise les fonctions REGEXP de MySQL

Posté : 15 juin 2005, 11:36
par BFH
Je comprends pas comment on utilise ces fonctions, c'est pas fautes d'avoir regardé! :oops:

Posté : 15 juin 2005, 11:43
par pjl
A première vue, ton code me parrait bien dangereux pour un delete.
Si $RHost = "S", ca va te supprimer tous les lieux commencants par un S.

Posté : 15 juin 2005, 11:50
par Guakamol
Apparemment tes nom de rapports ont l'air tres formté, si tu peux avoir la garantie que ca restera ainsi, utilise effectivement les expression reguliere comme te l'a conseillé Cyrano

En gros, un expression reguliere permet d'exprimer la structure d'une chaine de caractere grâce a un ensemble de caractere spéciaux, regarde attentivement le site fourni et fait des essais tu devrait pouvoir t'en sortir.

Posté : 15 juin 2005, 11:53
par Ripat
Comme suggéré par Cyrano, essaye les regex de MySQL.
$RHost = "Syndicat EAU";
$motif = '^'.addslashes($RHost).'[^ ]*$';
$query = "SELECT * FROM report WHERE RHost REGEXP '$motif'";
Il ne prendra que les $RHost suivit de n'importe quel caractère sauf l'espace. On peut affiner si nécessaire.

J'ai mis un SELECT pour tes essais à blanc mais ça marchera aussi avec le DELETE bien sûr.

Posté : 15 juin 2005, 11:59
par BFH
Merci, je t'aime tout plein Ripat :love4: :D