JeuWeb - Crée ton jeu par navigateur
Organisation<> Requete SQL, PoO - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Organisation<> Requete SQL, PoO (/showthread.php?tid=1297)



Organisation<> Requete SQL, PoO - corentone - 17-06-2007

Salut a tous!Voila je vous presente mon probleme! Je le retourne dans tous les sens et je ne trouve pas le moyen pour optimiser au maximum mon script.

En fait, mon jeu est un jeu ou le joueur dirige une agence de DJ.
Une Agence peut comporter plusieurs DJs.

Un Dj possede un materiel qui lui est propre.
Organisation de mes tables:
-Dj: Comporte les infos des Djs et le materiel qui lui est attribué
-Objets:Liste tous les objets du jeu: Proprietaire, Type objet...
-Categorie_objet: Liste toutes les caracteristiques de chaque objet: Xp qu'il rapporte, Nom, Marque etc....

L'attribution se passe comme ceci:
L'agence achete du materiel, et ensuite, peut l'attribuer a ses Differents Djs.

On peut attribuer au maximum 3platines, une table de mixage, un casque, un synthe et une boite a ryhtme par DJ.
Dans la table DJ un champs correspond a chaque type d'objet. Dans ces champs j'entre l'ID de l'objet unique.

En fait, mon probleme est que je veux passer des infos depuis 3tables.
Car lors de l'entrainement d'un Dj je veux l'xp qu'il gagne avec les objets qui lui sont attribués.

Donc:
Table Dj, Champ Objet trouve ID Objet>>ID objet permet de trouver l'objet et donc sa caracteristique, sont type d'objet>>Type d'objet permet de trouver son Type, et donc l'Xp qu'il rapporte.

Voila mon code pour le moment:
Code PHP :
<?php
//Ceci sera l'include pour l'affichage des DJs ainsi que toutes les fonctions qui correspondront aux DJs.

//Note: Penser a prendre UNIX_TIMESTAMP() pour entrainement DJ

class DJ {
protected
$id_dj;
protected
$platine1_dj;
protected
$platine2_dj;
protected
$table_dj;
protected
$xp_dj;


__construct([...]){
[...]

}

function
entrainer_dj(){
/* code entrainement DJ */
/********* 1/Verification des conditions: appartenance du dj au joueur, date>aujourd'hui, et forme>20 *****/
if("Possibilité d'entrainer")
{

[
b]//ICI selection des Infos matos du DJ pour savoir combien il gagne, triple requete Jointe?[/b]

$sql_entrainement = 'UPDATE dj SET forme_dj=forme_dj-20,xp_dj=xp_dj+'.$xp.',entrainement_dj=CURRENT_DATE() WHERE id_dj='.$this->id_dj;
}

}




function
affichage_dj(){
/*code affichage dj */
//1: Affichage des infos générales: Nom, date de creation, xp, reput, forme
echo'<table width=50% align="center" border="1"><tr><td><b>Nom:</b></td><td>'.$this->nom_dj.'</td></tr>
<tr><td><b>Date de Cr&eacute;ation:</b> <td>'
.$this->datecreation_dj.'</td></tr>
<tr><td><b>Experience:</b></td> <td>'
.$this->xp_dj.'</td></tr>
<tr><td><b>R&eacute;putation:</b></td><td>'
.$this->reputation_dj.'</td></tr>
<tr><td><b>Forme:</b></td><td>'
.$this->forme_dj.'</td></tr>';

[
b]//2. Affichage du Matos du DJ: Image + Nom[/b]

//3. Affichage des differentes actions possibles
if($this->statut_dj==0)
{
echo
'<tr>';
//Entrainement?
if($this->forme_dj>=20 AND $this->entrainement_dj+86400 <= mktime(0, 0, 0, date("d, m, Y", time())))
{echo
'<td><form method="post" action="dj.php"><input value="1" type="hidden" name="action_dj"><input value='.$this->id_dj.' type="hidden" name="dj"><input type="submit" value="Entrainer"></td>';
}


}
}


?>

Voila je ne sais pas si j'ai ete clair et si c'est realisable. Je vous serais gré de m'aider! Wink

Mon probleme porte aux endroits du code en gras.

A bientot

Corentone

PS:Le script est volontairement incomplet, rien ne sert de vous encombrer avec des infos inutiles et exterieures a mon interrogation.

EDIT:
modif. du code pour préserver la coloration du PHP


RE: Organisation<> Requete SQL, PoO - Loetheri - 18-06-2007

Je ne saurais t'aider car je ne m'intéresse pas à l'objet en PHP. Mais je trouve dommage que parmi tous les ténors de l'objet, aucun n'ait dégainé soit te répondre soit avoir une précision.

Enfin ... bon courage quand même.

Edit : Ce message bien sarcastique est voulu. Il est facile de promouvoir une idée. Encore faut-il lui donner la possibilité de la laisser vivre.
Maintenant, ceux qui clament que l'objet est la meilleure façon de programmer, je crois que cela serait bien de l'aider aussi afin de démontrer tous les avantages que vous criez.

Merci de votre compréhension.


RE: Organisation<> Requete SQL, PoO - pascal - 18-06-2007

pas la peine d'être sarcastique loetheri, le lundi matin est difficile pour tout le monde...

la question, c'est du SQL, pas de l'objet.

en gros il faut faire un UPDATE multi-table :
http://dev.mysql.com/doc/refman/5.0/fr/update.html

quelquechose comme:
Code PHP :
<?php 
$query
= 'UPDATE dj, objets, categorie_objet
SET dj.forme_dj = dj.forme_dj-20,
dj.xp_dj=dj.xp_dj+categorie_objet.xp
entrainement_dj=CURRENT_DATE() WHERE
(jointure dj - objets )
AND (jointure objets - categorie_objet )
AND id_dj='
.$this->id_dj

voilà pour les grandes lignes.

A+

Pascal


RE: Organisation<> Requete SQL, PoO - barst - 18-06-2007

sympa la réponse et j'en apprends au passage.
Je ne savais pas que l'update pouvais être multi-table.
Je vais méditer dessus pour une future utilisation


RE: Organisation<> Requete SQL, PoO - corentone - 18-06-2007

@Loetheri, pas la peine d'en vouloir aux autres...de toute facon j'ai continué à reflechir a ma question...

et puis c'etait vraiment compliqué comme question...(niveau organisation je parle...)

Finalement, j'avais pensé a une triple requete! Mais le probleme c'est que pour une ligne d'une table j'avais plusieurs fois 4 ou 5lignes d'une autre table, il n'a donc pas aimé!

Donc finalement ca sera une requete simple pour le DJ, et une requete jointe pour les objets Smile

Note: j'avais fait la requete triple pour la tester dans phpmyadmin...elle etait super belle, je suis decu de m'en separer!

Et franchement vive la POO Smile
Salut a tous, merci a pascaltje d'avoir repondu et a loetheri d'avoir bougé les gens.

Corentone


RE: Organisation<> Requete SQL, PoO - Loetheri - 18-06-2007

pascaltje, drôle de lundi matin ... surtout quand le dimanche après-midi est un lundi matin ;-)

Enfin, le problème est résolu mais l'organisation des choses est en rapport avec le SQL et l'objet (ou le procédural). Enfin ^^