Requete sql

Résolu/Fermé
cyrilherve Messages postés 324 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 26 août 2011 - 8 juil. 2008 à 18:42
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 - 9 juil. 2008 à 13:05
Bonjour,
je travail sur easyphp 2.beta. j'ai concu une application de gestion.
je vex modifer la structure de ma bd , partulierment modifier une
contrainte sur ma table PRODUITS.
a la base voici l essentiel du code sql pour ctte table :

create table PRODUITS (
Id_produits integer
Nom_categorie varchar(20),
primary key(Id_produit),
foreign key(Id_produit) references CATEGORIES )

l'essentiel du code sql pour CATEGORIES :

create table CATEGORIES
Id_categorie integer,
Nom_categorie varchar(20),
primary key (Id_categorie)

voici mon probleme :

je souhaite que ds mon prg en supprimant un categorie dont l'Id a ete reference
ds un produit ,l'id se supprime automatiquemnt ds la table produit. j'utilise la requette suivante

alter table PRODUITS (
modify foreign key(Id_categorie) references CATEGORIES
on delete cascade )

mais cette requette ne marche pas
qlqun voit qlque chose ?

2 réponses

thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
8 juil. 2008 à 23:09
Bonsoir,

Les parenthèses avant modify et après cascade sont de trop.
Supprime-les, et ça devrait marcher beaucoup mieux !

Cldt.
0
cyrilherve Messages postés 324 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 26 août 2011 7
9 juil. 2008 à 09:38
effectivment , qd je supprime les parenthese ça ne m'envoi plus le message d'erreur
qd je supprime une categorie , son Id reste tjrs dans la table PRODUITS, donc en
fait mon ' on delete cascade ' ne marche pas. j'ai mm essaye ' on delete set null '
je n'ai pas de ' 0' aprs suppression de categorie.

j'ai essaye de supprimer à partir de mon api et mm directment avc phpmyadmin.
0
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18 > cyrilherve Messages postés 324 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 26 août 2011
9 juil. 2008 à 10:48
Bonjour,

Les fonctionnalités SQL de ce niveau (aussi faible soit-il pour ceux qui pratiquent le sql et ses variantes tous les jours) sont mal implémentées sur phpmyadmin ou similaires.
Le mieux est d'utiliser un GUI développé par l'éditeur de ta base de données.

Comme tu utilises PHPMyAdmin, je supposes que tu travailles sous MySQL.
Un outil bien meilleur et 100000 fois plus performant (et gratuit en plus) est MySQL GUI Tools, utilisable avec MySQL Server CS (v5.0 et suivantes).

Tu gères les structures de tes tables avec MySQL Administrator (champs, clefs primaires, étrangères, contraintes d'intégrité, backup, users, configuration du serveur, etc...).
Puis tu utilises Query Browser pour faire des requêtes sur tes bases de données.

Le tout est fait en Java, par l'éditeur de la base de données MySQL, donc ultra portable et stable.
Ta requête avec le fameux "on delete cascade" a toutes ses chances d'y être interprété avec succès.
(pour peu que tu ais bien fait des tables et que tu as bien orienté ta contrainte)

Bonne journée !
0
cyrilherve Messages postés 324 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 26 août 2011 7 > thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008
9 juil. 2008 à 12:27
j'avoue que je ne m'y connais vraimnt ps ,,
just pour savoir : est que je pourais reconcevoir ma bd sous MySQL GUI Tools et l'utiliser avec easyphp
sans modifier mon code phg... je rappelle je developpe une apiweb avc easyphp.
0
cyrilherve Messages postés 324 Date d'inscription dimanche 12 août 2007 Statut Membre Dernière intervention 26 août 2011 7 > thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008
9 juil. 2008 à 12:39
j'ai rencontre un autre probleme en travaillant :

qd j'applique un " select ..... from ...... where ....X= ' ' .... " sur une table de ma bd ,
la requtte etant integree dans mon code php et que l'elmnt compare avc X est une chaine
de caractere ,, la requete ne fournit de resultat que lorsqu'il sagit d'un chaine à un mot par
exple " disque " ; si l'elemnt compare avc X est une chaine a deux mots exple
" disque dur " ,, je n'ai aucun resultat pourtant l'elemnt se trouve dans ma base de donnée.
y a t'il une fonction php pour corriger ça ?
0
thifoolish Messages postés 79 Date d'inscription jeudi 11 janvier 2007 Statut Membre Dernière intervention 11 juillet 2008 18
9 juil. 2008 à 13:05
Bonjour,

En SQL standard, on utilise la clause LIKE pour comparer des chaines de caractères avec des patterns.
Tant que la base n'utilise pas un codage multi-octets (ex: utf-8), ça devrait fonctionner.
Sinon, il faut implémenter les tests au sein de l'application...

Bon courage !
0