[RESOLU]Petite appli php ou javascript

Petite appli php ou javascript [RESOLU] - PHP - Programmation

Marsh Posté le 31-07-2008 à 14:32:50    

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
Reply

Marsh Posté le 31-07-2008 à 14:32:50   

Reply

Marsh Posté le 31-07-2008 à 15:39:18    

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()

Reply

Marsh Posté le 31-07-2008 à 15:53:45    

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.
 
 

Reply

Marsh Posté le 31-07-2008 à 16:16:07    

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

Reply

Marsh Posté le 31-07-2008 à 16:36:55    

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
Reply

Marsh Posté le 31-07-2008 à 16:39:00    

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!!
 

Reply

Marsh Posté le 31-07-2008 à 16:43:21    

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

Reply

Marsh Posté le 31-07-2008 à 16:51:07    

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...)

Reply

Marsh Posté le 31-07-2008 à 16:58:57    

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'.

Reply

Marsh Posté le 31-07-2008 à 17:02:23    

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. ?>

Reply

Marsh Posté le 31-07-2008 à 17:02:23   

Reply

Marsh Posté le 31-07-2008 à 19:10:11    

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)
Reply

Marsh Posté le 31-07-2008 à 19:22:37    

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

Reply

Marsh Posté le 01-08-2008 à 10:43:10    

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???

Reply

Marsh Posté le 01-08-2008 à 14:19:47    

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!!!

Reply

Marsh Posté le 01-08-2008 à 14:23:46    

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.

Reply

Marsh Posté le 01-08-2008 à 14:48:02    

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.

Reply

Marsh Posté le 01-08-2008 à 14:53:04    

+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)
Reply

Marsh Posté le 01-08-2008 à 15:20:36    

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

Reply

Marsh Posté le 05-08-2008 à 12:50:00    

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...

Reply

Marsh Posté le 05-08-2008 à 13:08:24    

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..
 
 

Reply

Marsh Posté le 05-08-2008 à 14:17:32    

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

Reply

Marsh Posté le 05-08-2008 à 17:15:41    

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?

Reply

Marsh Posté le 06-08-2008 à 00:56:25    

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

Reply

Marsh Posté le 06-08-2008 à 09:34:42    

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.

Reply

Marsh Posté le 06-08-2008 à 09:35:06    

l.10 sorry

Reply

Marsh Posté le 06-08-2008 à 09:51:33    

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?

Reply

Marsh Posté le 06-08-2008 à 09:58:50    

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

Reply

Marsh Posté le 06-08-2008 à 10:10:56    

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. ?>

Reply

Marsh Posté le 06-08-2008 à 10:52:25    

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.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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