IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

[propel]Compter TextArea d'un formulaire


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut [propel]Compter TextArea d'un formulaire
    Bonjour,

    Je suis actuellement en train de coder une application d'envoi de SMS basé qur une API OVH.

    J'ai besoin de compter ma zone Textarea qui contient mon message et de d' incrémenter une variable de 1 tous les 160 caractères, puis de passer la variables décrémenter à la fonction SendSms.

    Je n'ai absolument aucune idée de comment je peut faire -__-'.

    Voila les morceaux de code :

    Le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    class SipSmsForm extends BaseSipSmsForm
    {
      public function configure()
      {
    	unset ($this['user_id'],$this['id'],$this['date_envoi']);
     
    		$this->setWidgets(array(
    		  "Num_envoi" => new sfWidgetFormInputText(),
    		  "Text_sms"=> new sfWidgetFormTextarea(),
    		  ));
     
    	$this->widgetSchema->setHelp('Num_envoi','Le numéro de téléphone doit être au format +33615533292');
    	$this->widgetSchema->setHelp('Text_sms',"Le sms ne doit pas exceder 1600 caractères.");
     
    	$this->widgetSchema->setLabels(array(
    		  "Num_envoi" => 'Destinataire',
    		  "Text_sms"=> 'Message',
    			));
     
    	$this->widgetSchema->setNameFormat('sipSms[%s]');	
     
    		$this->setValidators(array(
    		  	"Num_envoi" => new sfValidatorRegex(array('required'=>true,'pattern'=>"/^\+33[1-68]([-. ]?[0-9]{2}){4}$/"),
    				array('invalid'=>'La Forme du numéro est incorrecte.(+33615533292)',
    					  'required'=>'Le numéro de téléphone est requis',
    					  )),
    			"Text_sms"=>new sfValidatorString(array('required'=>true,'min_length'=>1,'max_length'=>1600),
    				array('min_length'=>'Le message est trop court',
    					  'max_length'=>'Le message est trop long',
    					  'required'=>'Un message est requis',
    					  )),		  
    				));
      }
    }
    le templates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    <?php use_stylesheets_for_form($form) ?>
    <?php use_javascripts_for_form($form) ?>
    <div id="sous_contenu_bleu">
    <form action="<?php echo url_for('account/sendsms') ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
    		<div align="center">
    			<table width="95%" cellspacing="0" cellpadding="2">
    				<?php if ($form->hasGlobalErrors()){?>			
    						<tr>
    							<td colspan="2" class="tabcel2">
    								<?php Foreach ($form->getGlobalErrors() as $name=>$error){?>
    								<h3 align="center"><strong><?php echo $error." ".$name ?></strong></h3>
    								<?php } ?>	
    							</td>
    						</tr>
    					<?php } ?>	
    				<tr>
    					<td colspan="2" class="tabcel2">
    						<h3 align="center"><strong>Votre Message</strong></h3>
    					</td>
    				</tr>
    				<tr>
    					<td width="28%" class="tabcel1">
    						<div align="right">
    							<?php echo $form['Num_envoi']->renderLabel();?>
    							<br/><?php echo $form['Num_envoi']->renderHelp();?>
    						</div>	
    					</td>
    					<td width="72%" class="tabcel1">
    						<?php echo $form['Num_envoi']->render();?><?php echo $form['Num_envoi']->getError();?>
    					</td>
    				</tr>
    				<tr>
    					<td width="28%" class="tabcel1">
    						<div align="right">
    							<?php echo $form['Text_sms']->renderLabel();?>
    							<br/><?php echo $form['Text_sms']->renderHelp();?>
    						</div>	
    					</td>
    					<td width="72%" class="tabcel1">
    						<?php echo $form['Text_sms']->render();?><?php echo $form['Text_sms']->getError();?>
    					</td>
    				</tr>
    				<?php echo $form['_csrf_token']->render()?>
    				<tr>
    					<td colspan="2" class="tabcel2">
    						<div align="center">
    							<input type="submit" value="Envoyer votre message" />
    						</div>
    					</td>
    				</tr>
     
    			</table>
    		</div>
    	<script type="text/javascript" src="functions.js"></script>
    	</form>
    </div>
    Si vous avez des pistes, ça m'aiderais grandement.

    Cordialement

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu veux faire ton comptage où ?

    A l'écran, alors c'est du javascript qu'il te faut.

    Pour gérer, facturer l'envoie, alors c'est dans le contrôleur qu'il faudra intervenir.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Je veux que mon utilisateurs voit combien de message il va envoyer ( 1 message tous les 160 caractère ), je me doute que c'est du javascript, mais je ne sais pas comment l'intégrer dans le formulaire symfony vu qu'il n'y a que des echo et pas de zone texte a proprement parlé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <td width="72%" class="tabcel1">
         <?php echo $form['Text_sms']->render();?>
         <?php echo$form['Text_sms']->getError();?>
    </td>
    .

    Et après passer cette valeur dans mon contrôleur -_-'.

  4. #4
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Problème en partie résolu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public function executeSendsms(sfWebRequest $request)
    	{
    		$this->forward404Unless($request->isMethod(sfRequest::POST));
    		$form = new SipSmsForm();
    		$this->sipline = SipLinePeer::getByUserId($this->getUser()->getId());
    		$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    		if ($form->isValid())
    		{
    			$Sipsms = $form->save();
    			$Sipsms->setDateEnvoi(date('Y-m-d'));
    			$Sipsms->setUserId($this->getUser()->getId());
    			$Sipsms->save();
                             // Je compte le nombre de caractères du champ text
    			$nbrChar = strlen($Sipsms->getTextSms());
    			// je peux compter toutes les tranches de 160 caractères, arrondi au supérieur avec ceil.
    			$tranches = ceil($nbrChar / 160);
    			try {
    			        envoi sms
    				} 
    			catch(SoapFault $fault) {
    				 echo $fault;
    				}
    			$this->redirect('account/Sms');
    		}
    		else
    		{
    			$this->form = $form;
    			$this->setTemplate('Infosms');
    		}
    	}	
    }
    Merci a Sybio de la Ferme du web ;-D.

    Si quelqu'un a une idée pour le javascript, je suis preneur !

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Pour le php, je veux bien, mais je ne vois pas trop ce que tu comptes faire de la variable $tranche qui est initialisée mais pas traitée.

    Pour mettre du javascript, le plus simple est de faire un fichier dans le genre :
    web/js/modules/nomDuModule/nomDeAction.js

    De le déclarer dans view.yml du module pour cette action.

    ensuite, il n'y a plus qu'à faire ton code javascript dans ce fichier, il sera chargé à chaque fois que l'action sera lancée.

    Pour plus de simplicité, déclare aussi l'utilisation de jquery.

Discussions similaires

  1. [JSP] Créer un fichier XML avec un textarea dans un formulaire.
    Par auxiliaire dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/08/2011, 17h31
  2. [AC-2010] compter enregistrement dans sous-formulaire
    Par jlv25 dans le forum IHM
    Réponses: 0
    Dernier message: 24/06/2011, 20h21
  3. [SP-2007] compter des résultat sur formulaire
    Par johanaquatique dans le forum SharePoint
    Réponses: 3
    Dernier message: 14/03/2011, 14h52
  4. vérifier textarea dans un formulaire
    Par xavioche77 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/03/2011, 18h04
  5. [MySQL] alimenter le textarea d'un formulaire
    Par Angelik dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/04/2010, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo