Site d'e-commerce : Quel langage choisir ??

Site d'e-commerce : Quel langage choisir ?? - PHP - Programmation

Marsh Posté le 22-08-2007 à 14:30:40    

Bonjour à tous
 
J'aurais besoin de vos conseils et avis pour éclairer ma lanterne.  
Je souhaiterai créer un site marchand (site d'e-commerce) et je me pose des questions sur le langage à apprendre pour y arriver. Je pratique déjà correctement le Html ainsi que le Css2.  
Confondant un peu vitesse et précipitation, j'ai rapidement chercher un ouvrage et ai tout recemment acqueris un livre sur le PHP5 & MYSQL5. Cependant un informaticien confirmé m'a vanter les mérites d'ASP.net. De plus, j'ai fais un tour sur les codes sources de quelques grandes sites marchands et tous semblent utiliser javascript.
 
J'aimerais donc avoir votre avis : Quel langage utiliser pour créer un site d'e-commerce ?
Le PHP ?
ASP.net ?
Le javascript ?
Un autre ?
 
J'attends vos conseils et avis avec impatience,
Adrien
 

Reply

Marsh Posté le 22-08-2007 à 14:30:40   

Reply

Marsh Posté le 22-08-2007 à 14:34:33    

Ps : Si vous avez vous-même créer ou participer à la création d'un site d'e-commerce, n'hésitez-pas à me faire part de votre expérience (problèmes rencontrés etc ...) même si cela n'a rien à voir avec la question originelle.
 
Vous pouvez utiliser les messages privés ou les mails ;)
 
Merci

Reply

Marsh Posté le 22-08-2007 à 14:41:16    

asp = microsoft donc serveur IIS et tous le tintouin, php = libre et gratuit
 
php équivaut à asp et vice versa..
 
pour ce qui est du js, c'est plus au niveau de certain code, le php ne peux pas faire des truc que le js fait et inversement..

Reply

Marsh Posté le 22-08-2007 à 14:45:16    

Javasript seul ? Ca m'étonnerait... PHP + Javascript voilà qui est mieux. :jap:  
 
Après entre l'ASP et PHP ça se vaut plus ou moins, mais perso je préfère le PHP que je maitrise mieux.
 
Tu auras peut être plus facilement de l'aide en PHP qu'en ASP si tu es coincé. ;)

Reply

Marsh Posté le 22-08-2007 à 14:46:45    

ok ok ...  
 
C'est bien se que je pensais. ASP et PHP se valent, c'est juste une approche différente. Cependant en cherchant des infos sur ASP je suis tombé sur un cours par webcam et j'ai vraiment été étonné de la rapidité de la mise en place de certains objets (calendrier, récupération d'infos etc ...).
Après je n'en sais rien, c'est peut-être tout aussi rapide en PHP.

Reply

Marsh Posté le 22-08-2007 à 14:48:47    

J'y ai pas passé des heures mais il ne semblait y avoir que du javascript (avec du HTML au moins evidemment).
 
Bon, ça confirme globalement se que je pensais. Je vais  retourner à mon PHP et on verra bien.
 
Continuez à laisser vos avis.

Reply

Marsh Posté le 22-08-2007 à 14:59:41    

Sinon tu as le logiciel Webdev aussi.
 
Quoi ? Je propose moi. :D  
 
cli142 c'est que les exemples que tu as vu ne se servaient pas d'une base de données. ;)  
 
Le code PHP est interprété coté serveur, c'est pourquoi si tu choisis ce langage, je te conseillerai de télécharger EasyPhp qui te permettra de tester ton site en local. Tu auras ainsi un serveur Apache qui interprétera ton code PHP et une base de données MySQL.

Reply

Marsh Posté le 22-08-2007 à 15:04:51    

cli142 a écrit :

J'y ai pas passé des heures mais il ne semblait y avoir que du javascript (avec du HTML au moins evidemment).


 
 
tu as regarder le code comment ??
 
"Voir le code source de la page" ? normale que tu n'y es vu que du js et du html, php, asp, ruby, python, perl son des languages exécuté coter serveur et non coté client (comme le js..)
 
en espérant avoir aider

Reply

Marsh Posté le 22-08-2007 à 15:15:13    

eeeinstein a écrit :

asp = microsoft donc serveur IIS et tous le tintouin, php = libre et gratuit
 
php équivaut à asp et vice versa..
 
pour ce qui est du js, c'est plus au niveau de certain code, le php ne peux pas faire des truc que le js fait et inversement..


Première ligne : faux et archi faux :p
 
Mono peut parfaitement faire tourner de l'ASP.NET, et propose un module Apache. On peut donc parfaitement faire un site en .NET sans Microsoft.

Reply

Marsh Posté le 22-08-2007 à 15:25:18    

Le php fait comme s'il affiche les pages HTML côté serveur, et ce sont elles qui sont envoyées à ton navigateur.
en php/mysql tu vas interroger par exemple ta base de données et afficher le résultat en HTML. La page est dynamique, elle est régénérée différemment selon les données lues dans la base ou autres, tandis qu'en HTML c'est statique.
Le javascript peut permettre à ta page d'avoir certaines petites fonctions pratiques pour l'ergonomie, la vérification de données entrées etc. du côté client (navigateur).

Reply

Marsh Posté le 22-08-2007 à 15:25:18   

Reply

Marsh Posté le 22-08-2007 à 19:54:12    

ok j'y vois déjà plus clair.
 
Je viens de commencer le bouquin là ... 50 pages de lues ... plus que 450 :s
 
Merci pour vos réponses.
 
Si d'autres veulent completer, qu'ils n'hésitent pas (et si vous avez déjà créer des sites commerciaux et que vous avez des conseils je suis preneur !)

Reply

Marsh Posté le 22-08-2007 à 20:39:14    

Ben si tu débutes en prog orientée web, PHP/mySQL semble un bon choix, tant pour les langage que pour les outils disponibles.
 
- prends un serveur WAMP, tu auras un serveur web apache + PHP + un serveur MySQL + une plateforme d'administration SQL phpMyAdmin, le tout configuré pour démarrer tout de suite sans avoir à comprendre comment installer et configurer le tout.
 
- ensuite, il faut que tu comprennes le concept client/serveur en termes de ce qui est exécuté côté client et ce qui est exécuté côté serveur : lorsque tu demandes à ton navigateur d'afficher une page, il fait une requête au serveur web. Celui-ci exécute le code côté serveur (PHP + accès base de données MySQL) qui va générer un document HTML qui sera envoyé au navigateur (donc uniquement HTML + JS). Le code côté serveur est donc invisible pour le client. Côté client, le seul code exécutable est éventuellement du JS qui peut par exemple t'aider à calculer le prix total du panier pour l'afficher tout de suite à l'internaute. Mais tu vois vite que si l'internaute désactive JS sur son navigateur, tu auras besoin de calculer le prix de manière sécurisée côté serveur (côté sur lequel le client n'a aucun moyen d'agir à part donner la liste des objets qu'il veut acheter). Là tu peux commencer à comprendre le paradigme des codes exécutés côté client ou serveur : Le code côté serveur gère tous les besoins de l'application : création d'un panier, ajout d'un élément dans le panier, vérifications diverses, création de la commande au travers d'une base de données + génération du document HTML qui permet d'un point de vue simplifié de "montrer ce qu'il se passe". Le code côté client, lui, ne doit être utilisé que pour des raisons d'ergonomie (faire un calendrier dynamique) et des effets visuels (afficher une aide contextuelle au survol d'un bouton).
 
