Sessions et MySQL...

Sessions et MySQL... - PHP - Programmation

Marsh Posté le 27-11-2003 à 12:40:57    

Pensez vous qu'il est mieux de faire une connexion MySQL dans un fichier de variable (qui est utilisé sur toutes les pages)
ou de faire une connexion spécifique chaque fois qu'on veut faire une requete ?
 
Freed

Reply

Marsh Posté le 27-11-2003 à 12:40:57   

Reply

Marsh Posté le 27-11-2003 à 13:01:23    

Je pense qu'avec un connexion par requête, il y a moyen que ton hebergeur devienne rapidement ton ami ...

Reply

Marsh Posté le 27-11-2003 à 13:30:05    

moi j'a une connection dans mon top_fichier.php que j'include dans les autres page

Reply

Marsh Posté le 27-11-2003 à 14:00:16    

Ou un truc intelligent :
 
Un classe qui gère la connexion.
 
Exemple :
 
dbconnect.php

Code :
  1. <?php
  2. define( 'MYSQL_SERVER', 'localhost' );
  3. define( 'MYSQL_USER', 'user' );
  4. define( 'MYSQL_PASS', 'pass' );
  5. define( 'MYSQL_DBNAME', 'ma_base' );
  6. class dbConnect
  7. {
  8. var cnx;
  9. function dbConnect()
  10. {
  11.  cnx = false;
  12. }
  13. getCnx()
  14. {
  15.  if( ! $this->cnx )
  16.  {
  17.   $this->cnx = mysql_pconnect( MYSQL_SERVER, MYSQL_USER, MYSQL_PASS ) or die( 'Impossible de se connecter : ' . mysql_error() );
  18.   if( ! mysql_select_db( MYSQL_DBNAME, $this->cnx ) )
  19.   {
  20.    die( 'Impossible de sélectionner la base ' . MYSQL_DBNAME . ' : ' . mysql_error() );
  21.   }
  22.  }
  23.  return $this->cnx
  24. }
  25. }
  26. $oDb = new dbConnect();
  27. ?>


index.php

Code :
  1. <?php
  2. include( 'dbconnect.php' );
  3. $result = mysql_query( "select * from toto", $oDb->getCnx() );
  4. ...
  5. ?>


 
Comme çà, la connexion n'est ouverte qu'à la première utilisation. A condition de toujours préciser $oDb->getCnx() lors d'un appel à mysql_query().


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-11-2003 à 14:29:43    

Perso, j'ai aussi une classe mais moi elle contient aussi des méthodes pour les query, etc... (en fait de simples wrappers autour des fonctions mysql_xxx).
 
et je définis dans un fichier inclus en début de chaque page :
$db = new MaClasse();
$db->connect(...);
 
ensuite, je fais :  
$result = $db->query(...);
 
L'avantage d'utiliser des wrappers (que ce soit une classe ou non), c'est que je gère les erreurs à l'intérieur :
par exemple:
 
class MaClasse {
 var $connexion;
 
 ...
 
 function query($sql) {
  $result = mysql_query($sql, $this->connexion);
 
  if (! $result) die ("la requête SQL a échouée: ".mysql_error());
 
   return $result;
 }
 
}


Message édité par SomeBugsInMe le 27-11-2003 à 14:32:28
Reply

Marsh Posté le 27-11-2003 à 14:40:02    

C'est sûr qu'on peux faire baucoup plus.
C'est juste une base de départ...
Py je l'ai pas pompé dans un truc existant. Je l'ai même pas testé :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-11-2003 à 14:49:05    

SomeBugsInMe > pareil ...c'est plus qimple d'utilsation mais ca permet, de plus, de tout encapsuler et eventuellemnt prevoir une migration vers un autre sgbd [:zebra33]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 27-11-2003 à 14:53:26    

simogeo a écrit :

SomeBugsInMe > pareil ...c'est plus qimple d'utilsation mais ca permet, de plus, de tout encapsuler et eventuellemnt prevoir une migration vers un autre sgbd [:zebra33]


 
:jap: tout à fait, c'est aussi pour ça que je l'ai fait comme ça.  
 
En plus, je fait des objets dès que je peux (j'aime bien ça moi  :D )  

Reply

Marsh Posté le 28-11-2003 à 16:50:31    

Encore une question... peut-on faire une connexion à plusieurs tables en même temps dans une bdd ?
 
c à dire une seule connexion pour plusieurs tables ?
 
car je comprends pas pourquoi mais dans mon script je ne peux faire trois requetes d'affilée... why ?

Reply

Marsh Posté le 28-11-2003 à 16:55:23    

voici le code...
 

Citation :


  $id_test=$_SESSION['id1'];
  //connexion à la base
  mysql_select_db("$bddname", $connect);  
  $sqlconnect = "SELECT * FROM clients WHERE id='$id_test'";
  mysql_query($sqlconnect);
  $result1 = @MYSQL_QUERY($sqlconnect) ;
  $i=0;
  $sqlid= mysql_result($result1,$i,"id" ) ;
  $sqlraison_sociale= mysql_result($result1,$i,"raison_sociale" ) ;
  $sqlfonction= mysql_result($result1,$i,"fonction" ) ;
  $sqlnom= mysql_result($result1,$i,"nom" ) ;
  $sqlprenom= mysql_result($result1,$i,"prenom" ) ;
  $sqladresse= mysql_result($result1,$i,"adresse" ) ;
  $sqlcp= mysql_result($result1,$i,"cp" ) ;
  $sqlville= mysql_result($result1,$i,"ville" ) ;
  $sqltelephone= mysql_result($result1,$i,"telephone" ) ;
  $sqlfax= mysql_result($result1,$i,"fax" ) ;
  $sqlemail= mysql_result($result1,$i,"email" ) ;
   
  echo mysql_error();  
   
   
  $sqlconnect2 = "SELECT * FROM enlevement WHERE id='$id_test'";
  mysql_query($sqlconnect2);
  $result2 = @MYSQL_QUERY($sqlconnect2) ;
  $i=0;
  $sqlraison_sociale1= mysql_result($result2,$i,"raison_sociale" ) ;
  $sqlfonction1= mysql_result($result2,$i,"fonction" ) ;
  $sqlnom1= mysql_result($result2,$i,"nom" ) ;
  $sqlprenom1= mysql_result($result2,$i,"prenom" ) ;
  $sqladresse1= mysql_result($result2,$i,"adresse" ) ;
  $sqlcp1= mysql_result($result2,$i,"cp" ) ;
  $sqlville1= mysql_result($result2,$i,"ville" ) ;
  $sqltelephone1= mysql_result($result2,$i,"telephone" ) ;
   
  echo mysql_error();  
   
  $sqlconnect3 = "SELECT * FROM livraison WHERE id='$id_test'";
  mysql_query($sqlconnect3);
  $result3 = @MYSQL_QUERY($sqlconnect3) ;
  $i=0;
  $sqlraison_sociale2= mysql_result($result3,$i,"raison_sociale" ) ;
  $sqlfonction2= mysql_result($result3,$i,"fonction" ) ;
  $sqlnom2= mysql_result($result3,$i,"nom" ) ;
  $sqlprenom2= mysql_result($result3,$i,"prenom" ) ;
  $sqladresse2= mysql_result($result3,$i,"adresse" ) ;
  $sqlcp2= mysql_result($result3,$i,"cp" ) ;
  $sqlville2= mysql_result($result3,$i,"ville" ) ;
  $sqltelephone2= mysql_result($result3,$i,"telephone" ) ;
  echo mysql_error();  
   
  mysql_close($connect);


 
 
Pourquoi ça marche pô ???

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed