probleme d'écriture d'une requette sql

Eléphant du PHP | 127 Messages

20 juin 2006, 19:51

Bonjour à tous, je me demandais comment creer une table en language sql qui contient un espace dans son nom?
J'ai essayé cette requette mais sa ne marche pas:

Code : Tout sélectionner

CREATE TABLE "ght gfu" (id INT not null AUTO_INCREMENT, com TEXT not null,auteur TEXT not null,date DATETIME not null, PRIMARY KEY (id))
Merci :) .

Eléphant du PHP | 332 Messages

20 juin 2006, 21:29

Code : Tout sélectionner

CREATE TABLE `abc def` ( id int, `auteur du livre` TEXT not null )
en encadrant avec l'apostrophe inverse (celle sous le 7 pour le clavier de PC). Attention : il s'agit de jargon MySQL, pas de syntaxe SQL.

Mais dépêche-toi d'oublier cette drôle d'idée, c'est la porte ouverte à toutes sortes d'erreurs (tu vas devoir mettre cette apostrophe dans toutes tes requêtes). Même si c'est une tolérance de certaines bases comme MySQL, cela n'est pas dans la norme SQL. C'est par exemple formellement interdit dans Oracle. Préfère les tirets bas _

Autre point : tu as un champ que tu as appelé "date"
1) date est un mot réservé de SQL. Tu risques d'avoir des problèmes dans certaines requêtes.
2) Essaye toujours de préciser ce qu'est que cette date ? Je ne sais pas sur quelle application tu travailles, mais tu as un champ auteur, donc il pourrait s'agir d'une bibliothèque. La date dont tu parles, c'est la date de création de la fiche dans la base ou la date de parution du livre ?

Précise donc : date_edition, date_vente, date_pret, date_naissance, date_maj, date_creation, ... Quand tu auras une base avec des dates sur la moitié des objets, tu seras content de savoir à quoi ils correspondent. Surtout 6 mois après quand il faudra corriger un bug ou faire une évolution.

Eléphant du PHP | 127 Messages

20 juin 2006, 22:27

Merci beaucoup pour ta réponse :D .
en réalité le champ date correspond à la date ou la personne a écrit son commentaire.
Je vais appliquer ton conseille pour ce champ merci.
Sinon en réalité la table qui comporte un espace c'était juste une prévoyance.
En effet ce n'est pas moi qui donne le nom à la table, c'est l'internaute qui lui donne indirectement en remplissant un champ input.
Cette table me serre ensuite pour collecter des informations sur l'internaute.
Mais je crois que je vais soit interdir les espaces dans ce champ oubien les remplacer par des "_".
Merci encor pour ta réponse :D .

ViPHP
ViPHP | 2144 Messages

21 juin 2006, 00:55

En effet ce n'est pas moi qui donne le nom à la table, c'est l'internaute qui lui donne indirectement en remplissant un champ input.
Cette table me serre ensuite pour collecter des informations sur l'internaute.
C'est peut-être pas l'idéal comme façon de faire.
Créer une table par membre, ça risque vite d'être lourd...
Faudrait que tu nous en dise plus pour qu'on puisse se faire une idée.

Invité
Invité n'ayant pas de compte PHPfrance

21 juin 2006, 09:35

Voila en réalité les membres qui sont inscrits sur mon site peuvent créer un profil, les informations sur ce profil sont contenus dans une table commune à tous les inscrits cepandant lorsqu'ils créent un profil une table spécifique à chaques profils est créé afin de contenir les commentaires sur le profil.
Voila jesper que j'ai été claire :) .

ViPHP
ViPHP | 2144 Messages

22 juin 2006, 17:13

De manière générale, il vaut mieux travailler avec des tables communes à tous les membres et ne pas créer de table dynamiquement.
Maintenant si tu veux qu'on te conseille sur la meilleure structure de donnée, il vaut mieux que tu nous expliques en détails quelles sont les informations que le membre peut introduire dans son profil.

Eléphant du PHP | 127 Messages

22 juin 2006, 18:31

sur mon site, les personnes peuvent créer un profil les informations sur ce profil (preference de la personne.....) sont contenus dans une table commune à tous les inscrits.Cependant lorsqu'une personne crée un profil une table spécifique à ce profil est créé afin de contenir les commentaires d'autres personnes faits sur ce profil.
la table contenant les commentaires contient un champ pour la date, un champ pour le commentaire et un champ pour l'auteur du commentaire.
Voila tu sais tout :) .

ViPHP
ViPHP | 2144 Messages

22 juin 2006, 18:40

Un solution, qui à l'avantage d'être plus légère pour le serveur de base de donnée (si tu as beaucoup d'inscrit, le nombre de table va exploser) c'est de n'avoir qu'une seule table pour tous les commentaires, mais en ajoutant dans cette table un lien spécifiant à quel profil se rapporte le commentaire.
Tu as probablement un id unique dans ta table profil que tu peux utiliser dans la table commentaire

En résumé, tu aurais :

Table profil
id| nom| prenom |...

Table commentaire
id|idProfil| texte|....

Eléphant du PHP | 127 Messages

22 juin 2006, 20:07

a oui en effet c'est une très bonne idée :D merci beaucoup.

:D :D