script de création de tables

script de création de tables - PHP - Programmation

Marsh Posté le 24-06-2005 à 14:05:03    

bonjour,
J'ai un script en PHP qui me créer des tables SQL automatiquement. PAr contre je rencontre un petit soussi avec ce script quand je veux créer une table avec le nom suivant 2E1 ou 1E1 cela ne marche pas, la table n'est pas crée.Si je rajoute une lettre (2EE1 a la place de 2E1) cela fonctionne.
 
J'ai essayé de créer la table en manuelle à partir de PHPmyadmin et pas de problème.
 
de quoi cela peut il venir ?
 

Reply

Marsh Posté le 24-06-2005 à 14:05:03   

Reply

Marsh Posté le 24-06-2005 à 14:07:18    

la réponse est dans le script qui génére tes tables. peux tu nous le montrer?

Reply

Marsh Posté le 24-06-2005 à 14:16:08    

script  
 
$id_connect=mysql_connect(xxxxxxxxxx);
mysql_select_db("trombi" );
$res_query=mysql_query("SELECT classe FROM eleve" );
 
while ($row=mysql_fetch_array($res_query))
{
mysql_query("create table if not exists $row[classe]"
."(nom TEXT NOT NULL,"
."prenom TEXT NOT NULL,"
."datenaiss TEXT NOT NULL)",$id_connect);
}
 
Voila en gros le script. Le script focntionne pour toute mes classes(TS1,TS2.........) par contre pour les 2E1,2E2.... marche pas, pas de création de table et pas de massage d'erreur

Reply

Marsh Posté le 24-06-2005 à 15:01:19    

j'avous que là je ne comprend pas trop que cela ne puisse pas fonctionner. Je peux te proposer la chose suivante.

Code :
  1. $id_connect=mysql_connect(xxxxxxxxxx);
  2. mysql_select_db("trombi" );
  3. $res_query=mysql_query("SELECT classe FROM eleve" );
  4. while ($row=mysql_fetch_array($res_query))
  5. {
  6. mysql_query("create table if not exists `".$row[classe]."`
  7. ."(nom TEXT NOT NULL,"
  8. ."prenom TEXT NOT NULL,"
  9. ."datenaiss TEXT NOT NULL)",$id_connect);
  10. }


Peut être que là cela va passer parce que je vois pas pourquoi sous phpMyadmin cela passe.

Reply

Marsh Posté le 24-06-2005 à 15:30:35    

mmmh
si j'ai 'compris' le principe, tu crées une table pour chaque classe, avec les 3 mêmes champs mais seul le nom de la table diffère...
 
Ca n'a "rien à voir" avec ton problème, mais tu n'aurais pas ce problème si tu savais modéliser une base de données correctement ...

Reply

Marsh Posté le 24-06-2005 à 15:57:22    

+4002 :jap: je confirme.


Message édité par Berceker United le 24-06-2005 à 15:57:35
Reply

Marsh Posté le 24-06-2005 à 17:52:05    

je ve bien, mais je suis en train d'apprendre à le faire. je lis beaucoup les docs et les aide que je trouve sur le net et sur ce forum,  n'ayant pas au départ une formation de gestion de base de donnée c pas tjs évident de saisir du premier coup les astuces.
 

Reply

Marsh Posté le 24-06-2005 à 18:02:34    

sa serait pas plus simple ce créer un table avec  
- nom
- prenom
- datenaiss
- classe
 
?

Reply

Marsh Posté le 24-06-2005 à 19:15:24    

g deja une table qui regroupe tout les élèves , je regroupe ensuite tout les élèves d'une même classe dans une base qui est triée par ordre alphabétique et qui me permet ensuite d'afficher un trombinoscope de chaque classe.

Reply

Marsh Posté le 24-06-2005 à 19:52:38    

c réalisable avec une seule table et sans avoir a dupliqué les eleves dans plusieurs tables

Reply

Marsh Posté le 24-06-2005 à 19:52:38   

Reply

Marsh Posté le 24-06-2005 à 20:15:45    

cela me parai plus facilement gérable si g une table par classe, g 1300 élèves et 55 classes a pe prés

Reply

Marsh Posté le 24-06-2005 à 20:56:25    

regarde ce modele.
http://mapage.noos.fr/berceker_united/classes.gif
 
Grace a un identificateur unique tu associes un élève à une classe. si tu regarde bien l'idlasse de la table eleve correspond a l'idclasse de la tables classe.
Exemple d'enregistrement
 
Table ELeve
Roberto  1
Charle   1
Antoine  1
Flora    2
Katia    2
 
Table Classe
 1 CM1A  
 2 CM1B
 
 
Roberto, Charle et Antoine sont dans la classe CM1A alors que Flora et Katia sont en CM1B
 
Pour faire une requete voici les différente synthaxe.
 
Je veux récupérer les éléve de cm1A si tu as l'id
SELECT * FROM eleve WHERE idclasse = 1
 
