Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

the fonctions ! Ausecour !

The fonctions ! Ausecour !


The fonctions ! Ausecour !     Posté le 7/07/2005 à 00:00
Taotzu
Membre
Taotzu
156 posts
Inscrit le : 8/02/2005
Slt all, alors la j'ai un probléme pour créer une fonction !, j'explique :

Je suis entrain de faire une map ou l(ont peut se déplacer grace a la souris en cliquant sur la case voulue, alors chaque case est indépendente de l'otre.

ma page map01.php :

<? $v "0"// Ligne vertical numero : ??>
<? 
// CELULE 01 //////////////////////////////////////////////////////////////////////////////// ?>
<? $h
="1"?>
  <form method="post" action="<? echo $move?>">
  <input type="hidden" id="gps_v" name="gps_v" value="<? echo $v?>">
  <input type="hidden" id="gps_h" name="gps_h" value="<? echo $h?>">
  <td id="00" height="32" width="32" <? echo $style_td_map?>>
  <div align="center"><? include("map/fonction_map.php"); ?></div></td></form>

<? // CELULE 02 //////////////////////////////////////////////////////////////////////////////// ?>
<? $h
="2"?>
<form method="post" action="<? echo $move?>">
  <input type="hidden" id="gps_v" name="gps_v" value="<? echo $v?>">
  <input type="hidden" id="gps_h" name="gps_h" value="<? echo $h?>">
  <td id="01" height="32" width="32" <? echo $style_td_map?>>
  <div align="center"><? include("map/fonction_map.php"); ?></div></td></form>
    
<? // CELULE 03 //////////////////////////////////////////////////////////////////////////////// ?>
<? $h
="3"?>
<form method="post" action="<? echo $move?>">
  <input type="hidden" id="gps_v" name="gps_v" value="<? echo $v?>">
  <input type="hidden" id="gps_h" name="gps_h" value="<? echo $h?>">
  <td id="01" height="32" width="32" <? echo $style_td_map?>>
  <div align="center"><? include("map/fonction_map.php"); ?></div></td></form>
    
<? // CELULE 04 //////////////////////////////////////////////////////////////////////////////// ?>
<? $h
="4"?>
  <form method="post" action="<? echo $move?>">
  <input type="hidden" id="gps_v" name="gps_v" value="<? echo $v?>">
  <input type="hidden" id="gps_h" name="gps_h" value="<? echo $h?>">
  <td id="01" height="32" width="32" <? echo $style_td_map?>>
  <div align="center"><? include("map/fonction_map.php"); ?></div></td></form>


La ci_dessus c'est les 4 premiere case de ma map, vous voyer j'inclue "fonction_map.php" pour chaque case, mais le probléme c'est qu'il y as 200 case, donc j'me suis diriger pour faire une fonction que j'apelerais comme sa "case_map();"

Et le probléme que j'ai c'est pour que la fonction "case_map" recupere tt les variable que j'ai declarer, soit dans la page "index", ou dans la page map.

Exemple : en haut de ma page map je mes c'est quel ligne verticale "<? $v="0"; ?>" et pour chaque case je mes le numero horizontale "<? $h="1"; ?>".

Comment j'pe faire pour qu'une fonction prennne en compte toutes c'est variable ?

Merci!

________________________

 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 10:39
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
J\'avou que j\'ai un peut de mal à comprendre ...
Alors, déjà, je pense qu\'il faudrai plutot faire une boucle t non écrire les 200 cases comme ça.

Genre :
<?php
$v_max
=200;

for(
$v=1$v<$v_max$v++){
    echo 
    <
form name="form_\'.$v$h.\'\" method=\"post\" action=\"\'.$move.\'\">
    <input type=\"hidden\" id=\"gps_v\" name=\"gps_v\" value=\"\'.$v.\'\">
    <input type=\"hidden\" id=\"gps_h\" name=\"gps_h\" value=\"\'.$h.\'\">
    <td id=\"01\" height=\"32\" width=\"32\" \'.$style_td_map.\'>
    <div align=\"center\">\';
        include(\"map/fonction_map.php\");
    echo \'
    </div></td>
    </form>
    \';

}
?>



Ensuite; pour ce qui est du pb de variables :
Dans une fonction, la portée des variables change. Une variable dans une fonction n\'est pas accéssible en dehor. Une variable en dehor d\'une fonction ,\'est pas accésible dans une fonction.

La solution est de les faire ou passer en paramettre (ex : fonction($param1, $param2)) ou, de les mettre en variable global.
ex :
function lafonction($param1){
global $unevar;
}

Ensuite, pour avoir un apreçu facile à comprendre, voici un bon lien : http://php-tools.org/manuel-php/fonctions/language.variables.scope.php

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 11:32
Taotzu
Membre
Avatar
156 posts
Inscrit le : 8/02/2005
Wow, merci ! c\'est super comme sa ! la boucle c\'est l\'top... sa marche,comme sur 2 jambe !

Bon j\'me lance dans la fonction ! smiley

Merci bien pour c\'est superbe expliquation !

_______________________

 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 11:57
Taotzu
Membre
Avatar
156 posts
Inscrit le : 8/02/2005
Bon j\'me suis lancer dans la fonction et sa marche sauf pour un truc que j\'comprend pas : sa m\'affiche cette erreur :

Fatal error: Cannot redeclare case_map() (previously declared in /home2/a/artmatik/www/skp/map/map/fonction_map.php:4) in /home2/a/artmatik/www/skp/map/map/fonction_map.php on line 2

alors sa donne sa : ma page \"map.php\"

<? include("map/fonction_map_2.php\"); 
   include(\"map/fonction_map.php\");

$v=0;
$h_max=21;

for($h=1; $h<$h_max; $h++){
    echo \'
    <form name=\"form_\'.$h.\'\" method=\"post\" action=\"\'.$move.\'\">
    <input type=\"hidden\" id=\"gps_v\" name=\"gps_v\" value=\"\'.$v.\'\">
    <input type=\"hidden\" id=\"gps_h\" name=\"gps_h\" value=\"\'.$h.\'\">
    <td id=\"01\" height=\"32\" width=\"32\" \'.$style_td_map.\'>
    <div align=\"center\">\'; case_map();
    echo \'</div></td></form>\';
}
?>



ma page \"fonction_map.php\" :

<?
function case_map() {

 
$map_name_fonction $GLOBALS["map_name\"];
 $req_v = $GLOBALS[\"v\"];
 $req_h = $GLOBALS[\"h\"];
 $player_v= $GLOBALS[\"case_v\"];
 $player_h= $GLOBALS[\"case_h\"];
 $img_map_f= $GLOBALS[\"img_map\"];
 $ext_img_f= $GLOBALS[\"ext_img\"];
 
         $requete = \"SELECT * FROM $map_name_fonction where gps_v=\'$req_v\' AND gps_h=\'$req_h\'\";
         $query = mysql_query($requete) or die (\'Erreur : \'.mysql_error());
         $result = mysql_numrows($query); $row = mysql_fetch_array($query);
if ($player_v == $row[\"gps_v\"] && $player_h == $row[\"gps_h\"]) {
         echo \'<img src=\"\'.$img_map_f.\'/p_herbe.\'.$ext_img_f.\'\" alt=\"\'.$row[\'name\'].\'\" border=\"0\">\';
   }else{
         echo \'<input type=\"image\" img src=\"\'.$img_map_f.\'/\'.$row[\'img\'].\'.\'.$ext_img_f.\'\" alt=\"\'.$row[\'name\ '].\'\" border=\"0\">\';
         }
        } 

?>



j\'comprend pas parceque j\'pe me deplacer sur la premiere ligne \"0/1 à 20\"

_______________________

 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 12:02
Taotzu
Membre
Avatar
156 posts
Inscrit le : 8/02/2005
A mes j\'explique mieu : j\'ai une page map ou j\'inclue 10 fichier (map01.php,map02,...) jusqua 10 et un fichier contier une ligne horizontale qui vas jusqua 20 case ! j\'ai esayer d\'y inclure que la premiere ligne donc (map01.php), et la... plus d\'erreur ! faut t\'il que je fasse une fonction pour chaque ligne ?

_______________________

 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 12:02
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Pkoi tu include deux pages au début ?
essaye juste ça, en mettant juste la fonction que tu as cité.
<?php
include("map/fonction_map.php\");

$v=0;
$h_max=21;

for($h=1; $h<$h_max; $h++){
    echo \'
    <form name=\"form_\'.$h.\'\" method=\"post\" action=\"\'.$move.\'\">
    <input type=\"hidden\" id=\"gps_v\" name=\"gps_v\" value=\"\'.$v.\'\">
    <input type=\"hidden\" id=\"gps_h\" name=\"gps_h\" value=\"\'.$h.\'\">
    <td id=\"01\" height=\"32\" width=\"32\" \'.$style_td_map.\'>
    <div align=\"center\">\'; case_map();
    echo \'</div></td></form>\';
}
?>



_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 12:06
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Au faite, ta fonction pourrai être comme ça aussi :
<?php
    
function case_map() {

    
$map_name_fonction $GLOBALS["map_name\"];
    $req_v = $GLOBALS[\"v\"];
    $req_h = $GLOBALS[\"h\"];
    $player_v= $GLOBALS[\"case_v\"];
    $player_h= $GLOBALS[\"case_h\"];
    $img_map_f= $GLOBALS[\"img_map\"];
    $ext_img_f= $GLOBALS[\"ext_img\"];

             $requete = \"SELECT * FROM $map_name_fonction where gps_v=\'$req_v\' AND gp s_h=\'$req_h\'\";
             $query = mysql_query($requete) or die (\'Erreur : \'.mysql_error());
             $result = mysql_numrows($query); $row = mysql_fetch_array($query);
    if ($player_v == $row[\"gps_v\"] && $player_h == $row[\"gps_h\"]) {
             $texte=\'<img src=\"\'.$img_map_f.\'/p_herbe.\'.$ext_img_f.\'\" alt=\"\'.$row[\'name\'].\'\" border=\" 0\">\';
       }else{
             $texte=\'<input type=\"image\" img src=\"\'.$img_map_f.\'/\'.$row[\'img\'].\'.\'.$ext_img_f.\'\"  alt=\"\'.$row[\'name\'].\'\" border=\"0\">\';
             }
            }
return $texte;
?>



Ensuite, ton devient :
<?php
include("map/fonction_map.php\");

$v=0;
$h_max=21;

for($h=1; $h<$h_max; $h++){
    echo \'
    <form name=\"form_\'.$h.\'\" method=\"post\" action=\"\'.$move.\'\">
    <input type=\"hidden\" id=\"gps_v\" name=\"gps_v\" value=\"\'.$v.\'\">
    <input type=\"hidden\" id=\"gps_h\" name=\"gps_h\" value=\"\'.$h.\'\">
    <td id=\"01\" height=\"32\" width=\"32\" \'.$style_td_map.\'>
    <div align=\"center\">
        \'.case_map().\'
    </div></td></form>\';
}
?>



_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 12:10
sky
Administrateur
Avatar
Site perso
4188 posts
Inscrit le : 13/08/2003
Tu doit inclure la fonction qu\'une seul fois.
Les pages inclus plus bas auront accé à la fonction inclus précédemment.

ex :
dans index.php tu inclus fonction.php et centre.php
dans centre.php tu inclus $menu.php

index.php, centre.php et menu.php aurons tous les 3 accés aux fonctions contenu dans focntion.php.

Mais, si tu inclus les fonctions dans chaque page, les fonctions seront déclaré autant de fois, d\'ou les erreurs.

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : The fonctions ! Ausecour !     Posté le 7/07/2005 à 12:17
Taotzu
Membre
Avatar
156 posts
Inscrit le : 8/02/2005
Yes ok, j\'ai piger ! maintenant j\'suis plus obliger d\'avoir 10 page a inclure avec la boucle ! j\'ai besoin que d\'une seul page pour toute la map ! smiley

on as reduit le nombre d\'include de ~200 à 2 !! smiley

Merci bien !

_______________________

 
Vous n'est pas connecté en temps que membre, parceque j'en ai marre du spam, SEUL les membres peuvent poster des messages sur le forum.

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net