OVH Cloud OVH Cloud

tables temporaires trop......temporaires

3 réponses
Avatar
pascal
débutant:
Afin de réaliser une "liste de commande" je crée une table temporaire
ayant pour nom le numéro de session
je procede de la façon suivante :
1- récupération du numéro de session :
<?php

/**
Création d'une session
**/

if (isSet($PHPSESSID))
session_start($PHPSESSID);
else
session_start();
$id = session_id();
?>

2-création de la table temporaire
<?php

/**
CREATION DE TABLE TEMPORAIRE
**/
$sql = sprintf("CREATE TEMPORARY TABLE IF NOT EXISTS $id (`choix_id`
INT( 4 ) NOT NULL ,`choix_titre` VARCHAR( 255 ) NOT NULL ,'choix_duree`
TIME,`choix_ref` VARCHAR( 255) );" );
mysql_query($sql,$cx_panier)or die(mysql_error());


?>


Tout cela fonctionne et me permet d'ajouter sans problême des données
dans ma table temporaire par l'intermédiare d'un formulaire de saisie PHP
Cependant, si je n'effectue aucune action pendant environ une minute et
que ensuite j'insère une nouvelle donnée dans la table les données de
cette dernière ont été effacée alors que le numéro de session est resté
le même

Quelqu'un pourrait-il me venir en aide??

merci

3 réponses

Avatar
Dans news:412e04cc$0$315$,
pascal a dit :

Tout cela fonctionne et me permet d'ajouter sans problême des données
dans ma table temporaire par l'intermédiare d'un formulaire de saisie
PHP Cependant, si je n'effectue aucune action pendant environ une
minute et que ensuite j'insère une nouvelle donnée dans la table les
données de cette dernière ont été effacée alors que le numéro de
session est resté le même


la duree de vie de la table temporaire est differente de celle de la session
(normalement a chaque deconnexion)
pense ton probleme d'une autre facon (par exemple une table plus generale
avec comme champ l'id de session et une date d'insertion)
la date d'insertion te permettra de purger regulierement cette table apres
un intervalle de temps que tu te definis (24h par exemple)

--
ampac

Avatar
Sebastien
pascal wrote:

Afin de réaliser une "liste de commande" je crée une table temporaire
ayant pour nom le numéro de session


Pas sûr que ce soit la bonne méthode.
Extrait de la doc MySQL :

"A TEMPORARY table is visible only to the current connection, and
is
dropped automatically when the connection is closed."
(http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html)

Pourquoi ne pas stocker ces infos en session ?

Avatar
Marc
pascal wrote:



/**
CREATION DE TABLE TEMPORAIRE
**/
$sql = sprintf("CREATE TEMPORARY TABLE IF NOT EXISTS $id (`choix_id`
INT( 4 ) NOT NULL ,`choix_titre` VARCHAR( 255 ) NOT NULL ,'choix_duree`
TIME,`choix_ref` VARCHAR( 255) );" );
mysql_query($sql,$cx_panier)or die(mysql_error());




je suppose sans regarder la doc, que les tables temporaires MYSQL
sont sencées mourrir a la fin du script. Si ce n'est pas le cas,
c'est que le serveur MYSQL met un certain temps pour le nettoyage.

Dans une variable de session, tu peux aussi stoker des informations.
Pourqoi passer par une table, si ce n'est d'avoir a disposition
le langage SQL.