Compteur de caractères pour devis en ligne

Eléphanteau du PHP | 16 Messages

27 août 2009, 13:35

Salut à tous,

je cherche à faire une page pour un site de correction en ligne et je tourne pas mal en rond (bon, je suis carrément bloqué, ok :mrgreen: ).

Il s'agit de la partie "devis"...en gros, le client copie son texte dans une fenêtre et il obtient le nombre de caractères de son texte et surtout combien ça lui coute.

J'ai pas mal cherché un peu partout sans succès...j'arrive à moitié à compter les caractères mais pas vraiment à mettre ça en relation avec un prix.

Bref, si une âme charitable pouvait m'aider, ça m'irait pas mal :wink:

Je précise que je tout le site a été fait avec un soft wysiwyg, autrement dit, je capte pas derche en PHP et je rappelle qu'on est dans la section débutant...bref, si vous pouviez me parler comme à un enfant de 8/9 ans, ça m'irait bien :mrgreen: :mrgreen:

Merciiii :D

PS: j'ai trouvé un exemple parfait chez la concurrence mais je ne sais pas si j'ai le droit de mettre cette page en lien...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 août 2009, 13:45

Pour compter le nombre de caractères d'une chaîne regarde cette fonction : strlen().

Une fois que tu auras le nombre de caractères, tu utilises des conditions pour le prix (si le prix a déjà été établi) :

si nbcarac est entre 0 et 10 alors prix = 5€ ...etc qui se traduit par :
$car = strlen($chaine);
if($car>=0 && $car<=10)
$prix=5;
elseif(...)
Tu peux aussi utiliser le switch.

Mammouth du PHP | 991 Messages

27 août 2009, 13:47

en php regarde du coté de la fonction strlen ... et oui va falloir mettre les mains dans le camboui ;)

ce qui te donnerai quelques chose comme :
$text  = 'Je suis le texte à compter';
$longueur  = strlen($text);
$prix_unitaire = '10'; //10€ la lettre (pour l'exemple)
$prix = $longeur * $prix unitaire;
echo 'il vous coutera : '.$prix.' € pour le texte envoyer';
Donc montre nous ton code , pour voir comment l'intégrer.

Bye hawk
Edit : GrilleD
DevOps, Symfony4, Hoa

Eléphant du PHP | 369 Messages

27 août 2009, 14:21

Salut,
Salut à tous,
je cherche à faire une page pour un site de correction en ligne et je tourne pas mal en rond (bon, je suis carrément bloqué, ok :mrgreen: ).
Il s'agit de la partie "devis"...en gros, le client copie son texte dans une fenêtre et il obtient le nombre de caractères de son texte et surtout combien ça lui coute.
Dans une fenêtre? Hum, s'il s'agit d'une vérifiaction sans appel au serveur tu devras utiliser Javascript.
Ceci dit "Ajax" peut aussi le faire mais je doute que tu parles de cela.

Sinon, s'il s'agit (par exemple) d'un form il te suffit de récupérer la variable via $_POST ou $_GET, de
cibler la variable concernée puis d'effectuer le lancement de la function de comptage. l'exemple donné
ci-bas est basique et basé sur un forum de type POST:
if (isset($_POST[text_client]))
{
   $nombre = strllen($_POST[text_client]);
}
J'ai pas mal cherché un peu partout sans succès...j'arrive à moitié à compter les caractères mais pas vraiment à mettre ça en relation avec un prix. Bref, si une âme charitable pouvait m'aider, ça m'irait pas mal :wink:
La... J'avoue, honte à moi, que je pipe plus vraiment lol Ca reste suputation donc pas tapper ;)
   $pattern = "#([0-9*?]+)#iUsm";
   $test     = "Il est a 3,54 et des ...";
   if (preg_match_all($pattern, $test, $match) > 0)
   {
      // Tu récupère le chiffrage indiqué dans le tableau $match
      // Vérifie ainsi
      print_r($match);
   }
   else echo "Rien a été trouvé !";
?>
Je précise que je tout le site a été fait avec un soft [*]wysiwyg, autrement dit, je capte pas derche en PHP et je rappelle qu'on est dans la section débutant...bref, si vous pouviez me parler comme à un [**]enfant de 8/9 ans, ça m'irait bien :mrgreen: :mrgreen:
Merciiii :D
PS: j'ai trouvé un exemple parfait chez la concurrence mais je ne sais pas si j'ai le droit de mettre cette page en lien...
[/quote]
[*] Perso j'ai ~9 ans d'age mental, ca devrait aider ;)
[**] Abomination : Edit.com power ;)

Donc, après mes commentaires idiots l'explication du script:

$pattern est la chaine qui sert à checher dans le preg_match ce que tu veux y trouver.
$test est une chaine exemple tu y mets ce que tu veux... ('fin ce qui vient du client)
preg_match_all est la fonction de recherche php (il y en à d'autres) elle renvoit le nombre d'éléments trouvés
print_r liste le tableau (en production ne pas l'y mettre

voili, voilou... Espérant t'avoir aisé mais j'ai bien peur que non.

Ce lien devrait t'aider plus que je ne l'ai fais je pense: http://www.manuelphp.com/php/ref.pcre.php

@+ bon code ;)

PS: Fais "PT" le lien lol plus sèrieux je doute que passer un lien soit méchant... S'il suit, s'entend, la charte du fofo ;)

EDIT1: Encore grillé pfff, pas d'jeu les gars lol

EDIT2: C'est une fonction Javascript qui s'exécute lorsqu'on utilise le textarea afin de calculer
le nombre de caractères et le prix. l'algo semble facile à reproduire ceci dit ce post devrait
être transféré dans la section JS ;)
Modifié en dernier par FuZZyLine le 27 août 2009, 14:59, modifié 2 fois.

