Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


 
AccueilSiteDernières imagesRechercherS'enregistrerConnexion
Le Deal du moment : -21%
LEGO® Icons 10329 Les Plantes Miniatures, ...
Voir le deal
39.59 €

 

 Comparer et éditer

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Auteur Message
harvox
Membre royal très actif
Membre royal très actif
harvox

Masculin Nombre de messages : 1187
Point(s) Fort(s) : Event/mapping
Point(s) Faible(s) : ruby ?
Niveau RPG Maker : Malgrès mes questions je connais pas mal le logiciel, je dirais 7/10
Date d'inscription : 05/04/2007

Comparer et éditer Vide
MessageSujet: Comparer et éditer   Comparer et éditer Icon_minitimeMer 2 Juil 2008 - 23:03

Salut Smile

J'ai fais ce script php qui devrais faire ceci :

Comparer et éditer Nouveauimagebitmapzy4

Code:
[Character]
Account=test8
CharName=test8
CharUID=1000023
Class=145
Model=2012001
Face=0
Reborn=3
Level=120
Experience=72000000
Strength=700
Agility=700
Vitality=700
Spirit=700
CurrentHP=100000
CurrentMP=75
StatPoints=0
LocationMap=1002
LocationX=440
LocationY=384
Silvers=999600
CPs=100
Hair=410
PKPoints=0
Eq_HeadGear=112949-7-3-255-3-3
Eq_Necklace=121229-7-3-255-3-3
Eq_Armor=139299-7-3-255-3-3
Eq_RightHand=421239-7-3-255-3-3
Eq_LeftHand=0
Eq_Ring=152239-7-3-255-3-3
Eq_Boots=160229-7-3-255-3-3
Eq_Garment=0
Eq_Adds=0
Inventory1=
Inventory2=
Inventory3=
Inventory4=
Skills=1120,3-1021,0-1000,4-1115,4-1002,3-1046,4-1045,4-1001,3-
Profs=420,20-410,20-500,20-480,20-0,20-421,20-
Defense=6675
Ban=0
Dodge=154
[WareHouse]
Pass=0
Money=0
Tc=
Pc=
Ma=
Bi=
Am=
Dc=
Sc=
Home=

Chercher la ligne "Silvers=xxx" et remplacer la valeur qu'il y a après le = par 0

J'ai fais ceci, mais lors du début de la boucle for il y a un problème :'(

Parse error: syntax error, unexpected T_DO in C:\wamp\www\site\restau.php on line 46

Code:
<form name="acces" method="post" action="?">
      Pseudo : <input type="text" name="pseudo" /><br /> <br/>
      <input type="submit" name="Créer" />
   </form>
   
<?php
if($fichier = fopen('C:\Mon serveur privé\TheCOServer\TheCOServer\Server\Accounts'.$pseudo.'.acc', "r")) //si l'ouverture a réussi
{
  $accname = fgets($fichier);
  $accname = fgets($fichier); //deux fois pour lire la 2eme ligne
  //aprés on coupe la chaine
  $accname = explode("=", $accname);
  //$accname[1] vaut ce qu'il y a aprés le =
 
  $fclose($fichier);
 
  //On verfie si les variable son bien egale
  if ($pseudo == $accname['1'])
  {
      $fichier = fopen('C:\Mon serveur privé\TheCOServer\TheCOServer\Server\Characters'.$pseudo.'.CHR', "r+")
      for ($i = 1; $i <= 21; $i++) //j'espére que sa fait bien 21 je peux pas test
      {
        $silvers = fgets($fichier);
      }
      fseek($fichier, 0); //on revient au debut de la 29eme ligne
      fputs($fichier, "Silvers=0");
      fclose($fichier);
  }
}
else
{
  echo 'Ce compte n\'existe pas';
}
?>

Merci d'avance si quelqu'un peux m'aider.
Revenir en haut Aller en bas
http://teamrpgmakerxp.forumactif.com/
Samarium
Conquérant
Conquérant
Samarium

Masculin Nombre de messages : 2183
Age : 35
Point(s) Fort(s) : Programmation : PHP, Ruby, Java
Point(s) Faible(s) : Dessin
Niveau RPG Maker : Expert
Logiciel préféré : RMXP ; IGM
Date d'inscription : 05/08/2006

Comparer et éditer Vide
MessageSujet: Re: Comparer et éditer   Comparer et éditer Icon_minitimeJeu 3 Juil 2008 - 0:48

Salut,

Il manque un point virgule (Wink à la fin de
Code:

 $fichier = fopen('C:\Mon serveur privé\TheCOServer\TheCOServer\Server\Characters'.$pseudo.'.CHR', "r+")
Revenir en haut Aller en bas
https://rpgcreative.forumgaming.fr
harvox
Membre royal très actif
Membre royal très actif
harvox

Masculin Nombre de messages : 1187
Point(s) Fort(s) : Event/mapping
Point(s) Faible(s) : ruby ?
Niveau RPG Maker : Malgrès mes questions je connais pas mal le logiciel, je dirais 7/10
Date d'inscription : 05/04/2007

Comparer et éditer Vide
MessageSujet: Re: Comparer et éditer   Comparer et éditer Icon_minitimeJeu 3 Juil 2008 - 10:32

Merci Smile

Mais heu...sa fonctionne pas :'(
Enfin l'erreur est partie mais le script marche pas :'(
Revenir en haut Aller en bas
http://teamrpgmakerxp.forumactif.com/
Jaconil
Villageois (Nv 1)
Villageois (Nv 1)


Nombre de messages : 1
Date d'inscription : 05/03/2008

Comparer et éditer Vide
MessageSujet: Re: Comparer et éditer   Comparer et éditer Icon_minitimeSam 2 Aoû 2008 - 16:20

Salut,

Ma réponse est un peu tardive, il se peut que tu aies déjà résolu ton problème, mais j'ai remarqué que plusieurs petites erreurs se glissaient dans ton code.

Tout d'abord, tu peux rajouter une condition :
Code:
if (isset($_POST['Creer']))
Qui permet de ne pas avoir "Ce compte n'existe pas" au premier chargement de la page. J'ai par ailleurs remplacé ton "Créer" par "Creer" pour éviter d'avoir des problèmes d'accents si la page change d'encodage (on sait jamais).

Ensuite, ta variable '$pseudo' n'est pas défini, sauf si tu as activé le module 'register_globals' (ce qui est déconseillé pour la sécurité du serveur), et ensuite il faudrait la sécuriser pour l'utiliser sans problème dans la suite du code, ce qui donne :
Code:
$pseudo = mysql_escape_string($_POST['pseudo']);

Pour ton premier fopen, rajoute un '@' devant pour éviter une erreur si le pseudo (et le fichier) n'existe pas, et sur Windows il faut aussi échapper les antislashs en en mettant 2 ('\\'), et il me semble que tu as oublié des \\ pour séparer le dernier dossier de ton fichier.

'fclose' étant une fonction, ce n'est pas la peine de mettre un '$' devant aussi Wink

Ensuite pour ta seconde condition, il faut rajouter un 'trim' devant '$accname[1]', et entre les crochets, ne mets pas de ' vu que c'est un tableau et que tu y recherches un indice dedans.

Pour ton second 'fopen', il faut aussi doubler les antislashs, et en rajouter aussi juste avant le nom du fichier.

Après il y a un problème avec le 'fseek' car si tu mets 0, il ne revient pas au début de la ligne, mais au début du fichier Wink
Il faut pour cela récupérer le nombre d'octets lus dans le fichier avec 'ftell', en soustrayant ceux de la ligne courante pour y revenir au début. Ce qui donne :
Code:
$octets = ftell($fichier) - strlen($silvers);       
fseek($fichier, $octets); //on revient au debut de la 29eme ligne
(et c'est la ligne 21, pas 29 Wink)

Alors ensuite je me suis permis de rajouter des lignes pour écrire convenablement dans le fichier, donc j'ai d'abord calculé la différence d'octets entre le premier chiffre (999600 et 0), et ensuite je rajoute autant d'espace que la différence d'octets, il faudra juste utiliser 'trim' pour les enlever lors d'une prochaine lecture. (Attention cependant à ce qu'il y ait toujours un chiffre derrière le =, sinon le script bugguera). Et enfin il faut rajouter le caractère "\n" (avec des doubles quotes pour l'interpréter) pour indiquer qu'on doit sauter une ligne ensuite. Donc dans le script ce plus gros morceau donne ça :
Code:
$nouveau_texte = "Silvers=0";
$lg1 = strlen($nouveau_texte);
$lg2 = strlen($silvers);
       
$diff = $lg2 - $lg1;
       
if ($diff > 0)
{
   for ($i=1; $i < $diff; $i++) {$nouveau_texte .= ' ';}
}
       
fputs($fichier, $nouveau_texte."\n");

Bon alors je remets le script en entier ici
Code:

<form name="acces" method="post" action="?">
   Pseudo : <input type="text" name="pseudo" /><br /> <br/>
    <input type="submit" name="Creer" />
</form>
 
<?php
if (isset($_POST['Creer']))
{
   $pseudo = mysql_escape_string($_POST['pseudo']);
   
   if($fichier = @fopen('C:\\Mon serveur privé\\TheCOServer\\TheCOServer\\Server\\Accounts\\'.$pseudo.'.acc', "r")) //si l'ouverture a réussi
   {
     $accname = fgets($fichier);
     $accname = fgets($fichier); //deux fois pour lire la 2eme ligne
     //aprés on coupe la chaine
     $accname = explode("=", $accname);
     //$accname[1] vaut ce qu'il y a aprés le =

     fclose($fichier);
   
     //On verfie si les variable son bien egale
     if ($pseudo == trim($accname[1]))
     {
         $fichier = fopen('C:\\Mon serveur privé\\TheCOServer\\TheCOServer\\Server\\Characters\\'.$pseudo.'.CHR', "r+");
         for ($i = 1; $i <= 21; $i++) //j'espére que sa fait bien 21 je peux pas test
         {
           $silvers = fgets($fichier);
         }
       
        $octets = ftell($fichier) - strlen($silvers);       
       
        fseek($fichier, $octets); //on revient au debut de la 21eme ligne
       
        $nouveau_texte = "Silvers=0";
        $lg1 = strlen($nouveau_texte);
        $lg2 = strlen($silvers);
       
        $diff = $lg2 - $lg1;
       
        if ($diff > 0)
        {
         for ($i=1; $i < $diff; $i++) {$nouveau_texte .= ' ';}
        }
       
         fputs($fichier, $nouveau_texte."\n");
         fclose($fichier);
     }
   }
   else
   {
     echo 'Ce compte n\'existe pas';
   }
}
?>

Voilà j'espère que j'ai pu t'aider, si tu as d'autres questions n'hésite pas.

Jaconil
Revenir en haut Aller en bas
harvox
Membre royal très actif
Membre royal très actif
harvox

Masculin Nombre de messages : 1187
Point(s) Fort(s) : Event/mapping
Point(s) Faible(s) : ruby ?
Niveau RPG Maker : Malgrès mes questions je connais pas mal le logiciel, je dirais 7/10
Date d'inscription : 05/04/2007

Comparer et éditer Vide
MessageSujet: Re: Comparer et éditer   Comparer et éditer Icon_minitimeSam 2 Aoû 2008 - 18:06

Yop merci Smile
J'avais résolu mais oublié de le dire^^ x_x
Au moins grâce à toi j'ai compris comment marche cette foutu fonction : mysql_escape_string

xD

Mci =)
Revenir en haut Aller en bas
http://teamrpgmakerxp.forumactif.com/
Contenu sponsorisé




Comparer et éditer Vide
MessageSujet: Re: Comparer et éditer   Comparer et éditer Icon_minitime

Revenir en haut Aller en bas
 

Comparer et éditer

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum: Vous ne pouvez pas répondre aux sujets dans ce forum
 :: HTML/ CSS/ JavaScript/ PHP :: Aide -
|
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forumactif.com