| [Resolu]Aide Script recipe (Php) | |
|
|
Auteur | Message |
---|
Akira
Nombre de messages : 160 Age : 39 Date d'inscription : 08/01/2008
| Sujet: [Resolu]Aide Script recipe (Php) 25/01/09, 09:06 pm | |
| 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 si quelqu'un a une idée je suis preneur merci de votre aidé Cordialemnt akira
Dernière édition par Akira le 28/01/09, 04:45 am, édité 2 fois | |
|
| |
Jules
Nombre de messages : 384 Localisation : Rome Date d'inscription : 11/04/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 25/01/09, 10:26 pm | |
| 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 ? 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 ? | |
|
| |
Psychokiller1888
Nombre de messages : 114 Age : 40 Localisation : Suisse Date d'inscription : 24/02/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 25/01/09, 10:39 pm | |
| 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 | |
|
| |
phpsteuf
Nombre de messages : 570 Date d'inscription : 17/03/2007
| Sujet: Re: [Resolu]Aide Script recipe (Php) 26/01/09, 12:27 pm | |
| - Code:
-
while($res2=mysql_fetch_array($rectUm)) Y'a un faute 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 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 | |
|
| |
Akira
Nombre de messages : 160 Age : 39 Date d'inscription : 08/01/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 26/01/09, 05:11 pm | |
| 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.. 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 ) 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 26/01/09, 05:40 pm, édité 3 fois | |
|
| |
Psychokiller1888
Nombre de messages : 114 Age : 40 Localisation : Suisse Date d'inscription : 24/02/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 26/01/09, 05:19 pm | |
| 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 | |
|
| |
phpsteuf
Nombre de messages : 570 Date d'inscription : 17/03/2007
| Sujet: Re: [Resolu]Aide Script recipe (Php) 26/01/09, 05:54 pm | |
| - 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 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 Petit conseil, rechercher sur google "php quote_smart" 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 ) | |
|
| |
Akira
Nombre de messages : 160 Age : 39 Date d'inscription : 08/01/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 26/01/09, 07:48 pm | |
| 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 | |
|
| |
Akira
Nombre de messages : 160 Age : 39 Date d'inscription : 08/01/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 28/01/09, 12:12 am | |
| 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 | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: [Resolu]Aide Script recipe (Php) 28/01/09, 11:09 pm | |
| 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) { //... } | |
|
| |
Psychokiller1888
Nombre de messages : 114 Age : 40 Localisation : Suisse Date d'inscription : 24/02/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 29/01/09, 06:19 am | |
| 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 ^^ | |
|
| |
phpsteuf
Nombre de messages : 570 Date d'inscription : 17/03/2007
| Sujet: Re: [Resolu]Aide Script recipe (Php) 29/01/09, 10:31 am | |
| 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 | |
|
| |
decarvk
Nombre de messages : 241 Age : 35 Localisation : en france Date d'inscription : 06/07/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 29/01/09, 01:02 pm | |
| wouah moi qui utilise les " pour mes chaine de charactere je pence que je vais changer sa ^^ | |
|
| |
Akira
Nombre de messages : 160 Age : 39 Date d'inscription : 08/01/2008
| Sujet: Re: [Resolu]Aide Script recipe (Php) 29/01/09, 08:15 pm | |
| - 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... | |
|
| |
Contenu sponsorisé
| Sujet: Re: [Resolu]Aide Script recipe (Php) | |
| |
|
| |
| [Resolu]Aide Script recipe (Php) | |
|