- ensuite, il faut que tu apprennes les concepts de programmation en général si tu n'en a jamais fait :
  - comprendre ce que sont les variables et l'importance de leur typage, même si le typage est considéré comme faible en PHP : un nombre et une chaîne de caractères sont très différents, de la même manière qu'on ajoute pas des poires et des fourchettes.
  - les structures de contrôle (if/then/else, while, etc ...) : ce sont des éléments indispensables qui te permettent de décider de ce que va faire ton application par la suite en fonction de son état présent : si (le client a clické sur "finir la commande" ) alors { proposer de payer } sinon { proposer d'ajouter un nouveau produit au panier } = if/then/else
  - les fonctions : à quoi ça sert ? à écrire un code qui pourra être rééxécuté plusieurs fois sans le récrire à chaque fois
  - les classes ou objets : ça sert à structurer ton application pour t'y retrouver plus facilement même si c'est pas indispensable
 
- ensuite, il faut que tu apprennes ce que sont les sessions et comment les utiliser : c'est une manière de se rappeler d'un internaute entre 2 clicks (automatiquement à l'aide d'un cookie que tu n'a pas besoin de gérer). Le mécanisme des sessions en PHP permet de stocker des informations dans une variable dite "superglobale" et donc enregistrer le contenu du panier au fur et à mesure des clicks de l'internaute jusqu'à finir la commande.
 
- ensuite, il faudra apprendre à quoi sert une base de données : typiquement, enregistrer des informations de manière structurée. Il faut donc apprendre à structurer une base de données. ex : un même client peut faire plusieurs commandes, donc tu vas pas mettre les infos du client et de la commande dans la même table, tu crée plutôt 2 tables, une pour les clients et une pour les commandes que tu lie entre elles au moyen de l'identifiant du client dans la table des commandes. Ainsi, à une seule ligne dans la table client (un seul client donc) peut correspondre plusieurs lignes dans la table commandes (plusieurs commandes donc).
 
- ensuite il faut apprendre le lagage des requêtes SQL qui sert à ajouter / éditer / lire / supprimer des infos dans un base de données
 
- ensuite, il faut apprendre à utiliser MySQL avec PHP
 
A la fin, il te reste plus qu'à faire ton site en commençant peut-être par faire des petits tests sur des choses inutiles mais qui ressemblent à ce que tu veux faire dans ton appli finale. Il est important de bien découper ton appli en éléments cohérents pour pas trop te perdre au moment du développement.
 
Voilà, y'a peut-être des points que tu maîtrise déjà dans tout ce que j'ai dit, sinon, je ne peux plus que te souhaiter bonne chance


---------------
The Rom's, à votre service
Reply

Marsh Posté le 22-08-2007 à 22:03:09    

Il faut voir aussi (désolé d'être terre à terre) un point de vue financier ... *En général* l'hébergement de site web sur un serveur Microsoft avec l'ASP coute plus cher qu'un serveur Apache, pour la bonne et simple raison de la licence IIS.
 
Quoiqu'il en soit, il ne faut pas dénigrer le PHP par rapport à l'ASP ou inversément, chacun a ses spécificités, chacun a son environnement (bien qu'il y ait parfois certains points communs), chacun a le même objectif, mais chacun le dit dans sa langue et sa syntaxe.
 
L'informaticien  qui t'a vanté les mérites de l'ASP est sans  nul doute un pro microsoft, mais peut-être n'a-t-il jamais essayé le PHP autant que l'ASP pour pouvoir être plus objectif. (Ceci dit, je comprends tout à fait qu'il puisse avoir une préférence pour l'un plutôt que l'autre ... !)

Reply

Marsh Posté le 22-08-2007 à 23:26:19    

Pour commencer à bricoler quelque chose il est clair que l'on va opter pour un hébergement gratuit ou pas cher. Et là le choix se réduit de lui même: en gratuit tu auras que du php + mysql (ou éventuellment postgre enfin du libre) + apache (du libre) comparé à un environnement .net qui voudrait dire dans les grandes lignes (et même si y'a peut être d'autres solutions qui émergent alors que le php 5 n'est même pas de rigueur partout je pense pas qu'on les trouvera pas sur des offres type pages persos ou même hébergement mutualisé avant belle lurette...): Server 2003 (pour le .Net avec framework et IIS) et probablement pour le coup un truc genre SQL Server en toute logique pro Mircosoft. Et ça a un coût monstrueux donc pas rentable face à la gratuité de mysql + php + système unix.  
 
Donc sauf si c'est pour faire un truc sur un serveur dédié, que tu as les sous pour payer les licences même pour le développement, sans compter que tu auras moins d'aide pour de l'asp que pour du php (faut bien que les développeurs asp croient qu'ils maitrisent un truc propriétaire mieux que les autres ;) ), le choix est vite fait.
 
Certes t'as pas de helper de base dans php genre le calendrier, ça c'est du microsoft les objets tout près, mais tu as des framework si tu veux pas tout faire où tu trouveras ton bonheur dans ce genre ;)
 
Après le plaisir de réinventer la roue en php n'a pas de comparaison possibler dans le monde Asp, le plaisir de croire que tu as la plus grosse: tu le trouveras dans php, le plaisir de croire que tu as trouvé un truc génial: php, le plaisir de croire que tu maitrise tout: php :D
 
Regardes du côté des framework, des librairies pour voire ce que tu as de déjà fait, tu gagneras du temps et avec un peu de chance il te restera que le côté purement html à gérer, en asp je sais pas mais j'ai un doute...

Reply

Marsh Posté le 23-08-2007 à 01:10:33    

Je tiens quand même à rappeler quelques points :
1/ IIS est gratuit. Plus exactement, il est livré en bundle avec Windows, et ce, dès la version XP Pro (et sur Vista sur toutes les versions que j'ai eu l'occasion de voir). Donc déjà, niveau coût, c'est loin d'être une barrière infranchissable. En toute objectivité, une licence Windows est une goutte dans le prix d'un serveur, même si on s'oriente vers du 2003 Server (la version Web ne coûte que 600 € et est justement dédiée à l'hébergement).
2/ L'ASP "tout court", c'est à dire le lanque basé sur WSH (VBS et JS) est dépassé, et s'il fait encore l'objet d'un support de la part de Microsoft, ça ne devrait pas durer encore des années (à ma connaissance, le support VB6 est arrêté, y'a pas de raison que VBS ne le soit pas -d'autant qu'en soit c'est pas un produit-)
3/ ASP.NET, qui peut être programmé en VB.NET, C#, J# ou autres langages existant pour le Framework.NET se trouve porté sous Linux, via Mono. Mono est gratuit, et s'il n'englobe pas la totalité du Framework de Microsoft, il est suffisament avancé pour être exploitable en production. A ce moment, on n'a même plus l'excuse de dire qu'une licence Windows c'est trop cher. Et encore moins celle que c'est compliqué à installer, ça m'a pris 10 minutes sans lire la moindre doc sous Debian, alors que je sais même pas redémarrer Apache...
4/ ASP.NET peut parfaitement s'interfacer avec n'importe quelle base de données, pour peu qu'elle propose un connecteur .NET ou un drivers OLEDB -ou ODBC, le Framework.NET dispose d'une couche intermédiaire permettant d'adresser en OLEDB un pont ODBC-. Donc à nouveau, pas de souci en ce qui concerne le SGBD (à noter qu'une version gratuite de SQL Server 2005 existe de toute façon)
5/ ASP.NET est plus comparable à JSP qu'à PHP, dont la technologie est digne d'un musée du néandertal (même génération de langage que l'ASP)
6/ Il existe par conséquent (peu nombreux, je l'accorde) des hébergeurs gratuits pour de l'ASP.NET, que ce soit sous plateforme Windows ou Linux.
7/ Enfin, PHP c'est bien, mais sorti des pages web et de quelques scripts systèmes, c'est un langage qui ne sert à rien d'autre. En revanche, on écrit de l'ASP.NET avec VB.NET, C# ou J#... et ces langages sont bien plus polyvalents. Ainsi, on peut rapidement se constituer des libs partagées, qui vont nous servir autant pour écrire des sites web que des application lourde, mais aussi des services windows ou des web services (je ne parle pas de la portabilité des applications sous Windows Mobile, car ça nécessite d'avoir une version particulièrement onéreuse de Visual Studio).
8/ En parlant de Visual Studio, j'aime lire qu'il existe de très bons IDE pour PHP avec plein de doc... Que dire de Visual Studio, dont il existe des versions gratuites (gamme Express, comme pour SQL Server), dont l'IDE est quelque peu mieu foutue que les meilleures IDE pour PHP, et dont l'aide intégrée est sans commune mesure avec la pauvreté navrante de la doc PHP (autant en ce qui concerne les exemple que la richesse de la documentation, qui ne se contente pas de décrire vaguement ce qu'est cencé faire chaque fonctions : on trouve des exemples, des articles très détaillés sur les concepts abordés, mais aussi des best practices, choses totalement absentes de la doc PHP).
 
Bref... Les trolls c'est sympa, mais faut recadrer les choses de temps en temps. Après, personnellement je n'aime pas PHP, pour tout une série de raisons. Cependant, je n'irai pas le dénigrer complètement, après tout quand on voit le nombre de personnes qui mettent en ligne des sites avec sans avoir la moindre notion de programmation prouve que ce truc immonde est effectivement facile d'accès (certainement trop à mon goût d'ailleurs).
Mais pas contre, ça m'insupporte de voir .NET dénigré de la sorte, surtout sur des points totalement infondés.


Message édité par MagicBuzz le 23-08-2007 à 01:16:29
Reply

Marsh Posté le 23-08-2007 à 09:45:03    

Faire un site avec du PHP sans avoir la moindre notion de programmation faut être fortiche tout de même, le copier/coller ne fait pas tout. :D  
 
C'est vrai que PHP est bien souvent trop idéalisé, mais après avoir essayé VB.NET pour l'élaboration de plusieurs applis (Web et Windows) je dois dire que je préfère largement le dev en php qui permet de développer efficacement.
 
En autre outils de développement Web tu as Webdev aussi qui permet 1 gain de temps considérable lors du développement. Le hic c'est qu'il coute cher, est assez contraignant à héberger et souffre encore de quelques bugs. Quand PC Soft aura compris ce dernier point, au lieu de sortir des nouvelles versions tout les 6 mois, Webdev deviendra très très intéressant pour les entreprises (bien qu'il l'est déjà pour bon nombre d'entre elles déjà).

Reply

Marsh Posté le 23-08-2007 à 09:56:02    

[:drapal]
Et pour relancer le sujet, j'ajouterais qu'apprendre la programmation ( désolé CSS et HTML c'est pas de la programmation) en commençant avec PHP c'est se tirer une balle dans le pied.

 

edit: Et pour le developpement "efficace" sous php c'est du gros foutage de gueule. La seule chose qui permet d'être efficace c'est des experiences foirées dans tous les sens pour connaitre les erreurs à ne pas reproduire


Message édité par anapajari le 23-08-2007 à 09:57:41
Reply

Marsh Posté le 23-08-2007 à 10:16:41    

Tout dépend des expériences en programmation que tu as eu avant de t'attaquer au PHP.  
 
Pour ma part j'ai été efficace assez tot avec le PHP: c'est peut être le Pascal, le Delphi, le VB et le C que je connaissais avant qui me l'ont permis. :D  
 
Bon c'est vrai que si tu es amené à développer sous d'autres langages plus tard et que tu fais ton initiation en prog avec PHP, ce n'est pas la meilleure des solutions du fait du manque de rigueur énorme de ce dernier.

Reply

Marsh Posté le 23-08-2007 à 10:56:44    

Bqda a écrit :

Tout dépend des expériences en programmation que tu as eu avant de t'attaquer au PHP.  
 
Pour ma part j'ai été efficace assez tot avec le PHP: c'est peut être le Pascal, le Delphi, le VB et le C que je connaissais avant qui me l'ont permis. :D  
 
Bon c'est vrai que si tu es amené à développer sous d'autres langages plus tard et que tu fais ton initiation en prog avec PHP, ce n'est pas la meilleure des solutions du fait du manque de rigueur énorme de ce dernier.


Nommage des fonctions non uniformisés, oppérateurs de comparaison zarb ( === [:cerveau foudtag] ), ni déclaration de variable ni typage...
Faut être motivé pour avoir un code propre et dont on peut prévoir le comportement.
 
Je ne parle même pas du nombre de "modules par défaut", tous désactivables, pouvant à tout moment être remplacés par d'autres, qui font que dès la première minute on se rend compte de la redondance affligeante des fonctions, mais aussi qu'en aucun cas on peut prédire le support ou non de telle ou telle fonction chez l'hébergeur.
 
Il suffit de voir l'association systématique de PHP+MySQL dans l'esprit des développeurs PHP pour comprendre que c'est un langage de merde qui est tout sauf formateur : le nombre de questions PHP je trouve dans la cat "SBGD", c'est affolant. J'imagine que c'est la même chose dans la cat HTML/JS, où les gens ne font même pas la différence entre une balise HTML, un style CSS, une requête SQL et une instruction PHP. Je n'ai absolument jamais vu un mélange pareil avec les autres langages.
 
Le plus grave, c'est que ce bon gros mélange bien foireux est non seulement un handicap certain pour l'évolution du développeur, mais en plus lui réduit à l'extrême l'ouverture d'esprit : la plupart des dev PHP n'imagine même pas qu'on peut l'interfacer avec autrechose que MySQL, et les autres langages sont systématiquement associés à tord avec un SGBD (ASP -> Access, .NET -> SQL Server, Java -> Oralce ?). Un langage et un SGBD n'ont rien à voir. Le nombre de fois que j'ai vu ASP dénigré "parcequ'Access c'est de la merde", je ne les compte plus. Pour information, n'importe quel langage peut virtuellement se connecter à n'importe quelle base de données (et au passage il faut remercier Microsoft, car c'est eux qui ont défini les premier la notion de pont ODBC, qui a permet d'uniformiser les connexions entre application et SGBD, et qui a été largement adopté sous Unix).
Pour les sceptiques :
http://forum.hardware.fr/hfr/Progr [...] 7489_1.htm
 
Bref, j'estime tout comme anajapari que c'est une erreur de croire que PHP est un bon langage pour débuter.
Il a des qualités, mais certainement pas celles requises pour débuter.
Il permet de travailler sans rien comprendre à ce qu'on fait, ce qui va à coup sûr dérouter le jour où on va passer à autrechose.
 
Et je parle en connaissance de cause, puisque malgré une formation en programmation où j'ai travaillé avec de véritables langages, j'ai commencé dans la vie active avec ASP, donc un langage très proche de PHP en de nombreux points (cependant, autant il est globalement plus "cheap", autant je le trouve plus propre, puisqu'on peut forcer le type des variables, mais surtout forcer leur déclaration explicite histoire de ne pas faire n'importe quoi).
 
Hé bien malgré sa rigueur légèrement suppérieure à PHP, j'ai eu un mal énorme avec .NET à m'habituer au fait qu'on ne peut pas concaténer une valeur numérique avec une chaîne de caractères. Et pourtant, si certains trouvent que c'est une perte de temps à l'écriture du code, c'est un gain certain le jour où on se trouve à devoir débuger une application : on sait ce qu'elle fait, et le compilo bloque avant de faire n'importe quoi. En PHP on peut faire absolument n'importe quoi sans que l'interpréteur lève le moindre warning. Du coup au lieu de rechercher une erreur de syntaxe, on va chercher un problème dans l'algo et y passer la nuit pour rien.
 
Exemple bête :

Code :
  1. for ($i = 0; $j < 10; $i++)
  2. {
  3.    echo("$i" );
  4. }


 
Super je viens de faire une boucle infinie, et pourtant mon $i s'incrémente comme il devrait... Aucun warning, queud. Quand c'est un traîtement un peu plus complexe, vas-y pour trouver que $j est utilisé par erreur !
 
En .NET c'est simple, ça t'éclate à la gueule en disant que ta variable n'est pas déclarée.
Si vraiment t'as pas de chance et qu'elle existe, t'as toujours le mode d'éxécution pas à pas, ce qui est bien pratique pour trouver ce qui cloche.

Message cité 3 fois
Message édité par MagicBuzz le 23-08-2007 à 11:05:45
Reply

Marsh Posté le 23-08-2007 à 11:30:50    

MagicBuzz a écrit :


Nommage des fonctions non uniformisés, oppérateurs de comparaison zarb ( === [:cerveau foudtag] ), ni déclaration de variable ni typage...
Faut être motivé pour avoir un code propre et dont on peut prévoir le comportement.
 
Je ne parle même pas du nombre de "modules par défaut", tous désactivables, pouvant à tout moment être remplacés par d'autres, qui font que dès la première minute on se rend compte de la redondance affligeante des fonctions, mais aussi qu'en aucun cas on peut prédire le support ou non de telle ou telle fonction chez l'hébergeur.
 
Il suffit de voir l'association systématique de PHP+MySQL dans l'esprit des développeurs PHP pour comprendre que c'est un langage de merde qui est tout sauf formateur : le nombre de questions PHP je trouve dans la cat "SBGD", c'est affolant. J'imagine que c'est la même chose dans la cat HTML/JS, où les gens ne font même pas la différence entre une balise HTML, un style CSS, une requête SQL et une instruction PHP. Je n'ai absolument jamais vu un mélange pareil avec les autres langages.
 
Le plus grave, c'est que ce bon gros mélange bien foireux est non seulement un handicap certain pour l'évolution du développeur, mais en plus lui réduit à l'extrême l'ouverture d'esprit : la plupart des dev PHP n'imagine même pas qu'on peut l'interfacer avec autrechose que MySQL, et les autres langages sont systématiquement associés à tord avec un SGBD (ASP -> Access, .NET -> SQL Server, Java -> Oralce ?). Un langage et un SGBD n'ont rien à voir. Le nombre de fois que j'ai vu ASP dénigré "parcequ'Access c'est de la merde", je ne les compte plus. Pour information, n'importe quel langage peut virtuellement se connecter à n'importe quelle base de données (et au passage il faut remercier Microsoft, car c'est eux qui ont défini les premier la notion de pont ODBC, qui a permet d'uniformiser les connexions entre application et SGBD, et qui a été largement adopté sous Unix).
Pour les sceptiques :
http://forum.hardware.fr/hfr/Progr [...] 7489_1.htm
 
Bref, j'estime tout comme anajapari que c'est une erreur de croire que PHP est un bon langage pour débuter.
Il a des qualités, mais certainement pas celles requises pour débuter.
Il permet de travailler sans rien comprendre à ce qu'on fait, ce qui va à coup sûr dérouter le jour où on va passer à autrechose.
 
Et je parle en connaissance de cause, puisque malgré une formation en programmation où j'ai travaillé avec de véritables langages, j'ai commencé dans la vie active avec ASP, donc un langage très proche de PHP en de nombreux points (cependant, autant il est globalement plus "cheap", autant je le trouve plus propre, puisqu'on peut forcer le type des variables, mais surtout forcer leur déclaration explicite histoire de ne pas faire n'importe quoi).
 
Hé bien malgré sa rigueur légèrement suppérieure à PHP, j'ai eu un mal énorme avec .NET à m'habituer au fait qu'on ne peut pas concaténer une valeur numérique avec une chaîne de caractères. Et pourtant, si certains trouvent que c'est une perte de temps à l'écriture du code, c'est un gain certain le jour où on se trouve à devoir débuger une application : on sait ce qu'elle fait, et le compilo bloque avant de faire n'importe quoi. En PHP on peut faire absolument n'importe quoi sans que l'interpréteur lève le moindre warning. Du coup au lieu de rechercher une erreur de syntaxe, on va chercher un problème dans l'algo et y passer la nuit pour rien.
 
Exemple bête :

Code :
  1. for ($i = 0; $j < 10; $i++)
  2. {
  3.    echo("$i" );
  4. }


 
Super je viens de faire une boucle infinie, et pourtant mon $i s'incrémente comme il devrait... Aucun warning, queud. Quand c'est un traîtement un peu plus complexe, vas-y pour trouver que $j est utilisé par erreur !
 
En .NET c'est simple, ça t'éclate à la gueule en disant que ta variable n'est pas déclarée.
Si vraiment t'as pas de chance et qu'elle existe, t'as toujours le mode d'éxécution pas à pas, ce qui est bien pratique pour trouver ce qui cloche.


 
 
 :lol:  :lol:  :lol:  :lol:  :lol:  :lol:

Reply

Marsh Posté le 23-08-2007 à 11:34:28    

Oui peut-être. En même temps à une époque pas mal ont commencé avec du basic, suivi de l'assembleur... Et en C on peut aussi faire de belles bourdes.
Après tout, si ça ne donne pas de bonnes habitudes au niveau langage, ça apprendra à mieux débugger ou tester :lol:

Reply

Marsh Posté le 23-08-2007 à 11:40:59    

Ca c'est sûr que pour ça le PHP est intéressant ;)

Reply

Marsh Posté le 23-08-2007 à 11:43:10    

C'est bien ce que je dis MagicBuzz, pour une personne devant apprendre d'autres langages il ne faut pas commencer par PHP, sinon l'apprentissage des autres langages sera rude, très rude. :pt1cable:  
Mais pour une personne ne développant que de façon occasionnel ça peut convenir.
 
Cependant il est vrai que l'absence de deboggeur et le fait de ne pas pouvoir dérouler ton programme en pas à pas, c'est très chiant, surtout au début, mais on s'y fait vite.
 
Tu vois, malgré tout le confort que peux apporter un VB.NET ou un Webdev, je préfère encore développer en PHP. :??:

Reply

Marsh Posté le 23-08-2007 à 11:46:02    

Ouais mais déjà, quelle idée de faire du VB.NET aussi :o
Le C# est un peu mieux foutu je trouve ;)
 
Pour la suite, chais pas, moi j'ai du mal à concevoir en quoi PHP peut être suppérieur à ASP.NET. Mais bon après c'est surtout une question de préférence et d'habitude.

Message cité 1 fois
Message édité par MagicBuzz le 23-08-2007 à 11:46:37
Reply

Marsh Posté le 23-08-2007 à 12:00:01    

Ca doit être mon coté maso qui ressort. :D  
 
Pour moi l'ASP et le PHP ça se vaut, après c'est plus une question d'habitude, chacun défendra son langage de programmation.
 
Il y a aussi un effet de mode qui peut expliquer l'essort du PHP. Il est devenu de bon gout de critiquer tout ce qui provient de Microsoft et de préférer tout ce qui est libre. Ce qui est totalement débile mais bon.

Reply

Marsh Posté le 23-08-2007 à 13:00:19    

MagicBuzz a écrit :

(cependant, autant il est globalement plus "cheap", autant je le trouve plus propre, puisqu'on peut forcer le type des variables, mais surtout forcer leur déclaration explicite histoire de ne pas faire n'importe quoi).  

En php aussi on peut forcer le type du contenu de chaque variable. Pour tout le reste de ton gros message, il y a beaucoup trop de vrai à mon gout. :p
En résumé, c'est sur, le php est le langage le plus accessible pour un débutant mais en même temps c'est l'un de ceux qui laisse prendre les pires habitudes possible en programmation. :sweat:  
 
cli142 > Parmis tous les conseils que j'ai lu au dessus, il en manque un très important : toujours connaitre les attaques que peut subir un système avant de créer des applications critiques. Dans ton cas ça signifie qu'il te faudra connaitre les attaques que peuvent subir un site web avant de te lancer dans la création d'un système de boutique en ligne. Personnellement, j'ai vu trop de boutiques où les visiteurs pouvaient acheter les produits au montant qu'ils voulaient et ça peut faire très très mal.
 

MagicBuzz a écrit :

Pour la suite, chais pas, moi j'ai du mal à concevoir en quoi PHP peut être suppérieur à ASP.NET. Mais bon après c'est surtout une question de préférence et d'habitude.

Moi de mon côté, j'ai du mal à voir l'avantage qu'il y a à faire des sites web en .net à moins de partager une partie du code avec d'autres applications. C'est peut être qu'une impression mais je troue qu'en php, on maitrise beaucoup plus le code html envoyé au navigateur qu'en .net (c'est super les composants tout fait par ce que ça fait gagner du temps, mais on sait jamais à l'avance ce que recevra exactement le navigateur)

Message cité 1 fois
Message édité par omega2 le 23-08-2007 à 13:03:51
Reply

Marsh Posté le 23-08-2007 à 13:03:05    

MagicBuzz a écrit :


Exemple bête :

Code :
  1. for ($i = 0; $j < 10; $i++)
  2. {
  3.    echo("$i" );
  4. }


 
Super je viens de faire une boucle infinie, et pourtant mon $i s'incrémente comme il devrait... Aucun warning, queud. Quand c'est un traîtement un peu plus complexe, vas-y pour trouver que $j est utilisé par erreur !


 
Perso je vois pas où est l'erreur là dedans, le "$j < 10" est une condition de continuité, tu peux mettre ce que tu veux ...  
 
for ($i = 0; ($j < 10 AND $v < 15); $i++)
{
   //et là dedans tu traites pour pas qu'il n'y ait de boucle infinie en incrémentant $j ou/et $v
}
 
Encore heureux que tu n'aies pas de warning pour ça ;) après c'est sûr que dans ce cas le for n'a plus vraiment d'intérêt  :jap:


Message édité par anthomicro le 23-08-2007 à 13:04:40
Reply

Marsh Posté le 23-08-2007 à 14:01:29    

Il va boucler indéfiniment dans le cas de son exemple étant donné l'absence de condition d'arrêt (ou la présence d'une condition de continuité).
 
Mais bon dans les autres langages tu n'as pas de warning non plus pour les boucles infinies (sauf si ta variable j n'est pas déclarée), un plantage suffit. :D

Reply

Marsh Posté le 23-08-2007 à 14:05:00    

omega2 a écrit :

Moi de mon côté, j'ai du mal à voir l'avantage qu'il y a à faire des sites web en .net à moins de partager une partie du code avec d'autres applications. C'est peut être qu'une impression mais je troue qu'en php, on maitrise beaucoup plus le code html envoyé au navigateur qu'en .net (c'est super les composants tout fait par ce que ça fait gagner du temps, mais on sait jamais à l'avance ce que recevra exactement le navigateur)


On n'est pas obligé d'utiliser les WebControls. Et on peut se créer ses propres contrôles aussi.
 
Non, l'intérêt, c'est que :
1/ 100% du code exécuté est séparé du HTML. Déjà, ça évite de s'embrouiller la tête, ne serait-ce qu'avec l'indentation.
2/ La modularité du code est pour moi une chose très importante. Avec .NET, lorsque tu vas lier des données à un élément par exemple, au lieu de partir dans des boucles imbriquées et autres fonctions à toutes les sauces pour faire le rendu, tu vas récupérer des évènements, et pouvoir traîter proprement chacun d'entre eux.
 
Genre :
 
Dans le Page_Load :
MonTableauControl.DataSource = MyDataTable;
MonTableauControl.DataBind();
 
Puis un évènement :
MonTableauControl_DataBindRow où tu vas pouvoir faire des traîtements en fonction des données reçues pour la ligne en question.
 
Du coup, ton code est systématiquement modularisé, t'as pas de gros pattés immondes et imbittables.
De même, tu n'as pas de HTML au milieu de ton code, ce qui évite de partir dans des encapsulations de chaînes à n'en plus finir.
 
Si je veux créer un <table> dans ma page, alors j'utilise un Objet HtmlTable dans lequel je vais coller des HtmlTableRow et HtmlTableCell. Le cros intérêt, c'est que si par exemple je fais un rendu dans MonTableauControl_DataBindRow, au lieu d'ajouter par exemple des HtmlTableRow à ma table, je vais ajouter des objets MaLigneSpeciale qui hérite de HtmlTableRow et prend en paramètre au constructeur le isEven reçu par mon évènement afin de prédéfinir la classe désirée.
 
Ainsi, si je dois modifier le comportement de mes lignes impaires, j'ai pas l'ensemble du site à passer en revue, j'ai juste de constructeur d'une unique classe à modifier. En noyant du HTML directement dans le code, grace aux CSS on peut limiter les dégats, mais on n'arrivera jamais à refactoriser au même point.
 
 
anthomicro > J'ai pas dit que mettre $j dans le for était un bug. J'ai dit que si on tape $j par erreur, on aura du mal à s'en rendre compte, parceque définie ou pas, ça passe, et vu que toute variable en PHP à une portée globale (c'est à dire qu'elle n'est pas locale à son bloc de déclaration) alors elle a très bien pu être définie dans un include par exemple, et ainsi produire des résultat aussi étranges qu'incompréhensibles. En .NET ça va même pas compiler car cette variable n'existe pas dans le contexte actuel.
 
Mais évidement qu'on peut très bien faire ça :
 
$j = 5;
 
for ($i = 0; $j < 10; $i++)
{
  print("$i<br/>" );
  $j += $i;
}
 
Et heureusement !
 
Sauf que quand c'est pas voulu c'est plus emmerdant, et on n'a aucun moyen de le détecter en PHP, ce qui rend la recherche du bug plus difficile (quand on est dans un algo complexe, on va plus facilement chercher ce qui cloche dans l'algo qu'une bête erreur de frappe).

Reply

Marsh Posté le 23-08-2007 à 14:15:16    

Y'a des choses genre xdebug qui te facilite la tâche pour ce genre de choses ;)
Ou utiliser le langage à fond et les ticks.
 
Je suis d'accord que c'est assez folklo parfois mais largement faisable ;)

Reply

Marsh Posté le 23-08-2007 à 14:24:16    

Tiens il me semblait qu'en php il me jetait sur une comparaison avec une variable non définie (avec mes gros doigts des deux mains gauches j'ai parfois du mal à viser).

Reply

Marsh Posté le 23-08-2007 à 14:30:06    

Il doit te sortir un warning undefined, si t'affiches les warning mais ça l'empêche pas de continuer :D

Reply

Marsh Posté le 23-08-2007 à 14:35:05    

Si c'est ça c'est bien visible ça fait crado sur la page.
Mais il me semble bien qu'en tout cas ça se voyait comme mon nez

Message cité 1 fois
Message édité par gzii le 23-08-2007 à 14:35:43
Reply

Marsh Posté le 23-08-2007 à 14:41:34    

MagicBuzz > En php, si $j n'est pas défini, alors tu te manges un gros warning (en boucle) quand tu fais un :

Citation :

for ($i = 0; $j < 10; $i++)
{
}


Pour tout ce que t'as dit dans ton dernier message, en fait on peut obtenir la même chose en php de nos jours. C'est juste que c'est pas prévus par défaut. En php, tu n'es pas obligé d'avoir de l'html dans ton code. En php, quand tu utilises des objets, les variables resteront toutes locales à l'objet ou aux fonctions sauf si tu dis explicitement que tu veux utiliser telle variable globale. (comme avec le .net qui est tout objet)
Tu dis également que si tu veux changer la couleur des lignes impaires, tu es obligé de modifier le constructeur d'une classe. Mais ça veut dire que si tu veux que chaque type d'élément s'affiche toujours de la même manière dans chaque page t'es obligé de surcharger tous les objets html de base (ou de te contenter de l'affichage par défaut). En php, c'est vrai que tu n'as pas d'élément de base pour tout ça donc t'es obligé de te les faire. Au final on en arrive au même.
 
Finalement, malgré tout ce que t'as dit et le fait que le .net soit plus propre (et qu'il empêche d'être aussi bordélique que certains en php) je ne vois rien du tout qui ne soit pas faisable en php. Les méthodes pour arriver au résultat ne seront pas exactement pareil (grâce aux fonctions virtuelles, condition nécessaire pour pouvoir attacher des évènements à certaines classes) mais on arrivera quand même tous au même résultat.
 
Pour tes exemples, je me pose toujours le même genre de question :  
- si je demande une couleur de fond rouge, est-ce que ça sera déterminé dans un fichier css (très peu probable) dans les propriétés css ou dans les propriété html traditionelle? (seul moyen de le savoir, tester)
- quand je fais une nouvelle page, est ce que je vais obtenir du code html4 ou du xhtml? (idem, seul un test nous le dira)
- s'il y a un bug d'affichage ou un bug du GUI (peut être du à une incompatibilité du javascript des éléments dynamiques par rapport à certains navigateur) comment puis-je arriver à les corriger?
 
C'est à cause de ce genre de questions que j'ai du mal à voir l'avantage du .net quand on a juste un site web à faire et aucun programme qui va partager du code avec le site.

Reply

Marsh Posté le 23-08-2007 à 15:20:07    

Mais puisque je te dis que t'es pas obligé d'utiliser les WebControls :o
 
Perso, je ne les utilise jamais.
Les seuls que j'utiliserai, ce sera des PlaceHolder, c'est à dire des objets qui me permettent de faire ma tambouille que je veux, sans avoir eux-même de code en sortie.
Pour les contrôles, on peut créer ses propres contrôles, que ce soit de simples balises toutes bête où des éléments complexes (formulaire entier par exemple), on est 100% maître du code.
 
Y'a juste qu'en .NET, t'as d'un côté une page "aspx" qui ne contient que du HTML, et de l'autre des pages "cs" qui contiennent le code qui doit s'exécuter.
 
La page aspx contient alors des balises xml proprio, qui permettent au code cs de coller sa tambouille une fois qu'il a terminé à la place.
 
Exemple pourri codé à la va vite :
 
default.aspx

Code :
  1. <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.    <title>Untitled Page</title>
  6. </head>
  7. <body>
  8.    <form id="form1" runat="server">
  9.        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
  10.    </form>
  11. </body>
  12. </html>


 
default.aspx.cs :

Code :
  1. using System;
  2. using System.Drawing;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Xml;
  7.  
  8. public partial class _Default : System.Web.UI.Page
  9. {
  10.    XmlDocument dom;
  11.  
  12.    protected void Page_Load(object sender, EventArgs e)
  13.    {
  14.        dom = new XmlDocument();
  15.  
  16.        MagicTable mtBleu = new MagicTable();
  17.        dom.Load(MapPath("./test1.xml" ));
  18.        mtBleu.DataSource = dom;
  19.        mtBleu.DataBindRowEvent += new MagicTableDataBindRowEventHandler(mtBleu_rowbind);
  20.        mtBleu.DataBind();
  21.  
  22.        MagicTable mtRouge = new MagicTable();
  23.        dom.Load(MapPath("./test2.xml" ));
  24.        mtRouge.DataSource = dom;
  25.        mtRouge.DataBindRowEvent += new MagicTableDataBindRowEventHandler(mtRouge_rowbind);
  26.        mtRouge.DataBind();
  27.  
  28.        MagicTable mtSans = new MagicTable();
  29.        mtSans.DataSource = dom;
  30.        mtSans.DataBind();
  31.  
  32.        PlaceHolder1.Controls.Add(mtBleu);
  33.        PlaceHolder1.Controls.Add(mtRouge);
  34.        PlaceHolder1.Controls.Add(mtSans);
  35.    }
  36.  
  37.    protected void mtBleu_rowbind(object sender, MagicTableDataBindRowEventArgs e)
  38.    {
  39.        TableRow tr = new TableRow();
  40.  
  41.        if (e.IsEven)
  42.        {
  43.            tr.BackColor = Color.AliceBlue;
  44.        }
  45.        else
  46.        {
  47.            tr.BackColor = Color.DodgerBlue;
  48.        }
  49.  
  50.        foreach (XmlElement el in e.DataHeader.ChildNodes)
  51.        {
  52.            TableCell td = new TableCell();
  53.            td.Text = e.DataRow.SelectSingleNode(el.Attributes["id"].Value).InnerText;
  54.            tr.Controls.Add(td);
  55.        }
  56.        (sender as Table).Controls.Add(tr);
  57.    }
  58.  
  59.    protected void mtRouge_rowbind(object sender, MagicTableDataBindRowEventArgs e)
  60.    {
  61.        TableRow tr = new TableRow();
  62.  
  63.        if (e.IsEven)
  64.        {
  65.            tr.BackColor = Color.Salmon;
  66.        }
  67.        else
  68.        {
  69.            tr.BackColor = Color.Pink;
  70.        }
  71.  
  72.        foreach (XmlElement el in e.DataHeader.ChildNodes)
  73.        {
  74.            TableCell td = new TableCell();
  75.            td.Text = e.DataRow.SelectSingleNode(el.Attributes["id"].Value).InnerText;
  76.            tr.Controls.Add(td);
  77.        }
  78.        (sender as Table).Controls.Add(tr);
  79.    }
  80.  
  81.    public delegate void MagicTableDataBindRowEventHandler(object sender, MagicTableDataBindRowEventArgs e);
  82.  
  83.    public class MagicTableDataBindRowEventArgs : EventArgs
  84.    {
  85.        public bool IsEven;
  86.        public XmlNode DataHeader;
  87.        public XmlNode DataRow;
  88.  
  89.        public MagicTableDataBindRowEventArgs(bool iseven, XmlNode dataheader, XmlNode datarow)
  90.        {
  91.            IsEven = iseven;
  92.            DataHeader = dataheader;
  93.            DataRow = datarow;
  94.        }
  95.    }
  96.  
  97.    private class MagicTable : Table
  98.    {
  99.        public event MagicTableDataBindRowEventHandler DataBindRowEvent;
  100.        private XmlDocument XmlData = null;
  101.  
  102.        public override void DataBind()
  103.        {
  104.            if (XmlData == null)
  105.            {
  106.                throw new Exception("Impossible de binder une source vide" );
  107.            }
  108.            else if (DataBindRowEvent == null)
  109.            {
  110.                TableHeaderRow thr = new TableHeaderRow();
  111.                TableHeaderCell th = new TableHeaderCell();
  112.                th.Text = "Aucune surchage du binder de lignes.";
  113.                thr.Controls.Add(th);
  114.                this.Controls.Add(thr);
  115.                TableRow tr = new TableRow();
  116.                TableCell td = new TableCell();
  117.                td.Text = System.Web.HttpUtility.HtmlEncode(XmlData.OuterXml);
  118.                tr.Controls.Add(td);
  119.                this.Controls.Add(tr);
  120.                return;
  121.            }
  122.  
  123.            XmlNode header = XmlData.DocumentElement.SelectSingleNode("head" );
  124.  
  125.            TableHeaderRow trh = new TableHeaderRow();
  126.            foreach (XmlNode el in header.SelectNodes("col" ))
  127.            {
  128.                TableHeaderCell th = new TableHeaderCell();
  129.                th.Text = el.InnerText;
  130.                trh.Controls.Add(th);
  131.            }
  132.            this.Controls.Add(trh);
  133.            
  134.            bool even = false;
  135.            foreach (XmlNode el in XmlData.DocumentElement.SelectNodes("body/line" ))
  136.            {
  137.                OnDataBindRow(new MagicTableDataBindRowEventArgs(even, header, el));
  138.                even = !even;
  139.            }
  140.        }
  141.  
  142.        public XmlDocument DataSource
  143.        {
  144.            set
  145.            {
  146.                this.XmlData = value;
  147.            }
  148.        }
  149.  
  150.        protected virtual void OnDataBindRow(MagicTableDataBindRowEventArgs e)
  151.        {
  152.            DataBindRowEvent(this, e);
  153.        }
  154.    }
  155. }


Evidement, on collera la classe dans un fichier à part, il n'a rien à foutre mélangé avec le reste. Plutôt que de le faire hériter de Table, on pourra aussi le faire hériter de UserControl plutôt, histoire d'avoir un rendu vraiment 100% customisé.
 
Fichiers XML :

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <root>
  3.  <head>
  4.    <col id="id">ID</col>
  5.    <col id="nom">Nom</col>
  6.    <col id="date">Naissance</col>
  7.  </head>
  8.  <body>
  9.    <line>
  10.      <id>1</id>
  11.      <nom>Toto</nom>
  12.      <date>1950-04-12</date>
  13.    </line>
  14.    <line>
  15.      <id>2</id>
  16.      <nom>Tutu</nom>
  17.      <date>1987-10-23</date>
  18.    </line>
  19.    <line>
  20.      <id>3</id>
  21.      <nom>Alfred</nom>
  22.      <date/>
  23.    </line>
  24.  </body>
  25. </root>
  26.  
  27. <?xml version="1.0" encoding="utf-8" ?>
  28. <root>
  29.  <head>
  30.    <col id="title">Titre</col>
  31.    <col id="summary">Résumé</col>
  32.  </head>
  33.  <body>
  34.    <line>
  35.      <title>Pollux circus</title>
  36.      <summary>C'est l'histoire de Pollux le chien.</summary>
  37.    </line>
  38.    <line>
  39.      <title>La belle et la bête</title>
  40.      <summary>C'est l'histoire d'une belle bête et une bête belle.</summary>
  41.    </line>
  42.    <line>
  43.      <title>Les comptes des 1001 nuits</title>
  44.      <summary>Des comptes à dormir debout.</summary>
  45.    </line>
  46.  </body>
  47. </root>


 
Sortie :
http://img369.imageshack.us/img369/2120/grmpfys8.png
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" >
  3. <head><title>
  4.     Untitled Page
  5. </title></head>
  6. <body>
  7.    <form name="form1" method="post" action="Default.aspx" id="form1">
  8. <div>
  9. <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUyNzUzNTM5OGRkCEe21GS+9rZzDMdiFhQU8RpwPZc=" />
  10. </div>
  11.        <table border="0">
  12.     <tr>
  13.         <th>ID</th><th>Nom</th><th>Naissance</th>
  14.     </tr><tr style="background-color:DodgerBlue;">
  15.         <td>1</td><td>Toto</td><td>1950-04-12</td>
  16.     </tr><tr style="background-color:AliceBlue;">
  17.         <td>2</td><td>Tutu</td><td>1987-10-23</td>
  18.     </tr><tr style="background-color:DodgerBlue;">
  19.         <td>3</td><td>Alfred</td><td></td>
  20.     </tr>
  21. </table><table border="0">
  22.     <tr>
  23.         <th>Titre</th><th>Résumé</th>
  24.     </tr><tr style="background-color:Pink;">
  25.         <td>Pollux circus</td><td>C'est l'histoire de Pollux le chien.</td>
  26.     </tr><tr style="background-color:Salmon;">
  27.         <td>La belle et la bête</td><td>C'est l'histoire d'une belle bête et une bête belle.</td>
  28.     </tr><tr style="background-color:Pink;">
  29.         <td>Les comptes des 1001 nuits</td><td>Des comptes à dormir debout.</td>
  30.     </tr>
  31. </table><table border="0">
  32.     <tr>
  33.         <th>Aucune surchage du binder de lignes.</th>
  34.     </tr><tr>
  35.         <td>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;root&gt;&lt;head&gt;&lt;
  36. col id=&quot;title&quot;&gt;Titre&lt;/col&gt;&lt;col id=&quot;summary&quot;&gt;R&#233;sum&#233;&lt;/col&gt;&lt;/head&gt;
  37. &lt;body&gt;&lt;line&gt;&lt;title&gt;Pollux circus&lt;/title&gt;&lt;summary&gt;
  38. C'est l'histoire de Pollux le chien.&lt;/summary&gt;&lt;/line&gt;&lt;line&gt;&lt;title&gt;
  39. La belle et la b&#234;te&lt;/title&gt;&lt;summary&gt;
  40. C'est l'histoire d'une belle b&#234;te et une b&#234;te belle.&lt;/summary&gt;&lt;/line&gt;
  41. &lt;line&gt;&lt;title&gt;Les comptes des 1001 nuits&lt;/title&gt;&lt;summary&gt;
  42. Des comptes &#224; dormir debout.&lt;/summary&gt;&lt;/line&gt;&lt;/body&gt;&lt;/root&gt;</td>
  43.     </tr>
  44. </table>
  45.    </form>
  46. </body>
  47. </html>


 
(Evidement, c'est loin d'être parfait, et parfaitement inutile comme truc)
C'est juste un exemple.
 
Typiquement, ici j'aurai juste besoin de Page_Load() dans ma page. Tout le reste peut être refactorisé. Et mon handler par défaut fait rien. A la place je pourrais lui faire faire quelquechose (sans blaque) et plutôt que de tout recoder dans mes handlers manuels, et n'avoir qu'à modifier ce qui a déjà été généré.


Message édité par MagicBuzz le 23-08-2007 à 15:34:01
Reply

Marsh Posté le 23-08-2007 à 15:38:54    

MagicBuzz > En résumé, tu montres ce qu'on peut aussi faire en php : le code d'un côté, les modèles de l'autre. La seule grosse différence, c'est que t'as simplement pas besoin de coder ce qui va mixer le modèle et le résultat du code.

Reply

Marsh Posté le 23-08-2007 à 15:52:15    

omega2 a écrit :

MagicBuzz > En résumé, tu montres ce qu'on peut aussi faire en php : le code d'un côté, les modèles de l'autre. La seule grosse différence, c'est que t'as simplement pas besoin de coder ce qui va mixer le modèle et le résultat du code.


je compare rien, je dis juste "en C# on peut faire comme ça" (mais autrement aussi) et on peut aussi bien coder son propre html qu'utiliser les objets tous faits, c'est pas parcequ'un truc marche pas comme on veut qu'on est coincé.
 
en gros, beaucoup de gens confondent .NET avec DW (forcément, c'est le même type de GUI pour dessiner les pages), mais ça n'a rien à voir. déjà, on va jamais dans l'écran de dessin de la page, on reste toujours dans le code, si on veut voir à quoi ressemble la page, on fait F5 pour la lancer en mode débug...
 
sinon, omega, tu dis qu'on peut effectivement séparer le code des modèles en php.
c'est vrai. seulement c'est pas comme ça que c'est configuré de base, et jusqu'à présent du moins, j'ai jamais vu de code le faire.
 
php évolue, et reprend de JSP et .NET certaines bonnes idées. c'est très bien.
 
seulement je pense qu'ils devraient faire comme Microsoft : ok, ASP ct tout pourri, on passe à un nouveau truc : ASP.NET
=> PHP doit changer non pas seulement de version mais aussi de nom, histoire d'intégrer "par défaut" les principes nouvelle génération : code 100% objet, modèles séparés du code, etc. actuellement, je trouve que le gros défaut, c'est qu'il est installé de base en mode "gros caca mou qui pue", c'est à dire en mode script séquentiel tout ce qu'il y a de plus pourri, et il va falloir jongler dans la config pour passer à un framework potable. ça devrait être l'inverse. d'ailleurs, rien n'empêche de coder en ASP.NET à la sauce minstère pourri comme en PHP. seulement par défaut ça se présente pas du tout comme ça, histoire d'éduquer un peu les devs et leur apprendre qu'on peut aussi travailler proprement sans perdre de temps.


Message édité par MagicBuzz le 23-08-2007 à 15:54:32
Reply

Marsh Posté le 23-08-2007 à 16:58:31    

gzii a écrit :

Si c'est ça c'est bien visible ça fait crado sur la page.
Mais il me semble bien qu'en tout cas ça se voyait comme mon nez


 
 
Tu mets un @ devant ta variable et hop ça se voit plus. C'est cool hein PHP.  :D  :lol:  
 
Sinon je crois qu'on a fait peur à cli142 (le posteur de ce topic) avec tout ça. :whistle:

Reply

Marsh Posté le 23-08-2007 à 17:08:39    

Bqda > Met un "try" autour des fonctions et tu vois plus les erreurs. Cool les langages évolués. ;)
 
Mais non on lui a pas fait peur (je crois) il se renseigne et il apprend.

Reply

Marsh Posté le 23-08-2007 à 17:20:02    

bah surtout, tu mets error_reporting(0); en début de page, et t'as plus aucun warning...
 
donc la petite modif en prod passe comme une lettre à la poste et tu t'en rend même pas compte ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed