recherche multi champs ( x champs) + nom entête de champ

recherche multi champs ( x champs) + nom entête de champ - PHP - Programmation

Marsh Posté le 25-03-2009 à 22:20:39    

hello les gens !
 
Voila j'ai un problème sur un site que je travaille pour un jeu vidéo.

Question 1 :

j'ai créé une table avec 152 champs, pour faire simple:  
 
- le 1er champ "nom" donne un nom de personne
- les 151 autres "monstre1,...,monstres151" donnent un nom d'objet que nous donne le monstre
 
ça ressemble à ça :

Citation :

NOM       |     MONSTRE1      |     MONSTRE2   |     MONSTRE3   |        ....      |     MONSTRE151    |
Jean       |        patate         |                      |                       |        .....    |                          |
Paul       |                           |                      |      patate         |      ....      |                          |
Jacques  |                          |                      |                       |     ....         |         pizza          |
Petra     |        tarte             |                       |                       |     .....      |                          |


 
Mon but c'est qu'à partir de l'objet j'affiche la liste des personnes + le monstre tué pour avoir cet objet comme ceci :

Citation :

===> objet patate  
Jean     Monstre1
Paul     Monstre 3


 
Seulement vous vous en douterez je suis débutant en php.
Ce que je connais comme type d'écriture ce serait le code ci-dessous mais j'aimerais trouver un truc plus simple pour éviter de me taper une fonction de 151lignes !!!
 
SELECT * FROM ma_table
WHERE MONSTRE1 = $objet_cherché
OR MONSTRE2 = $objet_cherché
OR MONSTRE3 = $objet_cherché
....
OR MONSTRE151 = $objet_cherché ;

 
J'ai parcouru différent forum mais je m'y perd dans la jungle des infos ! Alors j'ai essayé à l'instinct un truc du style " WHERE * =  $objet_cherché " mais bien sure ça ne marche pas  :sweat: (fallait pas rêver non plus  :ange:  )
 
Donc y a-t-il une expression simplifiée qui pourrait dire au WHERE de regarder dans tout les champs comme j'essaie de faire ???

Question2

 
La je me suis moins creuser la tête mais je veux remonter l'info d'entête de mon champs MONSTRE1 car le nom réel est renseigné dans une autre table et j'en ai besoin pour le récupérer ( sauf si plus simple existe)
 
 
Je suis preneur pour vos commentaires !
 
++

Reply

Marsh Posté le 25-03-2009 à 22:20:39   

Reply

Marsh Posté le 25-03-2009 à 22:34:42    

tu as mal conçu ta table ( tres tres tres mal )  
 
tu fais une table avec juste 2 champs  
monsterID; killedBy;
 
ensuite, il te suffit de faire SELECT monsterId FROM table WHERE killedBy='flo850' pour savoir tous les monstres que j'aitué


---------------

Reply

Marsh Posté le 25-03-2009 à 22:40:50    

ben non ?!
 
si je fais comme ça ou je vois l'objet en question ??? c'est l'objet la recherche pas le nom de la personne.
 
D'autant plus qu'à la base cette table est aussi affichée à un autre endroit par personne pour affiché sous forme de liste le type d objet reçu selon le montre qu'on tronçonne. (j'espère que je t'embrouille pas^^)
genre :
Nom : Jean
monstre1 : patate
monstre2 : ...
....
monstre151:

 
Ma fonction ici c'est jsute une correspondance que je veux faire entre une table de liste d'objet et de liste d'utilisateur..

Message cité 1 fois
Message édité par formatc-klaus le 25-03-2009 à 22:42:25
Reply

Marsh Posté le 26-03-2009 à 12:48:37    


Ben si !
 
Tu as mal conçu ta base.
 
Comment géreras-tu ces cas :
- Tu veux passer à 152 monstres par personnes.
- Tu veux trouver les monstres qui ont donné une patate.
- Tu veux afficher la liste des combats d'un joueur (ce que tu veux faire, si je suis bien)
- ...
 
Exemple de base bien construite :

Code :
  1. Joueurs (Id_joueur, Nom_joueur, ...)
  2. Objets (Id_objet, Nom_objet, Description, ...)
  3. Monstres ( Id_monstre, Nom_monstre, ...)
  4. Combats (Id_combat, Id_joueur, Id_monstre, Id_objet)


Et pour avoir ton truc un simple SELECT sur ta table Combats avec jointure sur les autres tables pourt avoir les noms suffit.

Reply

Marsh Posté le 26-03-2009 à 21:12:00    

OK cette méthode là irait..simplement ça va me faire refaire ma table de trouvaille d'objet et je vais passer de 6080 données (40 enregistrements X 152 colonnes)  à 12080 enregistrements (40 perso X 151 objets X 2 colonnes) et j'étais parti au début dans l'idée de réduire au max la taille de la table mais ça ne m'arrange pas dans mon cas.
 
Bref j'adopte ta réponse en tout cas !
 
et pour en dire un peu plus sur l'application via le site que je réalise, le site est fait sur une base Joomla1.5 avec le composant Fabrik et cette table sera visible directement sur le site. Je vais mettre ensuite des filtres pour que l'on ne voit qu'une personne à la fois pour que ce soit moins le bordel dans les 12000 lignes :) .
 
merci en tout  cas pour votre aide, ça m'a permis de me faire raisonner dans l'autre sens et mieux comprendre ce que je pouvais utiliser.

Reply

Marsh Posté le 27-03-2009 à 11:56:14    

une base de données est prévu pour avoir beaucoup de lignes et peu de colonnes


---------------

Reply

Sujets relatifs:

Leave a Replay

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