Eléphanteau du PHP | 16 Messages

27 août 2009, 14:39

merci à tous de vous pencher sur mon cas...

bon, là, en première lecture, j'y capte que dalle mais je vais essayer de comprendre #-o...ce sera plus gratifiant!

allez, le lien:

http://www.lereviseur.com/21devis1.html

:-* :-*

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 août 2009, 15:00

FuZZyLine a édité son post mais ça passe hélàs souvent inaperçu.

Tu dois donc comme dit, te diriger vers le javascript. Si tu regardes le code source tu auras un aperçu de ce que tu dois faire.

Eléphanteau du PHP | 16 Messages

27 août 2009, 15:13

Ouais, c'est bien ce que je craignais, vous croyez que je m'y connais...ou alors les gamins de 9 ans que vous fréquentez sont des petits génies :mrgreen: :mrgreen: :mrgreen:

Bref, j'avoue tout mélanger entre html, php, javascript, etc... :roll:

Pour le code source du lien que j'ai filé, j'arrive pas à le chopper...enfin, je connais pas 36 méthodes, mais à ma manière (clique droit puis code source de la mache sous firefox), ça marche pas! :non: :non:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 août 2009, 15:20

heu...si ça marche je viens de le faire :lol:

Eléphanteau du PHP | 16 Messages

27 août 2009, 15:35

heu...si ça marche je viens de le faire :lol:
gné :? :? :?

je clique droit sur cette page, rien ne se passe, rien ne s'ouvre...je fais ça ailleurs, on me propose les trucs classique (copier, coller, ..., code source de la page) mais sur cette page, que dalle, walou!

Testé sur deux PC différents, sous IE et FF :?: :?: :?: :?:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 août 2009, 15:36

oups autant pour moi, j'aurais juré avoir fait clic droit :roll:

fait alors affichage-> code source

Eléphant du PHP | 369 Messages

27 août 2009, 15:41

Re,
Ouais, c'est bien ce que je craignais, vous croyez que je m'y connais...ou alors les gamins de 9 ans
que vous fréquentez sont des petits génies :mrgreen: :mrgreen: :mrgreen:
Bref, j'avoue tout mélanger entre html, php, javascript, etc... :roll:
Pour le code source du lien que j'ai filé, j'arrive pas à le chopper...enfin, je connais pas 36 méthodes, mais à ma manière (clique droit puis code source de la mache sous firefox), ça marche pas! :non: :non:
Le "Môssieur" a posé un anti-click-droit... mais tu peux quand même chopper le script.
ceci dit:

[MORALE = ON]
Piquer un script est facile mais demande à tout hazard si tu peux le faire c'est plus cool ;)
[MORALE = OFF]

Sinon le code lui-même est adaptable assez simplement. Je t'assure que c'est pas trop "hardus".
D'autre part il est pas très "zoli" ca ressemble un peu à de la soupe de code lol

Point de départ de la recherche:
Le formulaire (élément TEXTAREA) et tu véras la fonction de lancement qui est limit()
ensuite, sans rentrer dans les détails, l'info du nombre de caractères et prix sont enregistrés et
intégrés via document.???.textHTML = xxx;

Ca parait un brin compliqué, peut-être, mais je t'assure qu'il n'en est rien.
JS utilise les objects et les indique ainsi: Pere.enfant1.enfant2.enfant3 etc...

bon code @+ ;)

PS: Je shématise afin d'être compréhenssible, désolé si ce n'est le cas.

Eléphanteau du PHP | 16 Messages

27 août 2009, 16:00

Bon, effectivement, j'ai pu chopper le script...je vais essayer de le comprendre et de faire plus qu'un copier/coller/voler!

:agenouille: :agenouille: :agenouille: :agenouille:

Eléphant du PHP | 199 Messages

27 août 2009, 16:06

Après 30000 caractères, ton site a beugué et la textarea a disparu.
C'est normal?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 août 2009, 17:08

Le plus important dans le code que tu veux est le suivant (c'est du javascript + html):
<html>
<script>
function limit ()
{
  var nb = document.frm.txtrea.value.replace (/[- \n\r]/g,"")
  document.frm.nbr.value = nb.length
  maxi = 200000//nombre maximum de carractères autorisé
  cmb = eval((nb.length*0.002+3)*100)
  cmb2 = Math.round (cmb)/100

  if (nb == "") {document.frm.nbcalc.value = "0"}
  else {document.frm.nbcalc.value = ""+cmb2+""}

  if (nb.length > maxi) {
     document.frm.txtrea.value = nb.substring (0,maxi)
     alert ('pas plus de '+maxi+' carractères !')
  }

  setTimeout('limit()',10)
}
</script>
<body>
<form name="frm">
<textarea name="txtrea" rows="20" cols="60" onFocus='limit()' onChange="limit()"></textarea><br>
<font face="arial" size="3" color="#927B55">Caract&#232;res</font>&#160;&#160;<input name="nbr" type="text" value="0" size="5" readonly>&#160;&#160;&#160;
<font face="arial" size="3" color="#927B55">Prix</font>&#160;&#160;<input name="nbcalc" type="text" value="0" size="5" readonly>
&#160;<font face="arial" size="3" color="#927B55">Euros</font>
</form>
</body>
</html>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

ViPHP
AB
ViPHP | 5818 Messages

27 août 2009, 22:15

Note : Comme je suppose que tu vas contrôler ce nombre ensuite en php, fait attention à l'encodage de ta page. Si c'est ISO ... machin, la fonction strlen suffira, par contre si tu travailles en utf-8 pour un site portable avec des langues étrangères regarde du côté de mb_strlen($machaine,'utf-8') .