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

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU]Petite appli php ou javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Petite appli php ou javascript

n°1767290
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 14:32:50  profilanswer
 

Bonjour,
 Je souhaite créer une petite page PHP dont le but est de fournir un numéro
de la forme:
 
AAAAMMDDNN
 
où :
 - AAAA est l'année
 - MM est le mois
 - DD est le jour
 - NN est un numéro qui commence à 01 au début de chaque journée et
s'incrémente de 1 à chaque appel.
 
Il faut donc pouvoir sauvegarder le compteur entre 2 appels et
recommencer à 1 lors d'une nouvelle journée.
 
La page aurait 1 bouton, quand on appuie dessus, on récupère un numéro
unique.
 
Pour le moment j'ai réussi à afficher la date au bon format et le numéro incrémenté . Mais le bouton d'appel ne fait rien car je ne sais pas comment créer la fonction d'incrémentation appelé lorsqu'on clique sur le bouton. Votre proposition sera la bienvenue SVP!!! Je ne connais pas grand chose dans  le domaine du scripting ou programmation de quelques sortes.
 
Voici mon code:
 
<?php
$nbClic=1;
function Incremente(){
 $nbClic++;
}
 
$date=date('Ymd');
$i=0;  
echo "<input type='submit'  name='onglet' value='Nouveau numéro' onClick='Incremente()'>\n";
echo "<b>$date$nbClic</b>";
 
?>


Message édité par katikat le 26-09-2008 à 11:02:31
mood
Publicité
Posté le 31-07-2008 à 14:32:50  profilanswer
 

n°1767321
Sebastien
Posté le 31-07-2008 à 15:39:18  profilanswer
 

Ben sachant que tu sauvegardes nul part ton nombre de clics, tu peux pas avoir quelquechose de cohérent
Il faut que tu trouves un moyen de sauvgarder quelque part (fichier ou base) à quelclik tu en es
Si tu as pas de contraintes ca serait plus simple un numero à la mktime()

n°1767342
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 15:53:45  profilanswer
 

J'ai fait un plan mais il me reste à le concrétiser:
$date=date('Ymd')
$nbClic=01
Si Appel_bouton alors
   $nbClic++  //Incrémente de +1 à chaque clic
   sinon
   si $date != date_hier alors
      $nbClic=01  //Réinitialise le compteur à 01
   fsi
fsi
echo "$date$nbClic"
 
Pour définir la date_hier je pensais à mktime(0,0,0,date('m')-1 OU date('d')-1 OU date('Y')-1
 
Ca ressemble à rien je sais mais il y a une idée.
 
 

n°1767355
Sebastien
Posté le 31-07-2008 à 16:16:07  profilanswer
 

trop d'erreurs la dedans
* ta date sera forcement différent de la date d'hier quoiqu'il arrive
* tu ne sauvegardes tjs pas ton nblic
* a chaque fois que tu appelles ta page ton clic repasse à zero
 
Tu as de grosses lacunes sur ma modélisation du truc et la connaissance du dev en général
 
Explique mieux tes besoins / contraintes qu'on trouve la meilleure solution

n°1767371
Sebastien
Posté le 31-07-2008 à 16:36:55  profilanswer
 

Très très moche mais ca à le merite de marcher

Code :
  1. <?php
  2. $file = date("Ymd" ).'.txt';
  3. $f = fopen($file, 'a+');
  4. $clic = max(1, fgets($f, 4096));
  5. echo date("Ymd" ).$clic;
  6. $f = fopen($file, 'w+');
  7. fwrite($f, ++$clic);
  8. fclose($f);
  9. ?>


Message édité par Sebastien le 31-07-2008 à 16:38:38
n°1767375
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 16:39:00  profilanswer
 

J'ai expliqué mes besoins au début de mon POST. A partir de là je suis bloqué, c'est désespérant, sachant que ça doit prendre 10 min à peine pour un vrai développeur de faire ça.  
Concernant mes lacunes, tu as tout à fait raison..C'est pour ça que j'ai dit " Votre proposition sera la bienvenue SVP!!! Je ne connais pas grand chose dans  le domaine du scripting ou programmation de quelques sortes."
Je ne peux pas te poster ce qu'affiche mon petit code mais ça affiche quelquechose. Il me reste à faire la fonction qui pourra incrémenter mon NN à chaque clic sur le bouton. Quand ce sera fait, faudra voir l'histoire des dates et la réinitialisation du compteur.
Aaah la la!!
 

n°1767378
Sebastien
Posté le 31-07-2008 à 16:43:21  profilanswer
 

sauf que tu expliques nul part à quoi sert le numero, s'il est important d'avoir cette tete la, qu'est ce qu'il va devenir plus tard etc etc
 
Et ici on aide les gens, on donne pas forcement les solutions clés en main, donc on aime savoir à quoi va servir les choses et répondre pour que la personne n'ai plus besoin de nous et non donner une solution toute faite et que la personne revienne sans réfléchir au prochain problème

n°1767382
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 16:51:07  profilanswer
 

Ah ok! Dans ce cas je m'explique mieux. Il s'agit d'avoir un numéro unique à chaque appel (clic sur un bouton). C'est pour cela qu'il doit s'incrémenter et que la date change tous les jours. Et cette forme là doit rester telle qu'elle. (C'est la forme qu'on m'a demandé de réaliser...)

n°1767390
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 16:58:57  profilanswer
 

le code que tu m'as envoyée fonctionne, mais il s'incrémente lorsqu'on actualise la page. Ce que je souhaite est qu'il s'incrémente e cliquant sur un bouton 'submit'.

n°1767392
katikat
j'adOôôôre les SushiS...
Posté le 31-07-2008 à 17:02:23  profilanswer
 

Code :
  1. <?php
  2.     $file = date("Ymd" ).'.txt';
  3.     $f = fopen($file, 'a+');
  4.     $clic = max(1, fgets($f, 4096));
  5.     echo date("Ymd" ).$clic;
  6.     $f = fopen($file, 'w+');
  7.     fwrite($f, ++$clic);
  8.     fclose($f);
  9. echo "<tr><td colspan=2><input type='submit'  name='onglet' value='Nouveau numéro' onClick='Incremente()'></tr>\n";
  10. echo "<b>$date$nbClic</b>";
  11. ?>

mood
Publicité
Posté le 31-07-2008 à 17:02:23  profilanswer
 

n°1767442
CyberDenix
Posté le 31-07-2008 à 19:10:11  profilanswer
 

L'ordre est-il important ?
Parce que sinon plutot que d'incrémenter, je te conseille de concaténer ta date avec hash, voir même utiliser un hash tout court (ou si t'es parano comme moi, une concaténation de hash).
C'est anonymisant, unique et recommandé par la CNIL.
Le hash c'est bon, mangez-en.


---------------
Directeur Technique (CTO)
n°1767450
Sebastien
Posté le 31-07-2008 à 19:22:37  profilanswer
 

Voila pourquoi ma question car rien de mieux que des données pseudo-aléatoires
 
Et oui mon code s'incremente à la page, il suffit de le placer sous un bouton et basta

n°1767671
katikat
j'adOôôôre les SushiS...
Posté le 01-08-2008 à 10:43:10  profilanswer
 

L'ordre est important oui. Sinon Seb, pour placer le code sous un bouton je dois la déclarer comme une fonction que j'appelle ensuite sur le onClick. Je déclare quelles variable alors pour afficher les numéro???

n°1767828
katikat
j'adOôôôre les SushiS...
Posté le 01-08-2008 à 14:19:47  profilanswer
 

J'ai trouvé ce petit script HTML

Code :
  1. <html>
  2. <head>
  3. <title>Incremente</title>
  4. <style>
  5. button{cursor: pointer;}
  6. input{width:30px;text-align:right}
  7. </style>
  8. <script>
  9. /*Fonction d'incrémentation d'un champ*/
  10. function Incremente(wId, wValue){
  11.  if(isNaN(document.getElementById(wId).value)){document.getElementById(wId).value="0";}
  12.  if(parseInt(wValue)<0&&parseInt(document.getElementById(wId).value)=="0" ){return;}
  13.  document.getElementById(wId).value=new String(parseInt(document.getElementById(wId).value)+parseInt(wValue));
  14. }
  15. </script>
  16. </head>
  17. <body>
  18. <form name="form1">
  19. <input type="text" name="champ1" id="champ1" value="0" onclick="Incremente(this.id, 0)" readonly>
  20. <button type="button" onclick="Incremente('champ1', 1)">+</button>
  21. <button type="button" onclick="Incremente('champ1', -1)">-</button><br>
  22. </form>
  23. </body>
  24. </html>


Il fonctionne bien. Mais que dois-je modifier pour que ce soit MON NUMERO qui s'affiche, c'est à dire au format AAAAMMDDNN.
Help!!!

n°1767832
Sebastien
Posté le 01-08-2008 à 14:23:46  profilanswer
 

Non ca marche pas.
Tu relances la page et ca revient à zero, je crois que ce concept tu l'as toujours pas saisi, la c'est des données volatiles, tu as nul possibilité de savoir à quel moment tu en es.

n°1767850
katikat
j'adOôôôre les SushiS...
Posté le 01-08-2008 à 14:48:02  profilanswer
 

C'est vrai, c'etait juste un exemple,

Code :
  1. Seb, pour placer le code sous un bouton je dois la déclarer comme une fonction que j'appelle ensuite sur le onClick. Je déclare quelles variable alors pour afficher les numéro???


Ton script plus haut crée un fichier pour les clics de la journée et stocke les autres journées dans un autre fichier??? Je voudrais pouvoir afficher les résultats.

n°1767859
CyberDenix
Posté le 01-08-2008 à 14:53:04  profilanswer
 

+1 avec sébastien.
 
Tes données doivent être enregistrées d'une manière ou d'une autre, que ce soit dans un fichier ou dans une base de données.
 
De plus si tu as un réel besoin de Javascript (encore que j'en doute énormément), je te conseille de regarder du coté d'AJAX (j'ai fait un exemple parlant ici)


---------------
Directeur Technique (CTO)
n°1767884
Sebastien
Posté le 01-08-2008 à 15:20:36  profilanswer
 

katikat a écrit :

C'est vrai, c'etait juste un exemple,

Code :
  1. Seb, pour placer le code sous un bouton je dois la déclarer comme une fonction que j'appelle ensuite sur le onClick. Je déclare quelles variable alors pour afficher les numéro???


Ton script plus haut crée un fichier pour les clics de la journée et stocke les autres journées dans un autre fichier??? Je voudrais pouvoir afficher les résultats.


 
Oui au final tu auras autant de fichiers que de journées actives et il te sera simple de retrouver voir combien de clics ont été fait par jour

n°1769443
katikat
j'adOôôôre les SushiS...
Posté le 05-08-2008 à 12:50:00  profilanswer
 

La 1ere étape de mon code est réussie. Merci sebastien tu m'as bien aidée avec ton script, que j'ai étoffé un peu pour afficher ce que je souhaitais  

Code :
  1. <?php
  2. function Incremente(){
  3.     $file = date("Ymd" ).'.txt';
  4.     $f = fopen($file, 'a+');
  5.     $clic = max(1, fgets($f, 4096));
  6.     echo date("Ymd" ).$clic;
  7.     $f = fopen($file, 'w+');
  8.     fwrite($f, ++$clic);
  9.     fclose($f);
  10. }
  11. $num=Incremente();
  12. echo "<form onsubmit='return Incremente()' method='post' action='Counter1.php'>
  13.    <input type='submit' name='onglet' value='Nouveau numéro?'></form>";
  14. echo "<b>$num</b>";
  15. ?>


 
Maintenant,  la deuxième étape consiste à réinitialiser automatiquement ce numéro à 01 à chaque début de journée. Voir au passage l'affichage du num sur 3 chiffres soit "001". Je pense à une incrémentation automatique avec un timer. Mais comment faire ça, je cherche...

n°1769455
katikat
j'adOôôôre les SushiS...
Posté le 05-08-2008 à 13:08:24  profilanswer
 

J'ai zappée que ce numéro est inscrit dans un fichier au nom de la date daujourdhui, ainsi,
Chaque nouvelle journée, un nouveau fichier est crée en commençant par le numéro 1.
Alors je vais voir demain ce qui se passera, et peut-être je n'ai pas à m'embêter à réinitialiser ce num..
 
 

n°1769526
Sebastien
Posté le 05-08-2008 à 14:17:32  profilanswer
 

non si tu as repris mon script demain ca passera bien à 1, pour l'affichage à 001 tu dois pouvoir utiliser printf je pense

n°1769676
katikat
j'adOôôôre les SushiS...
Posté le 05-08-2008 à 17:15:41  profilanswer
 

Dans la fonction Incremente () j'ai modifié ceci

Code :
  1. function Incremente(){
  2.     $file = date("Ymd" ).'.txt';
  3.     $f = fopen($file, 'a+');
  4.     if($clic < 100){
  5.      $clic = sprintf('%03d',max(1, fgets($f, 4096)));
  6.      }
  7.      else{
  8.       $clic = max(1, fgets($f, 4096));
  9.      }
  10.     echo date("Ymd" ).$clic;
  11.     $f = fopen($file, 'w+');
  12.     fwrite($f, ++$clic);
  13.     fclose($f);
  14. }

Je veux qu'il me fasse cet affichage à 3chiffres jusqu'à 99 clics. Sauf que je ne depasse pas un certain nombre de chiffres (ça varie à une série de 10, puis 40, puis 5, etc) mais ça affiche bien les zéros et le nombre de clic se réinitialise aussi dans le fichier. Mais l'incrémentation ne se fait plus sur une série de chiffres successives.
J'ai manqué quelque chose?

n°1769891
Sebastien
Posté le 06-08-2008 à 00:56:25  profilanswer
 

le sprinft met le à la ligne 10 et pas à la 5
echo date("Ymd" ).sprintf('%03d',$clic);
 
PAs besoin de tester qu'il soit en dessous de 100 il le gère tout seul

n°1769946
katikat
j'adOôôôre les SushiS...
Posté le 06-08-2008 à 09:34:42  profilanswer
 

J'ai modifié la l.100 comme tu le proposes mais ça fait pareil. Par contre j'ai lancé le code à partir d'un autre poste et il n'y a pas de problème, ça marche. Donc à mon avis c'est soit mon navigateur, soit mon poste carrément. En tout cas je te suis très reconnaissante d'avoir pris la peine de m'aider. Bonne journée et encore merciiiii.

n°1769947
katikat
j'adOôôôre les SushiS...
Posté le 06-08-2008 à 09:35:06  profilanswer
 

l.10 sorry

n°1769964
katikat
j'adOôôôre les SushiS...
Posté le 06-08-2008 à 09:51:33  profilanswer
 

Une dernière chose, à chaque rechargement de ma page le numéro s'incrémente de 1. Je préfèrerais que le num affiché soit le dernier appelé par le bouton. A quel moment dans le code est-ce geré please?

n°1769970
Sebastien
Posté le 06-08-2008 à 09:58:50  profilanswer
 

c'est $num=Incremente(); qui te l'incremente.
Faudrait qu'il ne soit lancé que si le bouton a été appuyé

n°1769977
Sebastien
Posté le 06-08-2008 à 10:10:56  profilanswer
 

Code :
  1. <?php
  2. function Incremente(){
  3.     $file = date("Ymd" ).'.txt';
  4.     $f = fopen($file, 'a+');
  5.     $clic = max(1, fgets($f, 4096));
  6.     $val = date("Ymd" ).$clic;
  7.     $f = fopen($file, 'w+');
  8.     fwrite($f, ++$clic);
  9.     fclose($f);
  10.     return $val;
  11. }
  12. if( $_POST['click'] == 'ok' ) {
  13.     $num=Incremente();   
  14.     }
  15. echo "<form method='post' action='Counter1.php'>
  16. <br /><input type='submit' name='onglet' value='Nouveau numéro?'>
  17. <br /><input type=hidden name=click value='ok'>";
  18. echo "<b>$num</b>";
  19. echo '</form>';
  20. ?>

n°1770040
katikat
j'adOôôôre les SushiS...
Posté le 06-08-2008 à 10:52:25  profilanswer
 

Merci c'est cool ça fonctionne comme je le souhaite. Tu m'as rendu un grand service, mille fois merciiiii. Et ce forum est super.

mood
Publicité
Posté le   profilanswer
 


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

  [RESOLU]Petite appli php ou javascript

 

Sujets relatifs
[RESOLU] VBA variable differente en fonction du bouton clicke[Résolu]Retour à la ligne dans cellule composante pear Spreadsheet
[Js][coldfusion] recupération de tableau javascript.[C] conversion fichier binaire Big-Little Endian [RESOLU]
[RESOLU]Installation extension GD[resolu] List et explosion de la conso mémoire
[Résolu]Probleme Surlignement ligne avec Javascript[Résolu] problème background-repeat
[PHP/HTML] récupérer valeur PHP depuis javascript 
Plus de sujets relatifs à : [RESOLU]Petite appli php ou javascript


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