Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1918 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Tester la présence d'une table dans une BDD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Tester la présence d'une table dans une BDD

n°1347766
channot77
Posté le 16-04-2006 à 19:35:57  profilanswer
 

Bonjour,
 
Je possède un site sur lequel des internautes peuvent s'inscrire.
En bref, lors de l'inscription je crée automatiquement une table qui contiendra les infos sur l'internaute : j'utilise mysql_query("CREATE TABLE ...
Petit problème : quelquefois la table n'est pas créer et je ne sais pas pourquoi.
Pourriez-vous m'aider à résoudre mon problème?
 
Seconde solution : Connaissez-vous une commande permettant de tester la présence d'une table? Je n'aurais qu'à tester la présence de la table et si elle n'a pa été créer je répète mon script ou j'affiche un message d'erreur pour que l'internaute recommence l'inscription.
 
Merci de m'aider.


Message édité par channot77 le 16-04-2006 à 19:58:12
mood
Publicité
Posté le 16-04-2006 à 19:35:57  profilanswer
 

n°1347774
FlorentP
Posté le 16-04-2006 à 20:01:51  profilanswer
 

http://www.google.fr/search?q=mysq [...] r:official
>> http://builder.com.com/5100-6371-1045433.html
>> fnTableExists()
The fnTableExists() function determines whether a particular table exists within a specified database on your MySQL server. Again, you need to have a server name, user name and password.

Citation :

function fnTableExists($TableName) {
//Verifies that a MySQL table exists
if (!$oConn = @mysql_connect(“mysql.kaufman.net”, “guest”, “secretword”)) {
$bRetVal = FALSE;
} else {
$bRetVal = FALSE;
$result = mysql_list_tables('MyDatabase', $oConn);
while ($row=mysql_fetch_array($result, MYSQL_NUM)) {
if ($row[0] ==  $TableName)
$bRetVal = TRUE;
break;
}
mysql_free_result($result);
mysql_close($oConn);
}
return ($bRetVal);
}

n°1347783
gooopil
pfiew
Posté le 16-04-2006 à 20:15:27  profilanswer
 

T'as pas un problème de logique là ? Une table par utilisateur ?? Faut UNE table pour tous tes utilisateurs

n°1347814
channot77
Posté le 16-04-2006 à 20:48:53  profilanswer
 

gooopil a écrit :

T'as pas un problème de logique là ? Une table par utilisateur ?? Faut UNE table pour tous tes utilisateurs


 
1 membre peut comptabiliser jusqu'à 50 entrées en moyenne dans sa table par an.  
J'ai à l'heure actuelle 400 membres et 10 membres de plus par jour.
Si je met tout dans 1 seule table ça risque d'être le bordel et en plus beacoup de calculs sont effectués sur ces tables et ça risquerait de ralentir plus qu'autre chose je pense.

n°1347825
cesarr89
Posté le 16-04-2006 à 20:57:44  profilanswer
 

channot77 a écrit :

1 membre peut comptabiliser jusqu'à 50 entrées en moyenne dans sa table par an.  
J'ai à l'heure actuelle 400 membres et 10 membres de plus par jour.
Si je met tout dans 1 seule table ça risque d'être le bordel et en plus beacoup de calculs sont effectués sur ces tables et ça risquerait de ralentir plus qu'autre chose je pense.


 
 :heink: Enfin justement une base de données c'est quand même fait pour stocker pas mal de données...pis 50entrées/an c'est pas excessif...c'est rien !
Une table par utilisateur c'est la première fois que je rencontre ça...mais peut être j'ai pas compris l'interet.
Tu as pas peur que ce soit plus le bordel en mettant une table par membre ?

n°1347827
FlorentP
Posté le 16-04-2006 à 20:59:26  profilanswer
 

50*400 = 20.000
 
Bon ça va t'as encore de la marge avant d'avoir des soucis avec ta taille de ta table, quand t'aurais plusieurs millions de lignes ça sera peut être plus discutable :D

n°1347829
channot77
Posté le 16-04-2006 à 21:00:17  profilanswer
 

Enfin je ne sais pas.
Faut-il mieux avoir 400 tables et de ne traiter qu'1 seule table à 50 entrées  
ou avoir 1 seule table et traiter 50 entrées parmis 400x50 entrées?
Moi j'ai fait ça pour que les opérations se fassent plus rapidement mais peut-être que je me trompe.

n°1347834
cesarr89
Posté le 16-04-2006 à 21:03:40  profilanswer
 

FlorentP a écrit :

50*400 = 20.000
 
Bon ça va t'as encore de la marge avant d'avoir des soucis avec ta taille de ta table, quand t'aurais plusieurs millions de lignes ça sera peut être plus discutable :D


 
+1
 

channot77 a écrit :

Enfin je ne sais pas.
Faut-il mieux avoir 400 tables et de ne traiter qu'1 seule table à 50 entrées  
ou avoir 1 seule table et traiter 50 entrées parmis 400x50 entrées?
Moi j'ai fait ça pour que les opérations se fassent plus rapidement mais peut-être que je me trompe.


 
400 tables c'est vraiment le bordel quand même...C'est quoi tes opérations dessus ?

n°1347844
FlorentP
Posté le 16-04-2006 à 21:08:13  profilanswer
 

channot77 a écrit :

Enfin je ne sais pas.
Faut-il mieux avoir 400 tables et de ne traiter qu'1 seule table à 50 entrées  
ou avoir 1 seule table et traiter 50 entrées parmis 400x50 entrées?
Moi j'ai fait ça pour que les opérations se fassent plus rapidement mais peut-être que je me trompe.


C'est mieux une seule table.
T'ajoutes une colonne pour identifier le client associé à chaque entrée (colonne que tu ajoute à ta primary key), et c'est bon au niveau perf :p

n°1347850
channot77
Posté le 16-04-2006 à 21:13:36  profilanswer
 

C'est sûr que ça résoudrait mon problème.
J'avais fait ça au début mais c vrai que maintenant avec 400 membres ca commence à faire beaucoup de tables.
Jvai y penser.
 
Au niveau des index dans les tables vous pourriez m'expliquer vite fait le principe?
 
Merci

mood
Publicité
Posté le 16-04-2006 à 21:13:36  profilanswer
 

n°1347854
FlorentP
Posté le 16-04-2006 à 21:15:49  profilanswer
 

A quoi ressemble la structure de ta table de base ?

n°1347858
channot77
Posté le 16-04-2006 à 21:23:37  profilanswer
 

La table permet d'enregistrer le palmarès d'un joueur de tennis.
Les champs sont : ID Type Lieu Date Resultat Points Defaite Adversaire Licence Classement IDClass Score etc...

n°1347860
FlorentP
Posté le 16-04-2006 à 21:26:35  profilanswer
 

A priori t'as une primary key sur uniquement "ID" donc ?
 
Là tu rajoute un champs "IDinscrit" et tu étend ta primary key sur deux champs au lieu d'un seul, pour avoir "IDinscri,ID" comme clé

n°1347861
channot77
Posté le 16-04-2006 à 21:30:21  profilanswer
 

OK merci jvai essayer ça!

n°1347909
naceroth
Posté le 16-04-2006 à 22:54:29  profilanswer
 


 
Sous mysql, y a beaucoup plus simple, tu fais un bête

Code :
  1. $req = mysql_query("select 1 from ta_table limit 1" );
  2. switch (mysql_errno($req)){
  3. case 0 : //aucune erreur
  4. case 1146 : //ta table n'existe pas
  5. ...
  6. } (et idem pour la version OO)


 

n°1348004
Ayuget
R.oger
Posté le 17-04-2006 à 10:26:36  profilanswer
 

channot77 a écrit :

La table permet d'enregistrer le palmarès d'un joueur de tennis.
Les champs sont : ID Type Lieu Date Resultat Points Defaite Adversaire Licence Classement IDClass Score etc...


a vue de nez, ta BDD est très mal construite.

n°1348317
channot77
Posté le 17-04-2006 à 20:40:45  profilanswer
 

J'ai mis une primary key sur mon champs "membre" mais apparemment ça m'empeche de rentrer plusieurs lignes avec le même membre.  
J'en rentre 1 mais apres il ne veut plus que je rentre de nouvelle lignes pour ce membre.
Faut-il paramétré qqchose ou est-ce normal?  Que dois-je utiliser comme index dans mon cas?

n°1348321
cesarr89
Posté le 17-04-2006 à 20:44:07  profilanswer
 

channot77 a écrit :

J'ai mis une primary key sur mon champs "membre" mais apparemment ça m'empeche de rentrer plusieurs lignes avec le même membre.  
J'en rentre 1 mais apres il ne veut plus que je rentre de nouvelle lignes pour ce membre.
Faut-il paramétré qqchose ou est-ce normal?  Que dois-je utiliser comme index dans mon cas?


 
C'est l'interet de la primary key...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Tester la présence d'une table dans une BDD

 

Sujets relatifs
pb table de hachage[PHP] Slashs/ antislashes
[PHP] Bug PHP ?!? -> Pro demandé !Session PHP, Qui Peut m'expliquer le principe ?
Table problèmeFormulaire HTML vers PHP
Synchro Calendrier Outlook et Bdd Access Online[Résolu] Relation entre table sans intégrité référentielle
[PHP]Utiliser le resultat d'un DATE_FORMAT de requete mysql sous dreamPHP ou ASP -> l'avenir appartient auquel? Lequel est le mieux SVP?
Plus de sujets relatifs à : [PHP] Tester la présence d'une table dans une BDD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR