Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1702 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Est ce que bout de code est exploitable ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Est ce que bout de code est exploitable ?

n°1987393
boullie
i want your knowledge
Posté le 25-04-2010 à 15:28:10  profilanswer
 

Tout d'abord bonjour a tous.
Je tente actuellement de développé un site web relativement "simple" (j'ai débuté php il y a 15 jours, de grosses lacunes html, a la base j'ai appris la prog via Java).
Ma difficulté principale (pour le moment) est de créer un calendrier, je ne veux pas en télécharger un alors me suis cassé la binette pour créer cette chose :
 

Code :
  1. <?php
  2.  function creerCal($mois){
  3.  $lundi="Mon";
  4.  $mardi="Tue";
  5.  $mercredi="Wed";
  6.  $jeudi="Thu";
  7.  $vendredi="Fri";
  8.  $samedi="Sat";
  9.  $dimanche="Sun";
  10.  $maxJourMois=cal_days_in_month(CAL_GREGORIAN,$mois,date("Y",mktime(0,0,0,$mois,date("d" ),date("Y" ))));
  11.  $tabMois=array(date("F",mktime(0,0,0,$mois,date("d" ),date("Y" ))));
  12.  echo '<table width="70" border="1" bordercolordark cellpadding="3">';
  13.  echo'<tr><th bgcolor=#eed861 colspan="9" align=center scope="col">',date("F",mktime(0,0,0,$mois,date("d" ),date("Y" )))," ",date("Y",mktime(0,0,0,$mois,date("d" ),date("Y" ))),'</th></tr>';
  14.  $tabJour=array($lundi,$mardi,$mercredi,$jeudi,$vendredi,$samedi,$dimanche);
  15.  echo '<tr>';
  16.  for($i=0;$i<7;$i++){
  17.  echo "<td bgcolor=#6b370f align=center><FONT color=#FFFFFF>$tabJour[$i]</td>";
  18.  }
  19.  echo '</tr>';
  20.  echo '<tr>';
  21.  $l=0;
  22.  while($l<6){
  23.    if(date("D",mktime(0,0,0,$mois,1,date("Y" )))!=$tabJour[$l]){
  24.    echo '<td bgcolor=#CCCCCC align=center></td>';
  25.    }else break;
  26.    $l++;
  27.   }
  28. for($j=0;$j<$maxJourMois;$j++){
  29.  for($k=0;$k<7;$k++){
  30.   if (date("D",mktime(0,0,0,$mois,$j+1,date("Y" )))==$tabJour[$k]){
  31.    if (date("d",mktime(0,0,0,$mois,$j+1,date("Y" )))==date("d" )&&date("m",mktime(0,0,0,$mois,$j+1,date("Y" )))==date("m" )){
  32.     echo '<td bgcolor=#FFFFFF align=center>',date("d",mktime(0,0,0,$mois,$j+1,date("Y" ))),'</td>';
  33.    }else if (date("l",mktime(0,0,0,$mois,$j+1,date("Y" )))=="Saturday"||date("l",mktime(0,0,0,$mois,$j+1,date("Y" )))=="Sunday" ){
  34.    echo '<td bgcolor=#CCCCCC align=center>',date("d",mktime(0,0,0,$mois,$j+1,date("Y" ))),'</td>';
  35.     }else echo '<td bgcolor=#eed861 align=center>',date("d",mktime(0,0,0,$mois,$j+1,date("Y" ))),'</td>';
  36.   }
  37.   }
  38.   if (date("l",mktime(0,0,0,$mois,$j+1,date("Y" )))=="Sunday" ){
  39.   echo '</tr>';
  40.   }
  41. }
  42.  echo '</tr>';
  43.  echo '</table>';
  44.  }
  45. ?>


 
 
Mes questions sont :  
 
- Est-ce que ce code est une immondice (déguelasse koa) ?
-Si non, puis-je espérer en faire un datePicker pour un formulaire ?
-Faire ce calendrier en javascript serait plus judicieux (afin d'en faire un datePicker bien sur) ?
 
je vous remercie d'avance, et merci pour votre indulgence (suis débutant rager pas sur ma maladresse ou mes aberrations).


Message édité par boullie le 25-04-2010 à 15:30:55
mood
Publicité
Posté le 25-04-2010 à 15:28:10  profilanswer
 

n°1987401
billgatesa​nonym
Posté le 25-04-2010 à 16:25:42  profilanswer
 

Citation :

- Est-ce que ce code est une immondice (déguelasse koa) ?

Est-ce que l'esthétisme est important dans un domaine scientifique comme l'informatique ? Faut il que le programme soit beau ou qu'il marche ? Je ramasse les copies à moins cinq.
 

Citation :

-Si non, puis-je espérer en faire un datePicker pour un formulaire ?

Vous pouvez espérer ce que vous voulez. Il n'y a pas de police de la pensée ici. Mais pour que l'espoir soit réaliste, il serait bien que vous compreniez ce que vous faîtes, plutôt que de faire un copier coller hasardeux. Donc, si vous avez des questions concernant, non pas tout le programme, mais une ou deux, voir trois lignes de ce programme, posez là nous de manière précise. On vous répondra c'est sûr.
 

Citation :

-Faire ce calendrier en javascript serait plus judicieux (afin d'en faire un datePicker bien sur) ?

Voilà une question précise. Ma réponse personnelle est "non, pas du tout". Quand on peux éviter le Javascript, il faut l'éviter, car le Javascript est lent, et il tourne sur le PC de l'utilisateur. Il vaut mieux faire du PHP si on en a la possibilité comme là, car on donne ainsi une page toute préparée à l'utilisateur. C'est un peu comme si on lui donne un plat tout chaud sortant du four PHP, au lieu d'un plat surgelé à faire réchauffer au micro-ondes javascript.

n°1987402
boullie
i want your knowledge
Posté le 25-04-2010 à 16:55:26  profilanswer
 

merci pour ta réponse rapide.
C'est noté en ce qui concerne javascript, si je peux m'en passer tant mieux.
Désolé pour le bloc de code brut, c'est abusé en effet, de plus j'ai pas mis de commentaires le ferais plus promis.
 
 
 

n°1987517
stealth35
Posté le 26-04-2010 à 10:07:37  profilanswer
 

hello, pour simplifié ton code, regarde du coté de strftime, dateperiod, strtotime ;)

n°1987531
rufo
Pas me confondre avec Lycos!
Posté le 26-04-2010 à 10:23:31  profilanswer
 

Pour faire un datePicker, d'un point de vue ergonomie, le javascript est plus approprié. Mais pour l'accessibilité (personnes handicapées visuelles), il fauta voir une solution en html (donc php qui génère le html).
Donc d'abord tu fais tout en html et ensuite, avec du javascript non intrusif, tu remplaces le lien vers le calendrier html par un composant datePicker en javascript. Tu en trouveras facilement sur le web, sinon, tu télécharges l'un de mes softs, Astres ou Icare (cf ma signature) : dans Astres, il n'et qu'en anglais alors que dans Icare, il est en anglais et français ;)
 
et oui, ce code est caca...


Message édité par rufo le 26-04-2010 à 10:23:39

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1987651
boullie
i want your knowledge
Posté le 26-04-2010 à 14:37:15  profilanswer
 

Merci pour ces réponses stealth et rufo
je vais jeter un coup d'oeil a tout ça, et tenter d'améliorer le code (même si je sens qu'il va aller a la poubelle).
Suis d'accord avec toi, en ce qui concerne l'ergonomie, je ne veux pas reload une page juste pour choisir une date (d'après ce que j'ai lu et de ce qu'on m'as dis : php:coté serv et javascript:coté client),
 donc je vais me tourner vers javascript, essayer par moi meme dans un premier temps et me tourner vers les softs dans un deuxième temps.
 
Mais il me semble que c'est un peu moins pratique  avec javascript pour manipuler la date(disclaimer connerie : ce que j'ai dit est potentiellement une grosse connerie), en tout cas je ne pourrais pas utiliser la technique de comparaison que j'utilise dans le code que je vous ai exposé.
Å plus.


Message édité par boullie le 26-04-2010 à 15:06:33
n°1987654
rufo
Pas me confondre avec Lycos!
Posté le 26-04-2010 à 14:41:32  profilanswer
 

pour info, Javascript a des fonction de manipulation de dates donc ce que tu peux faire en php avec les dates, tu peux le faire en javascript (en natif ou à l'aide libs GPL) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1987658
boullie
i want your knowledge
Posté le 26-04-2010 à 14:51:23  profilanswer
 

Ça me rassure, merci pour l'info.
J'attaque javascript et je vous fais un retour sur ce que je produit, pour avoir vos avis.


Message édité par boullie le 26-04-2010 à 15:06:56
n°1989150
boullie
i want your knowledge
Posté le 30-04-2010 à 14:55:35  profilanswer
 

bonjour à vous,
j'ai reussi comme j'ai pu faire un calendrier (pour le mois courant), en faisant une table html dont les td sont remplies par un script (javascript)
Mon probleme :
Je voudrais faire en sorte que lorsque l'on clique sur un bouton prec ou suiv on change de mois, evidemment je ne demande pas un script mais comment puis je faire ceci avec mon script (est ce possible deja avec ce script) ?
 
le script en question :
 

Code :
  1. // JavaScript Document
  2. window.onload=remplirCase;jourMoisMax;nomMois;
  3. var dateActuelle=new Date();
  4. var premierJour= new Date(dateActuelle.getFullYear(),dateActuelle.getMonth(),1);
  5. var j=premierJour.getDay();
  6. //retourne le nom du mois en cours
  7. function nomMois(){
  8. var chiffreMois=dateActuelle.getMonth();
  9. var tabMois=["Janvier ","Février ","Mars ","Avril ","Mai ","Juin ","Juillet ","Aout ","Septembre ","Octobre ","Novembre ","Décembre "];
  10. for (var i=0;i<=11;i++){
  11.  switch(chiffreMois){
  12.  case i:
  13.  return tabMois[i]+ dateActuelle.getFullYear();
  14.  break;
  15. }
  16. }
  17. }
  18. //retourne le dernier jour du mois
  19. function jourMoisMax(){
  20. var mois=dateActuelle.getMonth();
  21. switch(mois){
  22.  case 0:case 2:case 4:case 6:case 7:case 9:case 11:
  23.  return 30;
  24.  break;
  25.  case 1:
  26.  return 27; //manque fonction bissextile (en cours)
  27.  break;
  28.  default:
  29.  return 29;
  30. }
  31. }
  32. //rempli les td de la page html  
  33. function remplirCase(){
  34.  document.getElementById("titreMois" ).innerHTML=nomMois();
  35. if (j==0){
  36.   j=7;
  37.  }
  38. for(var i=0;i<=jourMoisMax();i++){
  39.  document.getElementById("case"+j).innerHTML=premierJour.getDate()+i;
  40.   j++;
  41. }
  42. }

n°1989152
rufo
Pas me confondre avec Lycos!
Posté le 30-04-2010 à 14:59:30  profilanswer
 

t'es en train de recoder un composant javascript déjà développé apr d'autre je sais pas combien de fois. Ce que tu demandes, tu le trouveras dans mon soft Icare, par ex : il est multi-langues (anglais et fr pour l'instant), il gère la navigation par mois (précédent/suivant) et l'année (liste déroulante) et les jours affichés suivant les 7 jours de la semaine.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 30-04-2010 à 14:59:30  profilanswer
 

n°1989368
boullie
i want your knowledge
Posté le 01-05-2010 à 19:23:31  profilanswer
 

Merci encore Rufo,
j'ai jeté un coup d'oeil, sur le crossCalendar.js (et la doc bien sur), mais je n'ai pas compris comment l'utiliser ou je n'y ai pas assez consacré de temps.
J'espère pouvoir m'en servir, de toute façon je continu de tenter  un calendrier(datePicker) comme un exercice afin d'en apprendre plus sur JS.
 :jap:  
A Bientot

n°1989591
PunkRod
Digital Mohawk
Posté le 03-05-2010 à 09:47:42  profilanswer
 

y a de très bons datepicker construit sur des libs comme jquery ou mootools.
Est-ce bien nécessaire de tout recoder ?
ex : http://docs.jquery.com/UI/Datepicker

n°1989701
boullie
i want your knowledge
Posté le 03-05-2010 à 12:19:40  profilanswer
 

Bonjour PunkRod,
ouais c'est pas nécessaire, j'avais deja pris un datepicker sur le site de "a de la daube", et il etait très bien, mais je n'arrivais pas a passer la date obtenue par le picker dans ma base de données.
Donc me suis dis je vais le refaire en mode simple, en plus je n'ai besoin que du mois suivant le mois courant.
Mais face a vos réponses, je retente le coup avec le jquery + le soft a Rufo.
Merci pour ces réponses.
ps (j'ai réussi a passer du mois courant au mois suivant youpi j'ai inventé l'eau chaude :bounce: )


Message édité par boullie le 03-05-2010 à 12:20:46
n°1990116
rufo
Pas me confondre avec Lycos!
Posté le 04-05-2010 à 11:51:13  profilanswer
 

ben mon composant, suffit juste de le coupler à une balise input de type texte et de luis donner les paramètres attendus.
Ex :

Code :
  1. <input class="readonly" id="sDate" name="sDate" type="text" size="10" maxlength="10" value="" title="saisir la date" readonly="readonly" />
  2. <script type="text/javascript">
  3. <!--
  4.      DateCalendar = new crossCalendar('DateCalendar', document.forms[0].sDate, 'Libs/JSCalendar/images/', 'd/m/Y', 'Sélectionner une date!', 'fr', true, 'Effacer la date!');
  5. //-->
  6. </script>


 
le nom de la var javascript avant le = doit être la même que dans le premier paramètre de crossCalendar(). Le 2ième est l'objet input type texte. Après, c'est le path de l'endroit où se trouves les images du composant, ensuite, c'est le format de la date pour remplir le input (ici, jour/mois/année sur 4 chiffres, voir le formalisme de la fonction date() en php), après c'est le tooltip du composant. Les 2 derniers paramètres, c'est pour dire si on rajoute un bouton ou pas pour permettre à l'utilisateur d'effacer la date saisie (true ou false donc) et le tooltip du bouton.
 
Donc franchement, rient de bien compliqué.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1990199
MonsieurY
Posté le 04-05-2010 à 16:29:26  profilanswer
 

billgatesanonym a écrit :

Citation :

[quote]-Faire ce calendrier en javascript serait plus judicieux (afin d'en faire un datePicker bien sur) ?

Voilà une question précise. Ma réponse personnelle est "non, pas du tout". Quand on peux éviter le Javascript, il faut l'éviter, car le Javascript est lent, et il tourne sur le PC de l'utilisateur. Il vaut mieux faire du PHP si on en a la possibilité comme là, car on donne ainsi une page toute préparée à l'utilisateur. C'est un peu comme si on lui donne un plat tout chaud sortant du four PHP, au lieu d'un plat surgelé à faire réchauffer au micro-ondes javascript.


 
"le Javascript est lent"
Il faut se tenir au courant, les runtimes javascripts sont depuis quelques années beaucoup plus rapides que PHP (tout comme python et Ruby).
V8 est même jusqu'à 30 fois plus rapide que PHP (http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=php&lang2=v8).
Il faut en plus rajouter à PHP la latence du réseau qui est infiniment plus impactante que le temps de calcul de quelques dates.
 
Pour ce qui est de l'accessibilité : un datepicker est une aide à la saisie. Qu'il soit ou non accessible n'est pas un problème car le formulaire doit pouvoir permettre la saisie manuelle de la date.

n°1990301
boullie
i want your knowledge
Posté le 04-05-2010 à 22:50:39  profilanswer
 

Merci rufo pour les précisions, je vais tester de suite.
Monsieur Y,
je ne comprends pas pourquoi le formulaire doit permettre la saisie manuelle, je veux l'éviter a tout prix, afin de pouvoir récuperer la date dans la forme que je veux, pas de date exotique rentré manuellement par l'user.

n°1990356
MonsieurY
Posté le 05-05-2010 à 09:34:40  profilanswer
 

Parce que dans l'idéal, ton formulaire doit pouvoir fonctionner sans javascript.
Comme cela il est plus accessible mais aussi plus fiable : en cas de défaillance du calendrier ton formulaire reste exploitable.
 
Ton tort ici c'est de confondre aide à la saisie et validation.

n°1990358
rufo
Pas me confondre avec Lycos!
Posté le 05-05-2010 à 09:41:49  profilanswer
 

Son tord est aussi de penser que tout le monde à javascript sur son navigateur. Il ne pense pas aux personnes handicapées visuelles qui surf avec un lecteur d'écran (donc pas de javascript en général). Si le site web est public, c'est se priver d'un trafic non négligeable (environ 10% de la population Française souffre d'un handicap visuel, plus ou moins grave). :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1990384
MonsieurY
Posté le 05-05-2010 à 10:51:33  profilanswer
 

"lecteur d'écran (donc pas de javascript en général)"
 
Cette assertion par contre est fausse, les lecteurs d'écrans n'influent pas sur le paramétrage du navigateur, et le proportion d'utilisateurs ayant javascript désactivé est tout aussi faible que chez les visiteurs valides.
C'est une croyance qui a la vie dure mais qui n'a jamais été fondée. Moi c'est en lisant "PPK on javascript" que j'ai gobé cela il y a quelques années...

n°1990387
MonsieurY
Posté le 05-05-2010 à 10:54:21  profilanswer
 

Après javascript ou non, accessible ou non, je doute de l'usabilité d'un datepicker au travers un outil de synthèse vocale : raison de plus pour autoriser la saisie manuelle.

n°1990488
rufo
Pas me confondre avec Lycos!
Posté le 05-05-2010 à 15:22:26  profilanswer
 

MonsieurY a écrit :

"lecteur d'écran (donc pas de javascript en général)"
 
Cette assertion par contre est fausse, les lecteurs d'écrans n'influent pas sur le paramétrage du navigateur, et le proportion d'utilisateurs ayant javascript désactivé est tout aussi faible que chez les visiteurs valides.
C'est une croyance qui a la vie dure mais qui n'a jamais été fondée. Moi c'est en lisant "PPK on javascript" que j'ai gobé cela il y a quelques années...


 
Pour info, les aveugles n'utilisent pas un navigateur web "classique" (IE, FF, Opéra...) mais plutôt des softs genre IBM Home Page Reader. Et ça fait pas longtemps que ce genre de soft intègre Javascript... Y'en a mêmes qui utilisent Lynx et un synthétiseur vocal.
 


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1990497
MonsieurY
Posté le 05-05-2010 à 15:54:26  profilanswer
 

JAWS, Window-Eyes, pour ne citer qu'eux, existent depuis mathusalem. :o  
 
Après que le soft IBM n'intègre que maintenant ce que ses concurrents font depuis plus d'une décennie, je veux bien te croire vu que j'ai eu le malheur de connaitre Notes.
 
Par contre la on dérive à grand flots vers le HS.

n°1990902
boullie
i want your knowledge
Posté le 06-05-2010 à 13:52:40  profilanswer
 

Merci pour ces précisions vous assurez monsieur Y et rufo,
donc je vais laisser la possibilité de saisir la date manuellement, et je ferais un contrôle au moment de la validation si j'ai bien compris.
a bientôt

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Est ce que bout de code est exploitable ?

 

Sujets relatifs
code phpFignoler mon code
Optimisation de code javascriptErreur code VBA sur Excel2007
code java pour afficher un frame en click sur le menu en netbeanscode java pour afficher un frame en click sur le menu netbeans
Sujet: Recupéré code source page file_get_contents()code connexion sql server à, partir d'un code access
[RESOLU] suis perdu sur mon bout de code 
Plus de sujets relatifs à : Est ce que bout de code est exploitable ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR