Partage
  • Partager sur Facebook
  • Partager sur Twitter

Validation de formulaire SANS bouton submit

Sujet résolu
    16 janvier 2025 à 18:48:28

    Bonsoir à tous.

    J'ai sur mon site une recherche en autocompletion pour retrouver des élèves sur des photos de classe.
    Il y a une partie en php/mysql et une autre en javascript

    Ca se présente de cette manière : 

    Le formulaire :

      <div>
            <form action="afficher-par-identite.php" method="POST">
              <div>
                <input type="text" name="search" id="search" class="rechercheinp" placeholder="Entrez au moins 2 lettres pour votre recherche, puis cliquez sur le nom souhaité ..." autocomplete="off" required>
                <div>
                  <input type="submit" name="submit" style="float: right" value="Chercher">
                </div>
              </div>
            </form>
          <div>
            <div id="show-list" style="float: left">
              <!-- Here autocomplete list will be display -->
            </div>
          </div>
      </div>

    Ensuite le fichier JS appelé est comme ceci : 

    $(document).ready(function () {
      // Send Search Text to the server
      $("#search").keyup(function () {
        let searchText = $(this).val();
        if (searchText.length > 1) {	// Minimum de lettres à entrer. Ici 2 lettres
          $.ajax({
            url: "action.php",
    		rules: {
    		  minLength: 2,
    		},
            method: "post",
            data: {
              query: searchText,
            },
            success: function (response) {
              $("#show-list").html(response);
            },
          });
        } else {
          $("#show-list").html("");
        }
      });
      // Set searched text in input field on click of search button
      $(document).on("click", "a", function () {
        $("#search").val($(this).text());
        $("#show-list").html("");
      });
    });

    Dans ce script, il est fait appel au fichier action.php que voici : 

    <?php
    	header("Content-type: text/html; charset=utf-8");
    	require_once 'config.php';
    
    	if (isset($_POST['query'])) {
    		$inpText = $_POST['query'];
    		$sql = "SELECT t1.id_photo, t1.nom_photo, t1.nom_clair, t1.etat, t2.id_identite, t2.nom, t2.prenom, t2.surnom, t2.id_photo, t2.numero FROM photo_photo AS t1, photo_identite AS t2 WHERE t1.etat = 'O' AND t1.id_photo = t2.id_photo AND t2.nom LIKE :ident GROUP BY t2.nom, t2.prenom";
    		$stmt = $conn->prepare($sql);
    		$stmt->execute(['ident' => '%' . $inpText . '%']);
    		$result = $stmt->fetchAll();
    
    	if ($result) {
    		foreach ($result as $row) {
    			echo '<a href="#"><div class="rechercheid">' . ucfirst($row['prenom']) . ' ' . ucfirst($row['nom']) .'</div></a>';
    		}
    	} else {
    		echo '<p>Aucune correspondance</p>';
    		}
    	}
    ?>

    Action.php me donne une liste de noms sous le formulaire.


    Tout fonctionne bien, mais c'est le comportement du programme que j'aimerai modifier.

    Si je recherche par exemple Toto Durand, je le trouve, donc je clique dessus, l'identité se met dans le champ input text et je valide par Chercher.
    Ca c'est le fonctionnement actuel.

    Ce que j'aurai souhaité, c'est qu'en cliquant sur l'identité de la personne, ça m'amène directement sur le programme afficher-par-identite avec en parametres l'identite de la personne, et ceci sans avoir à cliquer sur le bouton chercher. 

    Une sorte de onclick => va sur le programme... 

    J'ai posté ici car je ne sais pas si la solution vient de javascript justement.

    Merci par avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2025 à 16:53:48

      Salut

      Si j'ai bien compris, il pourrait suffire que ton lien (ligne 14 du code de action.php) ne soit pas #, mais afficher-par-identite.php?identite=…. Cela ne relève plus de la soumission du formulaire.

      Autre possibilité, si soumettre ce formulaire est important : transformer cette même ligne pour que ce ne soit non pas un lien, mais un bouton de soumission du formulaire, bouton dont l'attribut name correspondrait à identite dans mon exemple précédent. Attention : comme la liste est hors du formulaire, il faut aussi ajouter un attribut form au bouton, attribut dont la valeur doit être l'ID du formulaire, qu'il faut donc lui ajouter.

      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2025 à 21:12:35

        Hello !

        Merci pour ta réponse. Effectivement, en modifiant la ligne 14 de action.php en remplaçant le # par le programme avec les paramètres, ça fonctionne parfaitement.

        Je m'en veux de ne pas avoir pensé à ça tout de suite. C'était tout simple.

        Merci encore.

        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2025 à 23:16:07

          Bonjour,

          Sujet résolu

          Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Validation de formulaire SANS bouton submit

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown