Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2010, 14h11   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Par défaut Pb avec CREATE TEMPORARY TABLE

Bonjour,

Un problème chasse l'autre...
Etant passé de Mysql.4 à Mysql.5 pour pouvoir utiliser la propriété CREATE TEMPORARY TABLE, et après avoir plus ou moins résolu les problèmes liés à ce transfert, je constate que cette propriété ne fonctionne pas davantage avec Mysql.5 . Que n'ai-je pas encore fait qu'il aurait fallu faire pour activer cette propriété?
Merci d'avance,

Thierry
anémone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 14h21   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 928
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 928
Points : 18 117
Points : 18 117
Envoyer un message via MSN à CinePhil
Si tu décris plus précisément ce que tu as essayé de faire, peut-être qu'on pourra te le dire !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 16h01   #3
Invité de passage
 
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Je fais donc
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
$table_compo = "CREATE TABLE TEMPORARY IF NOT EXISTS `".$nom."` (
  `id_produit` int(11) NOT NULL auto_increment,
  `quantite` decimal(5,2) default '0.00',
  `produit` varchar(50) default NULL,
  `energie` decimal(4,2) default '0.00',
  `eau` decimal(4,2) default '0.00',
  `proteines` decimal(4,2) default '0.00',
  `glucides` decimal(4,2) default '0.00',
  `sucres` decimal(4,2) default '0.00',
  `lipides` decimal(4,2) default '0.00',
  `satures` decimal(4,2) default '0.00',
  `fibres` decimal(4,2) default '0.00',
  `sodium` decimal(4,2) NOT NULL default '0',
  `source` varchar(20) default 'CIQUAL',
  PRIMARY KEY  (`id_produit`)
) TYPE=MyISAM AUTO_INCREMENT=0;";
$verif=mysql_query($table_compo);
IF(!$verif){echo mysql_error();}
J'exécute: pas de table, pas de message d'erreur.
Par contre si j'enlève TEMPORARY, ça marche.
Il se pourrait que le problème vienne du serveur.. . (1and1), j'ai téléphoné, écrit, ils vont regarder.
Si en attendant...
Merci,
Thierry
anémone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 16h03   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 928
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 928
Points : 18 117
Points : 18 117
Envoyer un message via MSN à CinePhil
Ce n'est pas CREATE TABLE TEMPORARY mais CREATE TEMPORARY TABLE.

Ceci dit, ta structure ressemble plutôt à une table définitive donc CREATE TABLE tout simplement !

Pourquoi veux tu en faire une table temporaire ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 16h40   #5
Invité de passage
 
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
L'erreur ne vient pas de là, je n'ai fait l'inversion qu'ici.
Je veux faire une table temporaire car elle sert à stocker des données qui vont servir à 1 utilisateur pour faire 1 calcul. Un autre utilisateur pourra faire le même calcul sur une autre table en même temps, etc, et à la fermeture de session, les tables doivent disparaitre... faute de quoi ma bse se chargerait en un nombre considérable de tables.
anémone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 16h58   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 928
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 928
Points : 18 117
Points : 18 117
Envoyer un message via MSN à CinePhil
Tu peux aussi faire un CREATE TABLE simple et un DROP TABLE à la fin du processus quand le calcul est terminé.

Au fait, qu'est-ce qui te fait dire que la table temporaire n'est pas créée ?
Tu l'alimentes puis tu l'interroges sur la même session utilisateur ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 17h16   #7
Invité de passage
 
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Je veux que l'utilisateur puisse contrôler en cours d'utilisation, en visualisant un tableau, à la fois ses calculs, et les données qui lui ont permis de les faire. A tout moment il peut quitter la page, et la table restera en place... mon souci.

Je vois bien que la table temporaire n'est pas crée, car mon tableau ne s'édite pas, et elle n'apparait pas non plus après rafraichissement de mon interface php Myadmin
anémone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 17h35   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 928
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 928
Points : 18 117
Points : 18 117
Envoyer un message via MSN à CinePhil
[quote=anémone;5597670]Je veux que l'utilisateur puisse contrôler en cours d'utilisation, en visualisant un tableau, à la fois ses calculs, et les données qui lui ont permis de les faire. A tout moment il peut quitter la page, et la table restera en place... mon souci.

Je vois bien que la table temporaire n'est pas crée, car mon tableau ne s'édite pas, et
Citation:
elle n'apparait pas non plus après rafraichissement de mon interface php Myadmin
Ça c'est normal puisque c'est une table temporaire ! En rafraîchissant phpMyAdmin, on change de processus donc la table disparaît.

Si dans une fenêtre SQL de phpMyAdmin, tu fais ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TEMPORARY TABLE pays (
id INTEGER NOT NULL,
code CHAR(3) NOT NULL,
nom VARCHAR(20) NOT NULL
);
 
INSERT INTO pays
VALUES (1, 'FR', 'France'), 
    (2, 'GB', 'Grande-Bretagne'), 
    (3, 'USA', 'Etats Unis'), 
    (4, 'IT', 'Italie');
 
SELECT id, code
FROM pays
WHERE nom = 'Italie';
=> Tu obtiendras bien la bonne réponse.

Mais si tu passes les requêtes les unes après les autres :
Code :
1
2
3
4
5
CREATE TEMPORARY TABLE pays (
id INTEGER NOT NULL,
code CHAR(3) NOT NULL,
nom VARCHAR(20) NOT NULL
);
=> Votre requête SQL a été exécutée avec succès ( Traitement en 0.0004 sec. )

Code :
1
2
3
4
5
INSERT INTO pays
VALUES (1, 'FR', 'France'), 
    (2, 'GB', 'Grande-Bretagne'), 
    (3, 'USA', 'Etats Unis'), 
    (4, 'IT', 'Italie');
=> #1146 - Table 'test.pays' doesn't exist

Dans un programme PHP, tu ne peux pas enchaîner les requêtes comme dans une fenêtre phpMyAdmin. Il faut faire un mysql_query entre chaque requête mais avec une table temporaire, il faut que les requêtes s'enchaînent dans la même exécution de programme.

Ceci fonctionne :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$rq1 = "
CREATE TEMPORARY TABLE pays (
id INTEGER NOT NULL,
code CHAR(3) NOT NULL,
nom VARCHAR(20) NOT NULL
)
";
 
$rq2 = "
INSERT INTO pays
VALUES (1, 'FR', 'France'), 
    (2, 'GB', 'Grande-Bretagne'), 
    (3, 'USA', 'Etats Unis'), 
    (4, 'IT', 'Italie')
";
 
$rq3 = "
SELECT id, code
FROM pays
WHERE nom = 'Italie'
";
 
mysql_query($rq1);
mysql_query($rq2);
mysql_query($rq3);
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 17h49   #9
Invité de passage
 
Inscription : novembre 2010
Messages : 11
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 11
Points : 0
Points : 0
Limpide!

Merci!
Je vais mettre ça en exécution ... un peu plus tard. Là j'ai du sable dans les yeux, j'ai séché toute la journée sur le problème de modifier des pages en charset latin basé sur Mysql.4, en utf-8 basée sur Mysql.5: l'horreur!!!!!
J'avais cru avancer, et puis plus rien, retour à la case départ.
Un bon tuto???
anémone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h21.


 
 
 
 
Partenaires

Hébergement Web