JeuWeb - Crée ton jeu par navigateur

Version complète : Besoin d'aide pour une fonction svp
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
bonjour ,je vous explique mon problème

j'ai deux tables :

l'une appeler user ,l'autre appeler ressource


Dans la table user ,il a les champs "id" "attaque" et "defence"
dans la table ressource,il y a les champs "id" "minedefer" et "minedebois"

voici un tableau récapitulatif

TABLE user
CHAMPS id attaque defence
VALEURS 1 0 0

TABLE ressource
CHAMPS id minedefer minedebois
VALEURS 1 0 0


jai creer deux tableaux

Code PHP :
<?php 
$element
(

1=> "attaque",
2 => "defence",
3=> "minedefer",
4 => "minedebois",
);

$requis (

3=> array( 1= >2, 2 => 3)
);

En gros cela signifie que pour avoir l'objet $element[3] (mine de fer), il faut $element[1] au niveau 2 ET $element[2] au niveau 3, donc j'aimerais avoir une fonction qui me dis si oui ou non un objet est accessible.

J'ai cet fonction qui marche uniquement quand les champs sont dans la meme table:
Code PHP :
<?php 
function IsTechnologieAccessible($iduser, $idressource, $Element) {
global
$requis, $element,$dbh;

$id=$_SESSION['id'];
$res= "SELECT * FROM ressource WHERE id='$id'";
$sth1=$dbh->query($res);
$result1 = $sth1->fetchALL(PDO::FETCH_ASSOC);
foreach(
$result1 as $planet){

if (isset(
$requeriments[$Element])) {
$enabled = true;
foreach(
$requeriments[$Element] as $ReqElement => $EleLevel) {
if (@
$user[$element[$ReqElement]] && $user[$element[$ReqElement]] >= $EleLevel) {
// break;
} elseif ($planet[$element[$ReqElement]] && $planet[$element[$ReqElement]] >= $EleLevel) {
$enabled = true;
} else {
return
false;
}
}
return
$enabled;
} else {
return
true;
}
}
}
Voila merci de m'eclairer
Il faut que tu apprennes à faire des jointures entre tes tables ^^.

http://www.phpsources.org/tutoriel-join.htm

Sinon, défense ça s'écrit avec un "S".

Kéké.
Y a quelques problèmes d'optimisation aussi. Vire l'étoile de ta requête sql et précise les champs, c'est moins gourmand ^^
Ouai il y a des variable qui sont utilisé et qui n'existe pas dans ta fonction..
$user et $requirements par exemple

Et sache qu'il vaut mieux utiliser isset que l'opérateur @ qui peux cacher d'autres erreurs...
(07-05-2009, 02:28 PM)Zamentur a écrit : [ -> ]Ouai il y a des variable qui sont utilisé et qui n'existe pas dans ta fonction..
$user et $requirements par exemple

Et sache qu'il vaut mieux utiliser isset que l'opérateur @ qui peux cacher d'autres erreurs...

$user et $requirements sont declarer plus haut ,ne tinquiete pas^^ je vais essayer avec un isset , merci de vos reponses
Hum .. pas bien de mélanger les variables en anglais et francais .. :nonon:

Au lieu de passer par des objets je procède par chaine de caractère.

$requis = "1:2/2:1"

Element 1 au niveau 2 et Element 2 au niveau 1

Pour les récupérer explode, re explode pour avoir un tableau de cette forme :
$tableau[1] = 2
$tableau[2] = 1

Un foreach en comparant a ce que possède le joueur et op tu as tout.

On peut directement passer par des tableaux, mais bien moins pratique a changer, et deux explodes ne 'consomme' rien