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

Messages postés
20
Date d'inscription
jeudi 13 mars 2003
Dernière intervention
1 avril 2011
- - Dernière réponse : Macintosh
Messages postés
20
Date d'inscription
jeudi 13 mars 2003
Dernière intervention
1 avril 2011
- 12 janv. 2011 à 20:22
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>
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
3
Merci
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++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cod57
Messages postés
1660
Date d'inscription
dimanche 7 septembre 2008
Dernière intervention
11 septembre 2013
0
Merci
bonjour

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

il serait bien de voir ton calendrier


a++
Commenter la réponse de cod57
Messages postés
20
Date d'inscription
jeudi 13 mars 2003
Dernière intervention
1 avril 2011
0
Merci
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>
Commenter la réponse de Macintosh
Messages postés
20
Date d'inscription
jeudi 13 mars 2003
Dernière intervention
1 avril 2011
0
Merci
Merci

Très sympa, je vais lire et me documenter

A+

JClaude
Commenter la réponse de Macintosh

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.