Affichage auto du nbr de jours dans un formulaire [Résolu]

Signaler
Messages postés
2686
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
27 juillet 2021
-
Messages postés
2686
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
27 juillet 2021
-
Bonjour !

Je suis un peu nul en PHP et j'ai réalisé un formulaire qui fonctionne très bien en "fusionnant" deux formulaires (1 pour l'envoi de message, et 1 pour un calendrier avec date début et date de fin).

Hélas, mon formulaire est incomplet et il me manque l'affichage automatique dans ce même formulaire du nbr de jour correspondant entre la date de début choisit et la date de fin...) Et là je bloque.

Si une bonne âme pouvait me dépanner ?

Le "calendrier" est dans un dossier 'calendrier' à la racine de mon site et fonctionne bien

Voici le code de mon formulaire qui fonctionne, mais sans le nbr de jours:

<?php

// On vérifie si la fonction ini_set() a été désactivée...
$desactive =  ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}

// Vérifier que le formulaire a été envoyé...
if (isset($_POST['envoi'])) {

// Définir l'indicateur d'erreur sur zéro...
$flag_erreur = 0;

//On commence une session pour enregistrer les variables du formulaire...

session_start();

$_SESSION['champ1'] = $_POST['champ1'];
//Contrôle du spam...
if (eregi("http",$_POST['champ1'])) {
$erreur_champ1 = "Pour raisons de sécurité, ce champ ne peut comporter les caractères  http ";
$flag_erreur  = 1;
}
if (eregi("\[url",$_POST['champ1'])) {
$erreur_champ1 =  "Pour raisons de sécurité, ce champ ne peut comporter les caractères  [url ";
$flag_erreur  = 1;
}
if (eregi("[style.css 
<!--

//<![CDATA[


function verifSelection() {


if (document.demoform.champ1.value == "") {
alert("Vous devez saisir un Nom !")
return false
} 

if (document.demoform.champ2.value == "") {
alert("Vous devez saisir un Prénom !")
return false
} 

if (document.demoform.champ3.value == "") {
alert("Vous devez saisir une Adresse !")
return false
} 

if (document.demoform.champ4.value == "") {
alert("Vous devez saisir un Code Postal !")
return false
} 

if (document.demoform.champ5.value == "") {
alert("Vous devez saisir une Ville !")
return false
} 

if (document.demoform.champ6.value == "") {
alert("Vous devez saisir un Pays !")
return false
} 

if (document.demoform.champ7.value == "") {
alert("Vous devez saisir un Téléphone !")
return false
} 

if (document.demoform.dc1.value == "") {
alert("Vous devez saisir une Date d\'Arrivée !")
return false
} 

if (document.demoform.dc2.value == "") {
alert("Vous devez saisir une Date de Départ !")
return false
} 

if (document.demoform.zone_email1.value == "") {
alert("Vous devez saisir un eMail valide !")
return false
}

invalidChars = " /:,;'"

for (i=0; i < invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.demoform.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.demoform.zone_email1.focus()
return false
}
}

atPos = document.demoform.zone_email1.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

if (document.demoform.zone_email1.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

periodPos = document.demoform.zone_email1.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

if (periodPos+3 > document.demoform.zone_email1.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

var chks = document.getElementsByName('case1[]');


nbrecases1 = chks.length

flag = 0

for (i = 0; i < nbrecases1 ; i++) {

if (chks[i].checked) {

flag = 1

}

}


if (flag == 0) {

alert("Veuillez confirmer la lecture des Conditions Générales de Vente !!!")
return false;
}

} // Fin de la fonction
//]]>
//-->
</script>

</head>

<form name="demoform" method="post" action="<?=$_SERVER['PHP_SELF']?>" onsubmit="return verifSelection()">
<?php
if ($erreur_champ1) {
  echo(stripslashes($erreur_champ1));
  } else {
if ($erreur_champ2) {
  echo(stripslashes($erreur_champ2));
  } else {
if ($erreur_champ3) {
  echo(stripslashes($erreur_champ3));
  } else {
if ($erreur_champ4) {
  echo(stripslashes($erreur_champ4));
  } else {
if ($erreur_champ5) {
  echo(stripslashes($erreur_champ5));
  } else {
if ($erreur_champ6) {
  echo(stripslashes($erreur_champ6));
  } else {
if ($erreur_champ7) {
  echo(stripslashes($erreur_champ7));
  } else {
if ($erreur_dc1) {
  echo(stripslashes($erreur_dc1));
  } else {
if ($erreur_dc2) {
  echo(stripslashes($erreur_dc2));
  } else {
if ($erreur_email1) {
  echo(stripslashes($erreur_email1));
  } else {
if ($erreur_case1) {
  echo(stripslashes($erreur_case1));
  } else {
if ($erreur_texte1) {
  echo(stripslashes($erreur_texte1));
  } else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>



Descriptif:,
Une valise avec des roulettes

<hr style="width: 100%; height: 2px;">
On se retrouve au restaurant

<hr style="width: 100%; height: 2px;">,

----

Choix:,
Petit déjeuner

Déjeuner

Dîner

Pour tout renseignement complémentaire ---> ,

----

Disponibilité:,
Tous les jours,
,
,

----

,
,
,
,
,

----

!Important!,
,
,
,

----

,
,
,
,
,

----

Réservation:,
Nom:

<?php
if ($erreur_champ1) {
echo($icone);
}
?>,
">,

----

,
Prénom:

<?php
if ($erreur_champ2) {
echo($icone);
}
?>,
">,

----

,
Adresse:

<?php
if ($erreur_champ3) {
echo($icone);
}
?>,
">,

----

,
CPostal:

<?php
if ($erreur_champ4) {
echo($icone);
}
?>,
">,
Ville:

<?php
if ($erreur_champ5) {
echo($icone);
}
?>,
</td>
">,

----

,
Pays:

<?php
if ($erreur_champ6) {
echo($icone);
}
?>,
">,
Téléphone:

<?php
if ($erreur_champ7) {
echo($icone);
}
?>,
</td>
">,

----

,
Arrivée:

<?php
if ($erreur_dc1) {
echo($icone);
}
?>,

]
 -------------------------------------->,
Départ:

<?php
if ($erreur_dc2) {
echo($icone);
}
?>,

,

----

,
e-Mail:

<?php
if ($erreur_email1) {
echo($icone);
}
?>,
">,

,
<?php
if ($erreur_case1) {
echo($icone);
}
?>,
>J'ai bien lu et j'accepte...
----,

</td>
,
,
,

----

,
Message:

<?php
if ($erreur_texte1) {
echo($icone);
}
?>,
<textarea name="zone_texte1" cols="80" rows="5"><?=stripslashes($_SESSION['zone_texte1']);?></textarea>





<!--  PopCalendar(tag name and id must match) Tags should not be enclosed in tags other than the html body tag. -->


</form></html>
</html>

4 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

Ton problème est plus un problème javascript que php, j'ai lu ça avant

http://www.phpcs.com/codes/NOMBRE-JOURS-ENTRE-DEUX-DATE-SEULE-LIGNE_27028.aspx, il y a des fonctions proposées intéressantes ...

en javascript
http://www.mcfedries.com/JavaScript/DaysBetween.asp

a++
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
18
bonjour

?
il y a pas de tag de fermeture il faut enlever tout les

il serait bien de voir ton calendrier


a++
Messages postés
2686
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
27 juillet 2021

Bonjour !

J'ai refais un formulaire un peu simplifié !!

Il est utilisable ici :
http://alphabetfrancais.fr/formulaire/formulaire.php

La zone "Nombre de jours" qui reste vide (verrouillée) est la zone où je voudrais voir apparaître le Nbr de jours après remplissage des dates Début et Fin...

Ici le détail du formulaire (fonctionne en l'état)
<?php

// On vérifie si la fonction ini_set() a été désactivée...
$desactive =  ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}

// Vérifier que le formulaire a été envoyé...
if (isset($_POST['envoi'])) {

// Définir l'indicateur d'erreur sur zéro...
$flag_erreur = 0;

//On commence une session pour enregistrer les variables du formulaire...

session_start();

$_SESSION['champ1'] = $_POST['champ1'];
//Contrôle du spam...
if (eregi("http",$_POST['champ1'])) {
$erreur_champ1 = "Pour raisons de sécurité, ce champ ne peut comporter les caractères  http ";
$flag_erreur  = 1;
}
if (eregi("\[url",$_POST['champ1'])) {
$erreur_champ1 =  "Pour raisons de sécurité, ce champ ne peut comporter les caractères  [url ";
$flag_erreur  = 1;
}
if (eregi("[style.css 
<!-- <script type="text/javascript" language="JavaScript"> -->
<!--

//<![CDATA[

function verifSelection() {

if (document.demoform.champ1.value == "") {
alert("Vous devez saisir un Nom !")
return false
} 

if (document.demoform.champ2.value == "") {
alert("Vous devez saisir un Prénom !")
return false
} 

if (document.demoform.zone_email1.value == "") {
alert("Vous devez saisir un e-Mail valide !")
return false
}

invalidChars = " /:,;'"

for (i=0; i < invalidChars.length; i++) {	// does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.demoform.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.demoform.zone_email1.focus()
return false
}
}

atPos = document.demoform.zone_email1.value.indexOf("@",1)			// there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

if (document.demoform.zone_email1.value.indexOf("@",atPos+1) != -1) {	// and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

periodPos = document.demoform.zone_email1.value.indexOf(".",atPos)

if (periodPos == -1) {					// and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

if (periodPos+3 > document.demoform.zone_email1.value.length)	{		// must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.demoform.zone_email1.focus()
return false
}

} // Fin de la fonction
//]]>
//-->
</script>
</head><form name="demoform" method="post" action="<?=$_SERVER['PHP_SELF']?>" onsubmit="return verifSelection()">
  
Formulaire
    de contact

<?php
if ($erreur_champ1) {
echo(stripslashes($erreur_champ1));
} else {
if ($erreur_champ2) {
echo(stripslashes($erreur_champ2));
} else {
if ($erreur_dc1) {
echo(stripslashes($erreur_dc1));
} else {
if ($erreur_dc2) {
echo(stripslashes($erreur_dc2));
} else {
if ($erreur_email1) {
echo(stripslashes($erreur_email1));
} else {
if ($erreur_texte1) {
echo(stripslashes($erreur_texte1));
} else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>



Votre Nom : ,
<?php
if ($erreur_champ1) {
echo($icone);
}
?>,
">
Votre Prénom : ,
<?php
if ($erreur_champ2) {
echo($icone);
}
?>,
">



Votre Arrivée : ,
,
 ]

Votre Départ : ,
,
 



Nombre de Jours : ,
,
" type="text" readonly="readonly">



Votre e-Mail : ,
<?php
if ($erreur_email1) {
echo($icone);
}
?>,
">

Votre Commentaire : ,
<?php
if ($erreur_texte1) {
echo($icone);
}
?>,
<textarea name="zone_texte1" cols="45" rows="10"><?=stripslashes($_SESSION['zone_texte1']);?></textarea>



<!--  PopCalendar(tag name and id must match) Tags should not be enclosed in tags other than the html body tag. -->


</form></html>
Messages postés
2686
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
27 juillet 2021

Merci

Très sympa, je vais lire et me documenter

A+

JClaude