Envoi automatique sans submit via php

Bonjour,

Alors vraiment besoin d'aide car je rame !! svp

Ci joint vous trouvez la synthaxe de mon script qui permet que lorsque un utilisateur accepte d’être localiser via sont navigateur les champs du formulaire se remplisse automatiquement.

<!doctype html> 
<html lang="fr"> 
<head> 
<meta charset="uth-8"> 
<title>HTML5 : Géolocalisation</title> 
</head> 
<body> 

 
<script> 
function maPosition(position) { 

document.getElementById('latitude').value=position.coords.latitude  ;
document.getElementById('longitude').value=position.coords.longitude  ;
document.getElementById('altitude').value=position.coords.altitude  ;
} 
if(navigator.geolocation) 
navigator.geolocation.getCurrentPosition(maPosition); 
</script>

<form name="form1" method="post" action="sendmail.php">
<input type="text"  name="latitude" id="latitude"> 
<input type="text"  name="longitude" id="longitude"> 
<input type="text"  name="altitude" id="altitude"> 
<input type="submit" name="envoi" id="envoi" value="Envoyer">
</form>

    <?php
if( isset($_POST['envoi']) ) 
{
echo $_POST['latitude'];
echo  $_POST['longitude'];
echo  $_POST['altitude'];
}

?>
</body> 
</html> 


Ensuite lorsqu'il clic sur "envoyer" le formulaire est envoyer vers une deuxième page "sendmail.php" avec un script php qui permet de m'envoyer les données automatiquement par mail. Et ensuite l'utilisateur est redirigé vers une autre page automatiquement

Voici la synthaxe "sendmail.php" :


<?php
$TO = "mon-adresse@mail.com";

$h = "From: " . $TO;

$message = "Geolocaliser ok";

while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location: http://www.lien-de-redirection.com");

?>



Maintenant tout fonctionne sauf que je voudrai supprimer la fonction submit pour que le formulaire soit envoyer automatiquement lorsque le formulaire est rempli

((sachant que en fonction de la connexion internet la géolocalisation peut mettre du temps)) donc je ne voudrai pas que le formulaire soit envoyer vide.

Pourriez vous m'aider afin de trouver une solution a intégrer dans tout ça ??


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

  1. Bonjour

    Il suffit de demander à javascript de faire le submit quand le formulaire est rempli, c'est à dire à la fin de ta fonction maPosition :
    document.getElementById('monform').submit();

    sans oublier d'ajouter l'id 'monform' à ton formulaire pour que javascript sache le retrouver.
    https://www.w3schools.com/jsref/met_form_submit.asp
    1. Salut le père.

      Je visualiser ce que tu me dis mais je n'arrive pas a le mettre en application.

      Que dois-je mettre a la place de "monforme" ? quelle id ?

      Du coup je suprime la ligne :

       <input type="submit" name="envoi" id="envoi" value="Envoyer"> 


      et que faire de la ligne :

       if( isset($_POST['envoi']) )  


      et de la fonction :
       <form name="form1" method="post" action="sendmail.php"> 
  2. Je ne parviens pas à le faire. J'aurais vraiment besoin d'explication. Si vous voulez bien m'aider :( svp
    1. Que dois-je mettre a la place de "monforme" ?
      Je n'ai jamais dit de mettre quelque chose à la place de "monforme".

      La ligne if( isset($_POST['envoi']) ) et tout le php dans ton formulaire ne servaient à rien, tu peux les supprimer.

      quelle id ?
      J'ai écrit : l'id 'monform'. C'est grâce à cet id que getElementById('monform') va retrouver le formulaire. Il faut le mettre dans la balise form, comme les autres id que tu as mis dans tes input pour identifier les champs latitude, longitude, etc
      1. Ça marche à merveille :) merci beaucoup