IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Table temporaire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut Table temporaire
    Bonjour

    Afin de stocker temporairement les résultats d'une requete, je veux créer une table temporaire. Si je ne mets pas le mot TEMPORARY, la table se crée correctement. Soucis : c'est la même pour tous et donc la 2e requête écrase la première. Lorsque j'ajoute le mot TEMPORARY, la table ne semble pas se créer, en tout cas la requête produit une erreur.
    j'ai essayé de rajouter " or trigger_error(mysql_error(),E_USER_ERROR)" après la requête mysql et ca se plante sans aucun message d'erreur.
    Astuce : je rajoute la ligne "mysql_query(nomdelabase)" au debut du script, la table semble se créer, mais sur la page suivante où je rapelle la table temporaire, j'ai à nouveau le message d'erreur sur la requête. J'ai rajouté un "session_start()" pensant qu'il y en avait besoin sur toutes les pages, sans aucun résultat. Je ne pense pas qu'il y d'erreur de syntaxe, mais il manque peut-être une information genre identification de session. L'ouverture de la connection se fait avec un pconnect.

    Voila le code de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    	$requete="CREATE TEMPORARY TABLE occasion_tmp (
    	  id int(4) NOT NULL auto_increment,
    	  reference varchar(10) NOT NULL default '',
    	  type varchar(20) NOT NULL default '',
    	  marque varchar(30) NOT NULL default '',
    	  modele varchar(30) NOT NULL default '',
    	  annee int(4) NOT NULL default '0',
    	  longueur int(3) NOT NULL default '0',
    	  dimensions varchar(20) NOT NULL default '',
    	  motorisation varchar(40) NOT NULL default '',
    	  amenagement longtext NOT NULL,
    	  electronique longtext NOT NULL,
    	  inventaire longtext NOT NULL,
    	  prix int(9) NOT NULL default '0',
    	  tva varchar(10) NOT NULL default '',
    	  commentaires longtext,
    	  photo1 varchar(32) default NULL,
    	  photo2 varchar(32) default NULL,
    	  photo3 varchar(32) default NULL,
    	  photo4 varchar(32) default NULL,
    	  photo5 varchar(32) default NULL,
    	  photo6 varchar(32) default NULL,
    	  PRIMARY KEY  (id))";
    	mysql_query($requete);
    Merci de votre aide. Je dois livrer le site dans pas longtemps et il ne reste que ce bug à traiter.
    Merci de votre aide.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    je ne suis pas sur d'avoir bien compris ce que tu veux faire mais en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    Depuis la version 3.23 de MySQL, vous pouvez utiliser le mot réservé IF NOT EXISTS, de fa¸on à ce qu'aucune erreur ne soit affiché si la table que vous essayez de créer existe déjà. Notez qu'il n'y a pas de comparaisons entre les structures de table lors du test d'existence.
    peu etre est-ce cela

    http://dev.mysql.com/doc/refman/5.0/...ate-table.html

  3. #3
    Membre chevronné Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Par défaut
    Oui, quelle est l'utilité de cette table temporaire ?

    Tu ne peux pas te servir des sessions pour stocker ton résultat ?

    Il doit y avoir une erreur si tu crée ta table, et que tu essaye de la recréer ensuite.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    Me suis mal exprimé, Je n'ai pas mis tout le code, mais juste avant la création de la table, je fais un drop table de la table temporaire. J'utilise une table temporaire juste pour simplifier le gestion de l'affichage des pages de détail. Quant aux sessions, j'ai testé avec un résultat pour le moins bizarre puisque les valeurs de variables de session changeaient toutes seules sans aucun appel a ces variables. j'ai donc laisser tomber. Ma meilleure solution reste encore la table temporaire sauf que...
    Rassurez-moi, l'appel aux tables temporaire ne necéssite aucun mot particulier? ni dans le select ni dans les drop table ? Et la table reste valable d'une page à l'autre? Elle ne s'efface bien que lors de la deconnction ?
    Ah oui petite précision, je me sers de free.fr comme serveur d'évaluation.

    Merci de votre aide

  5. #5
    Membre chevronné Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Par défaut
    Regarde ici pour les sessions chez free.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    Bon ca va être dur, mais va falloir que je fasse un résumé comlet de mes déboires.
    Il s'agit d'un site d'annonces avec critères de recherche.
    Tout d'avoir j'ai commencé mon site sur mon serveur perso avec un mysql 4.xx et un php 5.xx. Je sauvegardais mes requetes dans des variables de session. Comme je n'était pas satisfait des temps de réponse, j'ai décidé de le basculer sur free. Pas de bol c'est un mysql 3.xx et php 4.xx. J'ai donc modifier mon code en fonction des impératifs free (repertoire sessions, session_start en debut de code et les redirections header avant d'afficher quoique ce soit. Pour la première requete du client, je me contentais d'afficher toute la liste des annonces et ensuite je lui laissais le soin d'affiner sa recherche. Or je me suis apercu en affinant la recherche que les variables de session contenant les termes de la requete étaient modifiées simplement par l'affichage d'un champ select. La variable de session correspondante prenait toutes les valeurs du champ select sans raison. J'ai donc décidé de changer le fusil d'épaule et de créer une table temporaire dans laquelle je mettrais les résultats de la recherche. J'ai commencé par faire ma table en dur pour pouvoir la visualiser avec phpmyadmin. Ca fonctionnait très bien. Quand j'ai voulu la passer en temporary, la table ne semble pas se créer, etc (voir premier post).

    Depuis j'ai progressé. Manquait la ligne mysql_select_database dans le script de connexion. Maintenant la table temporaire se crée correctement. Mais elle n'est toujours pas accessible sur la page suivante.

    Bon en fait vous vous foutez de tout ca. C'était juste pour que vous ne partiez pas dans des trucs que j'ai déjà essayé.

    Les soluces envisageables :
    - resoudre le pb de table temporaire
    - faire la table en dur et joindre dans le nom un identifiant de connection unique
    - faire la table en dur et joindre un nb aléatoire basé sur l'heure par exemple.
    - faire la table en dur et joindre un identifiant de session.

    Elles sont classées dans l'ordre décroissant de leur préférence.

    D'autres soluces peuvent être envisagées, mais j'aimerais éviter de reprendre tout le code.

    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Table temporaire
    Par Tapioca dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/07/2004, 11h32
  2. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 14h24
  3. Suppression table temporaire...
    Par Royd938 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 12h00
  4. [procédure stockée] table temporaire commençant par #???
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/04/2004, 12h23
  5. Nettoyage de table temporaire
    Par Alain Dionne dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/02/2004, 20h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo