JeuWeb - Crée ton jeu par navigateur
[Résolu]Aide : Script de missions ( xp etc... ) - 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 : [Résolu]Aide : Script de missions ( xp etc... ) (/showthread.php?tid=5581)

Pages : 1 2


[Résolu]Aide : Script de missions ( xp etc... ) - alexlemaitre - 24-07-2011

Bonjour à tous,

Aujourd'hui, après de nombreux essais, je m'en remet à vous pour vous demander un petit coup de main.
Problème : Je souhaite créer une fonction permettant la validation ou NON d'une mission pour l'utilisateur connecté ( une mission basique quoi ^^ ).
Néanmoins, je n'arrive pas à faire le lien entre ma fonction et lorsque le joueur clique sur le lien pour valider la mission. De plus, je nécessite un petit bout de code qui me permettrai de dire si le joueur à un niveau assez élevé pour faire ou non la mission ( système de IF je suppose ).

Voici ci-dessous, les parties de codes qui sont, comment dire, défectueuses x).

Voici le fichier intégrant la fonction nommé fonctions.php

<?php
function valider_mission($id,$argent)
{
$id = $job['id'];
$argent = $job['argent'];

$pseudo = $_SESSION['login'];
if(isset($_GET["id"]))
{
switch($id)
{
case 1:
"UPDATE membre SET argent=argent+'".$argent."' WHERE pseudo='".$pseudo."'";
break;
default:
echo 'Niveau requis incorrect';

}
}
return $id;
}

?>

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

Le fichier listant les différentes missions :


<?php

include('inc/membre/connect.php');

$sql = ("SELECT * FROM mission ORDER BY id");
$req = mysql_query($sql) or die("Erreur : ".mysql_error());
$data = mysql_num_rows($req);

if($data)
{
?>
<table border="2">
<tr>
<td>ID de mission</td>
<td>Description</td>
<td>Gain d'argent</td>
<td>Expérience potentielle</td>
<td>Niveau requis</td>
<td>Faire la mission</td>
</tr>

<?php

while($job = mysql_fetch_array($req))
{
?>
<tr>
<td><?php echo $job['id']; ?></td>
<td><?php echo $job['description']; ?></td>
<td><?php echo $job['argent']; ?> $</td>
<td><?php echo $job['experience']; ?> XP</td>
<td><?php echo $job['niveau']; ?></td>


<td><a href="mission.php?id=<?php valider_mission($job['id'], $job['argent']); ?>">Valider</a></td>
</tr>


<?php
}?> </table> <?php
}

?>

Puis le fichier mission.php qui ne fait d'une fonction require_once au fichier fonctions.php


<?php

require('inc/membre/fonctions.php');

?>

Merci à vous, si vous nécessitez des précisions pour m'aider à palier le problème, je suis disponible Smile.

Alex,


RE: Aide : Script de missions ( xp etc... ) - Kassak - 24-07-2011

Je ne vois pas ou est la difficulté, lorsque le joueur clique sur Valider, tu vérifies ce que tu dois vérifier (niveau et si il a tout ce qu'il faut pour valider la mission), si c'est bon, tu met à jour ta bdd, sinon tu rediriges.

Tu n'arrives pas à faire quoi exactement ? Appeler une fonction?


RE: Aide : Script de missions ( xp etc... ) - alexlemaitre - 24-07-2011

Oui, en fait, je n'arrive pas à appeler cette fonction A TRAVERS le lien permettant de valider la mission. PHP executant uniquement du code coté serveur, il est apparemment impossible d'inclure une fonction du coté client. Je sais donc pas comment faire =S. De plus, chaque mission à un ID que je lui attribue automatiquement par l'incrementation automatique sur la BDD.

Du coup, je pense que j'essai de me compliquer la vie à essayer de valider par l'ID et tout alors que je pense qu'il y a plus simple.

Mais je veux aussi éviter que lorsqu'on valide une mission, sa les valides toutes, d'ou l'idée de l'ID permettant d'identifier quelle mission donne quels bonus.

Alex,


RE: Aide : Script de missions ( xp etc... ) - php_addict - 24-07-2011

(24-07-2011, 07:16 PM)alexlemaitre a écrit : Oui, en fait, je n'arrive pas à appeler cette fonction A TRAVERS le lien permettant de valider la mission. PHP executant uniquement du code coté serveur, il est apparemment impossible d'inclure une fonction du coté client. Je sais donc pas comment faire =S. De plus, chaque mission à un ID que je lui attribue automatiquement par l'incrementation automatique sur la BDD.

ou la la la...et bein... tu fait pointer un lien HTML vers une page qui appelle ta fonction...

je comprends même pas comment tu as pu envisager d'excuter une fonction php côté client...




RE: Aide : Script de missions ( xp etc... ) - alexlemaitre - 24-07-2011

Mais je ne l'ai pas envisagé x). Je le savais mais histoire de tester.

Quand tu dis, tu fais pointer un lien vers une page qui appelle la fonction, si cette fonction est dans un fichier qui lui même est inclus sur la fameuse page, entre autre dans l'exemple, mission.php, comment je pourrais faire ?

EDIT : Peut-être devrais-je utiliser la method $_GET pour inclure l'ID de la mission dans l'URL et donc, update les stats du membre qui effectue la mission ?

Alex,


RE: Aide : Script de missions ( xp etc... ) - Akira777 - 25-07-2011

Hum j'ai presque envie de dire que je ne sais pas comment tu as pu coder cette fonction PHP sans savoir comment l'utiliser... Ne te vexe pas surtout, pas c'est un peu surprenant...

Code :
<?php

include('inc/membre/connect.php');

if (!empty($_GET['id']))
{
    if (valider_mission($_GET['id']))
    {
        echo 'Ta mission a bien été lancée';
     }
    else
    {
        echo 'Ta mission na pu être lancée';
     }
}

# Ici ton code d'affichage des différentes missions

?>

Ta façon de travailler est bizarre... Premièrement, mis à part l'Id de ta mission, je suis sûr que tu n'as pas besoin de transmettre autre chose dans l'URL.

Secondement, pour valider la mission, ta fonction doit récupérer avec cet Id, les infos de cette mission dans la base MySQL, notamment le niveau requis pour la faire (si j'ai bien compris), et ensuite, tu dois la vérifier avec un If pour afficher le bon message après exécution de la fonction, donc elle doit retourner TRUE ou FALSE.


RE: Aide : Script de missions ( xp etc... ) - alexlemaitre - 25-07-2011

Hé bien, on peut dire que je code un peu sur l'idée et puis, après le code viens, mais sans vraiment savoir si sa fonctionne.
Je suis pas encore un expert en fonction et je veux surtout très souvent compliquer la chose alors que je sais qu'il y a 10 fois plus simple. J'ai tendance à penser plus sur l'idée que sur le code à proprement parlé et je sais que c'est pas la meilleure des solutions.

Pour ce qui est de l'URL, non, je ne transmet rien d'autre que l'ID.

Concernant ton code de structure proposé Akira777, il réfère à quel fichier ? La fonctions ou la page des missions qui sont affichées ? Néanmoins, je vais prendre le code proposé et essayer de voir ce que je peux faire avec ça.

Encore merci de m'aider à trouver une solution Smile.

Alex,



RE: Aide : Script de missions ( xp etc... ) - php_addict - 25-07-2011

en espérant ne pas te vexer, mais c'est pas comme ca que tu doit t'y prendre, tu doit apprendre à programmer, et commencer par des trucs simple, un jeu de morpion, un mini forum, etc...


RE: Aide : Script de missions ( xp etc... ) - alexlemaitre - 25-07-2011

Non tu ne me vexe pas du tout ^^. Je sais bien que faut commencer par un début, mais si j'ai pas l'idée, j'y pense même pas. Un morpion, sa me parrait tellement con que je serai même pas foutu de le faire correctement x). Si je songe a déjà quelque chose d'un peu plus complexe, j'ai l'idée et je m'investis.

Bon enfin, pour mon problème, je pense que j'ai la solution Smile.

Alex,

EDIT : J'ai résolu le problème par une Form action Smile. Merci encore pour vos informations et vous coups de mains.


RE: [Résolu]Aide : Script de missions ( xp etc... ) - Akira777 - 25-07-2011

Alexlemaitre, je ne pense pas qu'un FORM soit une bonne méthode pour résoudre ton problème. Je pense que tu ne maitrises pas les GET et POST pour faire ça.

La méthode la plus simple (à mon sens) et d'avoir une page "mission_form.php" qui contient le listing de tes missions et une page "mission_valid.php" qui validera ta mission à l'aide des variables passées en GET.

Exemple :

Fichier "mission_form.php" :


<?php

require "mon fichier mission.php";

$req_missions = mysql_query("requetes missions");

if (!$req_missions)
{
echo "il n'y a pas de missions";
}
else
{
$ret_missions = array();

while ($mission = mysql_fetch_assoc($req_missions))
{
$ret_missions[] = $mission;
}

foreach ($ret_missions as $key => $value)
{
echo "<p>".$value['mission_nom']." - <a href=\"mission_valid.php?mission_id=".$value['mission_id']."\">Accepter</a></p>";
}
}

?>

Fichier "mission_valid.php" :


<?php

require "mon fichier mission.php";

if (!empty($_GET['mission_id']))
{
if (valider_mission($_GET['mission_id']))
{
echo "mission lancée !";
}
else
{
echo "tu ne peux pas lancer cette mission";
}
}
else
{
echo "tu n'as pas sélectionné de mission";
}

?>

Ta fonction valider_mission() devrait ressembler à un truc du genre :


<?php

function valider_mission($mission_id)
{
global $joueur;

$req_mission = "SELECT * FROM missions WHERE mission_id = ".$mission_id." LIMIT 1";

$res_mission = mysql_query($req_mission);

if (!$res_mission)
{
return FALSE;
}
else
{
if (/*diverses vérification avant de lancer la mission*/)
{
return TRUE;
}
else
{
return FALSE;
}
}
}

?>

Voilà, si j'ai bien compris c'est à peu près ça que tu voudrais faire. Bon, le code que je te donne c'est le tout en version simplifiée au max, sans aucune sécurité ni
optimisation mais bon... Je pense que tu devrais t'en sortir un peu mieux en faisant quelque chose du genre.