Vider la colonne des tables d'une base sql

Eléphanteau du PHP | 41 Messages

10 août 2006, 20:28

Bonjour,

Dans ma base SQL j'ai plusieurs tables (pas toutes) qui contiennent la colonne "valide". Et je souhauterais avoir la commande SQL pour vider le contenu de toutes les colonnes "valide" des tables de ma base. Le problème c'est que je ne trouve pas cette commande sur le Net. Pouvez-vous m'aider ?

Mammouth du PHP | 684 Messages

10 août 2006, 22:55

Salut.
Regarde deja du cote de la commande UPDATE de SQL.
Apres faut faire la requette sur les champs qui t'interesse pour les tables voulues.
Tout faire en une seule requette je ne sais pas si c'est realisable.
Faudra attendre une autre reponse.
Zigz4g

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 août 2006, 10:27

Tu es effectivement obligé de faire un UPDATE sur chacune des tables concernées et de mettre la valeur à vide ou NULL pour la ou les colonnes voulues.

Eléphanteau du PHP | 41 Messages

11 août 2006, 13:52

OK j'ai fait :

Code : Tout sélectionner

UPDATE table1, table2, table3 SET valide = NULL
Mais le serveur me renvoi cette erreur :

Code : Tout sélectionner

#1052 - Column 'valide' in field list is ambiguous
Comment je peux eviter ça ?

Eléphant du PHP | 88 Messages

11 août 2006, 14:02

Salut.

Tu vas être obligé de faire trois requêtes à mon avis...

@+

ViPHP
ViPHP | 2144 Messages

11 août 2006, 14:02

Tu es effectivement obligé de faire un UPDATE sur chacune .
Comme écrit plus haut, tu dois réaliser une commande update par table.

Code : Tout sélectionner

]Update table1 ... Update table2 ... Update table3 ..
ps : Ces tables ont des structures différentes ou pas ?
Modifié en dernier par iclo le 11 août 2006, 14:06, modifié 1 fois.

Eléphant du PHP | 184 Messages

11 août 2006, 14:04

Tu ne peux pas faire d'update commun à plusieurs tables dans une seule requete :wink:
Image

Eléphanteau du PHP | 41 Messages

11 août 2006, 14:15

Oui les tables ont toutes la même structure.
Et j'ai essayé de faire plusieurs update dans une requete c'est impossible

En tout cas je vais m'amuser à les faire une par une parce que j'ai 10 tables !

Eléphanteau du PHP | 41 Messages

11 août 2006, 14:33

J'ai trouvé la solution, j'ai fait une page en PHP ou j'ai mis 10 requête sql d'update pour chacune de mes tables.
Comme ça je n'aurai qu'à ouvrir la page et tout s'effacera.

Merci pour votre aide

ViPHP
ViPHP | 2144 Messages

11 août 2006, 14:43

Oui les tables ont toutes la même structure.
!

si tes 10 tables ont la même structure, il y a fort à parier que tu as une erreur dans le design de la base de donnée.
Il vaudrait mieux vérifier et éventuellement modifier la structure car ça peut poser pas mal de problème dans des dévellopements futurs. (Le premier exemple est l'update sur 1 tables)

Si tu veux qu'on te conseilles, donne nous des détails sur la structures et la raison d'être de ces 10 tables.

Eléphanteau du PHP | 41 Messages

11 août 2006, 18:46

Ben en fait là je viens de finir mon site du coup. C'est http://yetiscore.tk si vous voulez voir. Il y a un formulaire, avec lequel le visiteur peut uploader une image, qui se compose de la façon suivante :
$score : le joueur entre le score de sa partie
$pseudo : pseudo du joueur
$commentaire : commentaire du joueur
$taille : taille de l'image
$type : type de fichier (jpg, gif...)
$date : date de l'ajout
$extension : extension du fichier
$aleatoire : l'id du gars, une variable de 5 chiffre aleatoire
$valide : lors de l'envoi du formulaire il y est entré "en attente de validation". Puis toutes les 24 heures je vais voir les fichiers ajoutés, je supprime ceux qui ne sont pas valide (se sont des prise d'écrans des score du jeu) et pour les autres je met valide à NULL pour enlever le "en attente de validation"

ViPHP
ViPHP | 2144 Messages

11 août 2006, 19:16

oui, mais pourquoi 10 tables ?
Tu devrais jeter un coup d'oeil sur la normalisation des bases de données.

Eléphanteau du PHP | 41 Messages

11 août 2006, 23:41

Ben parce que à chaque fois c'est pour un des 10 jeux différent. J'ai trouvé ça + simple

ViPHP
ViPHP | 2144 Messages

12 août 2006, 17:14

Ben parce que à chaque fois c'est pour un des 10 jeux différent. J'ai trouvé ça + simple
Je ne sais pas exactement quelles sont les opérations que tu dois faire sur ces données, mais cette structures risques vite de montrer des limites pour peu que tu doives faire des statistiques, recherches ou autres sur les dix jeux en même temps, tu dois réaliser des accès différents pour chaques tables ce qui est une surchage conséquente pour le serveur de base de donnée. (Il vaut avoir une bonne structure dès le départ)
Si plus tard, tu veux ajouter de nouvelles fonctionnalités, tu risques de te retrouver dans l'obligation de modifier ta base de donnée, c'est qui est difficile quand celle-ci contient un grand nombres de données.

Une solution "normalisée" consiste à avoir toutes les informations dans une seule table, en ayant un champ (colonne) suplémentaire qui spécifiera à quel jeux se rapporte l'enregistrement.
Ainsi tu peux à toutes tes données d'un coup, et l'opération de mise à jour à l'origine de ton poste, peut se faire grâce à un update unique.

Cette solution est beaucoup plus souples et plus donc plus évolutive, et c'est la solution préconisée dans tous les bons cours de design de base de donnée.

a++