sinon par le nom de la classe.
SELECT eleve.* FROM eleve,classe WHERE eleve.idclasse=classe.idclasse AND classe.nom ='CM1A'
 
 
 
Je veux savoir dans quelle classe se trouve Roberto
SELECT classe.nom FROM eleve, classe WHERE eleve.idclasse=classe.idclasse AND eleve.nom ='Roberto'


Message édité par Berceker United le 24-06-2005 à 21:05:09
Reply

Marsh Posté le 25-06-2005 à 07:29:00    

petit problème :  gestion des doublons. En fait dans l'éducation nationnale chaque élève est identifié par un numéro nationnal unique. L'identification ne pe se faire sur le nom et le prénom de l'élève. Je t'explique en gros ce que j'ai commencé à faire. Dans la base élève j'ai regroupé le NOM, le PRENOM, la DATE DE NAISSAINCE et le NUMERO NATIONNAL Cette première base est mise à jour automatiquent par l'intermèdiaire d'un fichier CSV(extrait de l'application GEP). Ensuite par l'intermèdiaire d'un script j'initialise les autres tables avec NOM, PRENOM, DATE DE NAISSANCE et un nouveau champ qui est le nom de la photo. J'affiche ensuite ces différentes données à l'écran. L'initialisation des différentes tables va se faire une seule fois en début d'années j'ai ensuite créé des scripts de mise à jour pour les nouveau élèves et ceux qui quittent l'établissement.
 
 
C vrai que j'aurrais pu regroupé toutes les infos dans une seule table et c d'ailleurs ce que j'avais commencé à faire avec une sélection suivant la classe et le numéro nationnal mais je trouve plus simple avec une table par classe, chacun sa facon de voir. C plus simple de lire une table de 30 éléments que de faire un tri à chaque fois sur une table de 1300 éléments. Avec ma méthode la table élève n'est lu qu'une seule fois.
 
Voila pour ce qui est du prob de création de table je pe contourner le prob en rajoutant une lettre à 2E1 et créer la table 2EE1(avec ce nom pa de prob) mais cela ne me plai pas parceque je ne vois pas d'ou peut provenir le problème et j'amerais savoir ce qui cloche dans le script.
 
G également essayé de faire :
# while ($row=mysql_fetch_array($res_query))
# {
   $class="2E1";  
   mysql_query("create table if not exists $class"
# ."(nom TEXT NOT NULL,"
# ."prenom TEXT NOT NULL,"
# ."datenaiss TEXT NOT NULL)",$id_connect);
# }
 
avec le même résultat pas de création de table et aucun message d'erreur.

Reply

Marsh Posté le 25-06-2005 à 10:25:24    

En faite, je crois que tu oublie un peut l'utilisation d'une base de données. Si tu répliques des tables ayant les mêmes champs les mêmes caracteristiques c'est qu'il y a un probleme de conception. Ta méthode n'est pas une façon de voir. Une base de données est fait ranger des données d'une certaine maniere de telle qu'un systeme tiers puisse récupérer les informations de façon correcte. Généralement c'est un language. Là tu veux directement lire le contenu d'une table via phpmyadmin. :non: ce n'est pas fait pour ça.
Concernant l'identification nationnal tu peux le place cela ne pose pas de probleme. dans le champ ideleve si cela est un identificateur unique.

Reply

Marsh Posté le 25-06-2005 à 16:49:17    

bon ok ,je vai suivre ta méthode(bien que je ne sois pas encore totalement convaincu) et voir ce que cela donne. Je vais donc regrouper toutes mes infos dans une seul table.  
 
Par contre je voudrais quand même savoir ce qui cloche dans le script et pourquoi la création de la table 2E1 ne se fait pas
 
Merci de m'avoir accorder du temps et de m'avoir aider

Reply

Marsh Posté le 25-06-2005 à 21:27:36    

Je t'ais donné une solution plus haut. Il faut placer des =>` autour du nom de la table. Touche AltGr+è+[espace]

Reply

Marsh Posté le 28-06-2005 à 05:53:10    

ok c bon , je te remercie et je me remet à mon exportation au foramt PDF

Reply

Marsh Posté le 28-06-2005 à 09:09:02    


C'est avec quoi que tu fais ça  [:cvb] Je trouve ça  [:akilae]


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 28-06-2005 à 09:32:09    

visio 2003. il a l'avantage de ce connecter via odbc a une base de données et de récupérer les caracterisiques.

Reply

Marsh Posté le 28-06-2005 à 09:49:00    

Berceker United a écrit :

visio 2003. il a l'avantage de ce connecter via odbc a une base de données et de récupérer les caracterisiques.


C'est pas mal, mais 130€ à 645€ sur kelkoo  [:athlonmp]  
 
Y aurai-t-il des équivalents gratuit pour les étudiants en manque ?  [:pingouino]


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
Reply

Marsh Posté le 28-06-2005 à 10:26:15    

dia peut-etre ?
 
http://www.gnome.org/projects/dia/
 
Il y a un plugin uml2php5 qui permet de faire des diagrammes uml et de générer les classes en php 5 :D


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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