Forum pour réunir les administrateurs de serveur L2
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  

Partagez | 
 

 [Resolu]Aide Script recipe (Php)

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Akira



Nombre de messages : 160
Age : 31
Date d'inscription : 08/01/2008

MessageSujet: [Resolu]Aide Script recipe (Php)   Dim 25 Jan 2009, 23:06

bonsoir a tous

voila comme précédament, je suis entraint de codé pour mo site un petit dropcalc perso que j'ai presque finis d'ailleur.... avec toutes les fonctionnalités qui vont avec...

Rechercher un recipe, mobs, (armures, armes, items) quels mobs le drops ou le spoils avec le taux chance et les autre item que possede le mobs, ça localisation sur une map (seul les GrandBoss ne sont pas localisable) et aussi quel npc tradeur vend l'item...

la possiblité de voir si l'item est craftable ou non

c'es la que j'ai besoin de votre aide...

le grand jules ma déja fourni des renseignents sur les tables a utilisé et mon permis de codé une parite

en grod la je liste que les ingrediants principaux, je voudrais encore detaillé.

voici mon code

Code:
echo'<table width="345" border="1">
  <tr>
    <td width="32" height="30"><span class="Style2">Items</span></td>
    <td><span class="Style2">Nom</span></td>
    <td width="80"><span class="Style2">Quantité</span></td>
  </tr>';
$rectem = mysql_query("SELECT rid, q, item FROM recitems WHERE rid ='".$res['id']."'");
  while($res2=mysql_fetch_array($rectem))
{

echo'<tr>
    <td ><img src="top/images/items/'.$res2['item'].'.gif"></td>';
   $item = $res2['item'];
   $item_name=mysql_query("SELECT name FROM etcitem WHERE item_id='".$item."'");
   $res3 = mysql_fetch_array($item_name);
   echo'<td>  <span class="Style2">'.$res3['name'].'</span></td>';
    echo'<td><center><span class="Style2">'.$res2['q'].'</span></center></td>';
   
  echo'</tr>';
  }
  echo'</table>';

je ne sais pas comment faire pour l'obligé a detaillé l'item principal confused

si quelqu'un a une idée je suis preneur scratch

merci de votre aidé

Cordialemnt akira


Dernière édition par Akira le Mer 28 Jan 2009, 06:45, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jules



Nombre de messages : 385
Localisation : Rome
Date d'inscription : 11/04/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 00:26

Bon alors sur ce coup, c'est mauvais...
Code:
while($res2=mysql_fetch_array($rectem))
{

echo'<tr>
    <td ><img src="top/images/items/'.$res2['item'].'.gif"></td>';
  $item = $res2['item'];
  $item_name=mysql_query("SELECT name FROM etcitem WHERE item_id='".$item."'");
Tu imbriques une requête dans une boucle Shocked ? Dans le principe, si t'a 7589 items à afficher, tu vas faire 7589 requêtes ?

Plus sérieusement, charges d'abord les items dont tu as besoin dans un tableau (array) qui contient lui même des tableaux (array) . En gros, tu vas devoir faire une requête qui va lire les items 1 à 1 et remplir des "cases" d'un tableau nommé "items" : $items[une variable qui s'incrémente à chaque boucle]. Dans cette variable, tu vas devoir remplir un autre tableau :
$item[1]['nom']
$item[1]['id']
$item[1]['crystal_type']
$item[1][etc etc etc etc]
$item[2]['nom']
$item[2]['id']
$item[2]['crystal_type']
$item[2][etc etc etc etc]
etc etc etc.

Une fois que tu auras ce tableau de tableaux qui représente les items de la DB, tu pourras le manipuler comme tu veux. Certes, ça va faire un peu chier php (donc apache), mais ça ne fera pas chier sql (et donc ni apache ni php qui va avec).

Il te faudra aussi faire un marqueur pour repérer les items qui sont craftables ou non. Et l'item parcouru est craftable, on lance la procédure, si non, on oublie. De cette façon, tu auras une boucle qui se répètera autant de fois qu'un item craftable est demandé, qu'il soit dans la liste des ingrédients ou non, qu'il soit de premier rang ou non.

Si t'as pigé le principe, l'algo n'est pas du tout compliqué à pondre, et une fois l'algo pondu, le code vient tout seul.

Bon courage.

PS : Jules est particulièrement intéressé par ton codage en cours. Peux-tu lui faire parvenir un exemplaire (archive du dropcalc prêt à tourner en local, ou presque) de ce qui est déjà fait qu'il regarde ce que tu devrais optimiser/sécuriser/arranger ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://l2jfr.jeun.fr/search.forum
Psychokiller1888



Nombre de messages : 114
Age : 32
Localisation : Suisse
Date d'inscription : 24/02/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 00:39

Pour l'avoir fait completement, je te dis que tu vas en chier pour le faire fonctionner correctement. Moi j'ai tourné comme ça:

Code:

      $ingredients_lists = explode(";;", $ingredients_list);

      foreach($ingredients_lists as $ingredients)
      {
         $ingredient_tab = explode(":", $ingredients);
         $ingredient = $ingredient_tab[0];
         $nbr = $ingredient_tab[1];

         $multiplicateur = $nbr;

         $ingredient_name = get_item($ingredient);

         $rec_icon = "<img src=\"./images/sfboard/items/".$ingredient.".gif\" width=\"32\" height=\"32\">";
         $tree .= "<br>     ".$puce1."".$rec_icon." ".$nbr." x <a href=\"/portal.php?pid=34&search=".$ingredient."\" class=\"menulink\">".$ingredient_name."</a>";

         $sql = "SELECT ingredients FROM recipes WHERE item_id = '$ingredient'";
         $result = mysql_query($sql);
         $count = mysql_num_rows($result);
         if ($count > 0)
         {
            $line = mysql_fetch_array($result);

            $ingredients_list_2 = $line['ingredients'];

            $ingredients_lists_2 = explode(";;", $ingredients_list_2);

            foreach($ingredients_lists_2 as $ingredients_2)
....................................
         else
         {
            if (array_key_exists($ingredient, $mat_base))
            {
               $mat_base[$ingredient][2] = $mat_base[$ingredient][2] + $multiplicateur;
            }
            else
            {
               $store = array($ingredient,$ingredient_name,$multiplicateur);
               $mat_base[$ingredient] = $store;
            }
         }

Ainsi de suite, tu recommences.

Bon, j'ai fais plus violent moi, j'ai encore ajouté un compteur de matériaux de base, non craftable qu'il faut pour le recipe
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
phpsteuf



Nombre de messages : 570
Date d'inscription : 17/03/2007

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 14:27

Code:
  while($res2=mysql_fetch_array($rectUm))

Y'a un faute geek

quoi c'est pas drôle ? Ca va, j'ai pas dormis depuis samedi soir encore j'ai une excuse pour les vannes pourries du jour Smile

Sinon pour enlever la requête CRACRA BOUDIN dans l'itération, et sans se torturer l'esprit avec des tableau PHP dans tous les sens, une petite jointure tout simplement :


Code:
 
echo'<table width="345" border="1">
  <tr>
    <td width="32" height="30"><span class="Style2">Items</span></td>
    <td><span class="Style2">Nom</span></td>
    <td width="80"><span class="Style2">Quantité</span></td>
  </tr>';
$rectem = mysql_query("SELECT etc.name,re.rid, re.q, re.item
              FROM recitems re
              INNER JOIN etcitem etc ON etc.item_id = re.item
              WHERE re.rid ='".$res['id']."'");
  while($res2=mysql_fetch_array($rectem))
{

echo'<tr>
    <td ><img src="top/images/items/'.$res2['item'].'.gif"></td>';
  $item = $res2['item'];
  echo'<td>  <span class="Style2">'.$res2['name'].'</span></td>';
    echo'<td><center><span class="Style2">'.$res2['q'].'</span></center></td>';
 
  echo'</tr>';
  }
  echo'</table>';

Attention, bien faire attention que etc.item_id et re.item soit bien indexés !
Deuxième alerte : mysql_query("SELECT etc.name,re.rid, re.q, re.item
FROM recitems re
INNER JOIN etcitem etc ON etc.item_id = re.item
WHERE re.rid ='".$res['id']."'");
Bouhhh caca pas bien injection SQL possible.

Voilà plus rien à ajouter Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.loreal.com
Akira



Nombre de messages : 160
Age : 31
Date d'inscription : 08/01/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 19:11

Re

comme je vous les dit, je suis novice ca doit ce voir. au fure et a mesure que je code j'aprend sur le ta

Mais bon en 5 mois qui mon permit d'aprendre le php et de codé ce dropcalc si on peu l'apellé comme ça, je crois que j'ai fais un peu de progres mais pas assez. j'en ai bien peur.. scratch

si on regarde de plus près mes codes il y a plein de truck inutile mal codé meme si au final ca mache. c'es pour ca que je suis partie du principe de codé en 3 etapes ..

1° étape: je code le tout apres ... je fais tester la version BETA quelque membres qui souhaite bien sur aporté leur aide (pour me dire ce qui manque et les defaults...)(crétique)

2° étape: rajoue et creations des fonctions (ca evite de repeté dix milles fois la meme chose surtout pour les tableaux...

3°: étape: et oui je securise....

Citation :
Deuxième alerte : mysql_query("SELECT etc.name,re.rid, re.q, re.item
FROM recitems re
INNER JOIN etcitem etc ON etc.item_id = re.item
WHERE re.rid ='".$res['id']."'");
Bouhhh caca pas bien injection SQL possible.

avec un mysql_real_escape_string($res['id']); ça devrai allé non merci pépé steuf.. (comme toujour tu me ratrape en vole Razz)

pour le reste Akira comprend vagement le message de jules... mais bon il c'est pas s'il est en mesure d'en faire autant et go lire des tutos...

Jules a écrit:

PS : Jules est particulièrement intéressé par ton codage en cours. Peux-tu lui faire parvenir un exemplaire (archive du dropcalc prêt à tourner en local, ou presque) de ce qui est déjà fait qu'il regarde ce que tu devrais optimiser/sécuriser/arranger ?

Pk pas dès que j'arrive a l'etape 2 dsl mais pas avant... j'espere que je me comprend et me fera pas ecartelé ou foueté lol..

pour Psychokiller1888: l'utisation de foreach Akira ne connais pas grand chose dessus, a simplement lu quelque tuto qui en parlai mais jamais utilisé en code..


Merci de vore aide..


Dernière édition par Akira le Lun 26 Jan 2009, 19:40, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Psychokiller1888



Nombre de messages : 114
Age : 32
Localisation : Suisse
Date d'inscription : 24/02/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 19:19

foreach prend chaque element d'un array, un a un, le place dans la variable definie après as et execute les accolade avec, puis recommence jusqu'à ce que le array soit au bout
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
phpsteuf



Nombre de messages : 570
Date d'inscription : 17/03/2007

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 19:54

Akira a écrit:

1° étape: je code le tout apres ... je fais tester la version BETA quelque membres qui souhaite bien sur aporté leur aide (pour me dire ce qui manque et les defaults...)(crétique)

2° étape: rajoue et creations des fonctions (ca evite de repeté dix milles fois la meme chose surtout pour les tableaux...

3°: étape: et oui je securise....

J'ai jamais compris pourquoi, au grand pourquoi les novices codent de cette manière Suspect

C'est la meilleurs façon d'oublié pas mal de chose et de laisser des trous partout, pourquoi ne pas tout simplement coder proprement et de façon organisée dès le départ... En plus tu perds un temps fou.

Code:
avec un [b]mysql_real_escape_string($res['id']); [/b]ça devrai allé non merci pépé steuf.. (comme toujour tu me ratrape en vole  :P)

Tu a presque bon, tout dépend de ta config PHP sur ton serveur au niveau des magic_quote_gpc etc... Ca peut être pire que mieux Smile Petit conseil, rechercher sur google "php quote_smart" Wink

Pour foreach : http://fr3.php.net/foreach (Ouai parce que Psycho a un façon bien à lui d'introduire une notion de boucle itérative non incrémentale Smile)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.loreal.com
Akira



Nombre de messages : 160
Age : 31
Date d'inscription : 08/01/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Lun 26 Jan 2009, 21:48

bein d'ici demain des que j'aurais finis la page des recipes et trouvé un hebergeur..

elle sera mise pour en test (Version 0.1-beta)

j'espere voir vos crétiques surtout (jules et pépé(steuf));

donc voila

P.s ne vois pas comment faire pour le recipe lol
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Akira



Nombre de messages : 160
Age : 31
Date d'inscription : 08/01/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Mer 28 Jan 2009, 02:12

Re et désolé pour le 2eme poste

Après des heures de casse tête avec mon clavier.. j'ai finalement reussi à le terminé, ça n'a pas été facile mais mais le principe es la...



merci pour votre aide

PS. vue que la plus part des scripts sont integré a mon site( ) je vais faire un tremplate vite fait pour l'intégré avec tous les script dropcalc pour le test...

je tiendrais au courant...

Merci

Cordialemnnt
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Grimly



Nombre de messages : 601
Date d'inscription : 30/08/2007

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Jeu 29 Jan 2009, 01:09

Bien que ton système soit tout beau comme tu le pense, il a un défaut majeur, tu indiques dans chaque sous-produits la quantité de sous-sous-produits pour un seul sous-produit et non pour ton produit final.

Pour résoudre cela, je te propose d'y aller un peu en récursif :

/**
* @param $ident : indentation de l'affichage de tes produits
* @param $product : produit à décrire
* @param $data : données qui viennent du SQL
* @param $multiplicator : multiplicateur
*/
function showNeeds($ident, $product, $data, $multiplicator) {
//...
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Psychokiller1888



Nombre de messages : 114
Age : 32
Localisation : Suisse
Date d'inscription : 24/02/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Jeu 29 Jan 2009, 08:19

J'ai aussi longtemp reflechis à ce que tu dis Grimly à l'époque effectivement. Il en est ressortis, de la part des joueurs, qu'il faut afficher la quantité d'un sous produit, puisqu'on indique comment crafter un sous produit et non tous en fait... Mais effectivement, ensuite ils m'ont demandé une liste de sous produits aussi, puis une liste de mat de base, ce qui a donné:




Pour ce faire, il y a un bout de mon code plus haut qui le fait ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
phpsteuf



Nombre de messages : 570
Date d'inscription : 17/03/2007

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Jeu 29 Jan 2009, 12:31

Petite remarque à propos de ton code d'ailleurs, et un conseil soit dit en passant donc :

Évitez les :

Code:

$ma_var = "Ma chaine de caractère avec : $ma_var2";

Vous pénalisez les performances de vos script, pour concaténer on utilise plutôt :


Code:

$ma_var = 'Ma chaine de caractère avec : '.$ma_var2;

Ou

Code:

$ma_var = 'Ma chaine de caractère avec : ',$ma_var2;

NB : Le choix du point ou de la virgule est totalement esthétique, les deux étant identiques en terme de performances. Pour t'en convaincre :

http://www.exinsidephp.com/blog/index.php?post/2009/01/27/Optimisation-%3A-La-concat%C3%A9nation2
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.loreal.com
decarvk



Nombre de messages : 242
Age : 27
Localisation : en france
Date d'inscription : 06/07/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Jeu 29 Jan 2009, 15:02

wouah moi qui utilise les " pour mes chaine de charactere je pence que je vais changer sa ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nemerian.apdvm.asso.fr
Akira



Nombre de messages : 160
Age : 31
Date d'inscription : 08/01/2008

MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Jeu 29 Jan 2009, 22:15

Grimly a écrit:
Bien que ton système soit tout beau comme tu le pense, il a un défaut majeur, tu indiques dans chaque sous-produits la quantité de sous-sous-produits pour un seul sous-produit et non pour ton produit final.

Pour résoudre cela, je te propose d'y aller un peu en récursif :

/**
* @param $ident : indentation de l'affichage de tes produits
* @param $product : produit à décrire
* @param $data : données qui viennent du SQL
* @param $multiplicator : multiplicateur
*/
function showNeeds($ident, $product, $data, $multiplicator) {
//...
}

pas pensé a cette party lol merci a toi...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [Resolu]Aide Script recipe (Php)   Aujourd'hui à 17:41

Revenir en haut Aller en bas
 
[Resolu]Aide Script recipe (Php)
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Demande aide script
» [résolu] Ce script affiche dans la barre de statut le temps passé sur la page et une alerte au moment ou la page se ferme
» [Résolu] Comment activer JavaScript (impôts)
» Besoin d'aide script chants de loup
» Aide pour la mise en place d'un script

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
L2J-FR :: Général :: Aides et Conseils-
Sauter vers: