Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème formulaire avec boucle et jquery

    7 décembre 2017 à 12:27:46

    bonjour à tous ,

    voila j'ai un formulaire de contact dans une boucle while ( il peut donc y avoir plusieurs contact ) .

    se formulaire est validé automatiquement via jquery des que l'on change un champ du formulaire .

    le problème que je rencontre c'est qu'il ne prend en compte les changements que sur le premier résultat , si j'essaie de modifier mon deuxième contact , cela ne fonctionne pas .

    j'ai donc essayer de rajouter un $i sur la class de l'input qui correspond a l'idcontact pour que la fonction jquery en tienne compte, mais sans succès

    voila le code et merci pour votre aide , sachant que je débute en js , alors soyez indulgent

     <div id="bloc_infos_client_1">
          <label>Information g&eacute;n&eacute;rale client</label></br></br>
           <div id="bloc_infos">
          <table border="1" cellpadding="2" width="98%">
       <tr>
          <th width="1%">Type</th>
          <th width="1%">Civilité</th>
          <th width="2%">Nom</th>
          <th width="1%">Prénom</th>
          <th width="1%">Téléphone</th>
          <th width="1%">Portable</th>
    	  <th width="1%">Fax</th>
          <th width="5%">Mail</th>
       </tr>
         <?php 
    	$resultats=$pdo->query("SELECT * FROM Contact,ContactType,ContactCivilite WHERE IdRepertoire = '".$result->IdRepertoire."' AND Contact.IdContactType = ContactType.IdContactType  AND Contact.IdContactCivilite = ContactCivilite.IdContactCivilite ORDER BY Contact.IdContactType");
    	$resultats->setFetchMode(PDO::FETCH_OBJ);
    	while( $resultcon = $resultats->fetch() )
    	{
    		?>
    	  
    	  <tr>
          
           <script type="text/javascript">
         $(document).ready(function() {
    	$('select[class="IdContactType"]').on('change', function() {
        	$.post('valid_IdContactType.php?IdContact=<?php echo ($resultcon->IdContact);?>', {
                'IdContactType' : $('select[name="IdContactType"]').val()
    			
    			
    			
            }, function(response) { // onSuccess
                console.log(response);
            }, 'json');
        });
    });
    	 </script>
    	  <td><select  class="IdContactType" name="IdContactType">
    	  <option selected="selected"><?php echo ($resultcon->ContactType);?></option></br>
          <?php
    	  $resultat=$pdo->query("SELECT * FROM ContactType WHERE IdContactType NOT LIKE '".$resultcon->IdContactType."'");
    	  $resultat->setFetchMode(PDO::FETCH_OBJ);
    	  while( $resultct = $resultat->fetch() )
    	  {
    	  echo '<option value="'.$resultct->IdContactType.'">'.$resultct->ContactType.'</option></br>';
          }
          ?>
    	  </select>
    	  </td>
          <script type="text/javascript">
         $(document).ready(function() {
    	$('select[class="IdContactCivilite"]').on('change', function() {
        	$.post('valid_IdContactCivilite.php?IdRepertoire=<?php echo ($result->IdRepertoire);?>&IdContact=<?php echo ($resultcon->IdContact);?>', {
                'IdContactCivilite' : $('select[name="IdContactCivilite"]').val()
    			
    			
    			
            }, function(response) { // onSuccess
                console.log(response);
            }, 'json');
        });
    });
    	 </script>
    	  <td><select  class="IdContactCivilite" name="IdContactCivilite">
    	  <option selected="selected"><?php echo ($resultcon->Civilite);?></option></br>
          <?php
    	  
    	  $resultat=$pdo->query("SELECT * FROM ContactCivilite WHERE IdContactCivilite NOT LIKE '".$resultcon->IdContactCivilite."'");
    	  $resultat->setFetchMode(PDO::FETCH_OBJ);
    	  while( $resultCC = $resultat->fetch() )
    	  {
    		  print_r($resultCC->IdContactCivilite);
    	  echo '<option value="'.$resultCC->IdContactCivilite.'">'.$resultCC->Civilite.'</option></br>';
          }
          ?>
    	  </select>
    	  </td>
          <?php
    	 $i = ($resultcon->IdContact);
    	 ?>
         <script type="text/javascript">
         $(document).ready(function() {
    	$('input[class="info_gen_client-<?php echo $i;?>"]').on('blur', function() {
        	$.post('valid_info_gen_client.php?IdContact=<?php echo $i;?>', {
    			'IdContact' : $('input[name="IdContact"]').val(),
                'nom' : $('input[name="nom"]').val(),
    			'prenom' : $('input[name="prenom"]').val(),
    			'tel' : $('input[name="tel"]').val(),
    			'Portable' : $('input[name="Portable"]').val(),
    			'Fax' : $('input[name="Fax"]').val(),
    			'email' : $('input[name="email"]').val()
    			
    			
            }, function(response) { // onSuccess
                console.log(response);
            }, 'json');
        });
    });
    	 </script>
         
          <input style="width:98%;" type="hidden" class="info_gen_client-<?php echo $i;?>" name="IdContact" value="<?php echo ($resultcon->IdContact);?>"/>
          <td><input style="width:98%;" type="text" class="info_gen_client-<?php echo $i;?>" name="nom" value="<?php echo ($resultcon->Nom);?>"/></td>
          <td><input style="width:98%;" type="text" class="info_gen_client-<?php echo $i;?>" name="prenom" value="<?php echo ($resultcon->Prenom);?>"/></td>
          <td><input style="width:98%;" type="text" class="info_gen_client-<?php echo $i;?>" name="tel" value="<?php echo ($resultcon->tel);?>"/></td>
          <td><input style="width:98%;" type="text" class="info_gen_client-<?php echo $i;?>" name="Portable" value="<?php echo ($resultcon->Portable);?>"/></td>
          <td><input style="width:98%;" type="text" class="info_gen_client-<?php echo $i;?>" name="Fax" value="<?php echo ($resultcon->Fax);?>"/></td>
    	  <td><a href="mailto:<?php echo ($resultcon->email);?>"><input style="width:98%;" type="text" class="info_gen_client-<?php echo ($resultcon->IdContact);?>" name="email" value="<?php echo ($resultcon->email);?>"/></a></td>
    	  </tr>
    	<?php
    	}
    	?>
        
       </table>
       </div>



    -
    Edité par laurentgrosges 7 décembre 2017 à 12:32:28

    • Partager sur Facebook
    • Partager sur Twitter
      7 décembre 2017 à 15:03:13

      J'arrive pas à lire correctement ton code. Trop mélangé.

      Est-ce que tu peux nous donné seulement un truc plus léger pour comprendre sans toutes tes requêtes etc?

      Soit dit en passant, mais là je pense que c'est parce que tu dois être nouveau dans le développement, il faut essayé de dissocié un maximum chaque langage. En 100 ligne de code tu mélanges beaucoup de HTML, JAVASCRIPT, PHP et SQL.

      Essaye de faire tes requêtes en amont et ensuite de l'utiliser brièvement dans ton html, exemple:

      <?php
      $query = $pdo->query("SELECT * FROM Contact,ContactType,ContactCivilite WHERE IdRepertoire = '".$result->IdRepertoire."' AND Contact.IdContactType = ContactType.IdContactType  AND Contact.IdContactCivilite = ContactCivilite.IdContactCivilite ORDER BY Contact.IdContactType");
      $query->setFetchMode(PDO::FETCH_OBJ);
      
      $result = $query->fetchAll();
      ?>
      
      <ul>
          <?php foreach ($result as $row): ?>
          
          <li><?= $row->IdContact ?></li>
      
          <?php endforeach ?>
      </ul>
      



      -
      Edité par skuti 7 décembre 2017 à 15:03:29

      • Partager sur Facebook
      • Partager sur Twitter
      $2b||!$2b
        7 décembre 2017 à 16:22:10

        salut,

        lis le code source que tu fais générer à ton script PHP, tu verras un peu l'horreur (Ctrl+U)

        j'en rajoute une couche au conseil de Skuti, vire complétement ton JS de ton PHP. Est-ce que tu aurais l'idée de mettre une balise style dans une boucle PHP pour appliquer un style à chaque élément élément HTML de la boucle ? Non ? Alors avec ton script JS c'est la même chose.

        • Partager sur Facebook
        • Partager sur Twitter

        problème formulaire avec boucle et jquery

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown