Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 18h07   #1
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Par défaut page tampon de validation d'adresse

Bonjour
j'ai eu une demande du client qui me force a modifier le code d'une page
La situation:
J'ai un formulaire de saisie de donné pour une réclamation suite a un sinistre
Il y a des champs de saisie d'adresse de la perte
je l'ai séparer ainsi
NoCivique -> zone de texte
Suite->Zone de texte
Rue-> Zone de texte
Ville->Zone de texte
Code postal->zone de texte

Ainsi dans ma bdd je garde les champs séparer pour garder une forme de saisie afin d'éviter que l'usager n,entre le tout séparer par des virgules...

Tout fonctionnait, mais la demande à été la suivante
il voudrait que après le click du bouton continuer le formulaire, ca valide l'adresse saisie, en la comparant avec celles des dossiers antérieure...Si une adresse est semblable, l'indiquer à la secrétaire qui entre les dossiers qu'il y a possibilité de doublons pour un sinistre (Il se peut que ce soit une autre réclamation par contre ex: sinistre causé par le vent, et 1 ans plus tard c'est l'eau qui a causé le sinistre) mais le type de sinistre n'est pas a valider...simplement l'adresse de la perte

Je me demande un peu comment faire
Actuellement, j'ai une classe pour conserver les information déjà entrer...je ne fais pas d'insert en bdd immédiatement, seulement à la fin du formulaire (il est sur 2 page d'affichage)
J'ai pensé faire une page tampons pour valider les adresse et passe une variable dans l'url que je récuprerais en GET par la suite et indiquerais s'il y a "possibilité de " doublons seulement

Ma requete me cause également probleme car des dossier actuellement il y en a 16000 d'ouvert et une 100taine par semaine se rajoutant
donc ca peut etre fastidieux de chercher sur 5 champs en meme temps

Des suggestion pour l'alert et la recherche et la manière de procéder?
merci de vos conseils
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 16h59   #2
Membre émérite
 
Avatar de FloMo
 
Inscription : juillet 2004
Messages : 714
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 714
Points : 898
Points : 898
Essaye de clarifier ta question, j'ai pas tout compris. Essaye de clarifier aussi ton code, j'ai l'impression que tu pars dans une usine à gaz énorme.

A partir de ce que j'ai compris, je te conseillerais ceci :
- sauvegarder les données qui transitent entre les pages avec des cookies de session,
- vérifier la validité des données à l'affichage de la page de formulaire.

Par exemple :
- à l'affichage de la première page, tu testes si des erreurs doivent être affichées,
- à la validation de la première page :
- si tout va bien, tu affiches la seconde page,
- sinon, tu affiches la première page en faisant passer le message d'erreur grâce au cookie de session.
- tu fais la même chose pour la seconde page.

Surtout, sépare bien toutes les étapes : tu trouveras beaucoup plus facilement la solution.
FloMo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 18h41   #3
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
merci pour tes conseils
en fait j'ai développer un peu ladessus
Voilà je filtre d'abord sur le code postal et sur la date d'ouverture de dossier
ca élimine considérablement le nombre de valeurs retourner par ma requete
voici ma requete:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
if($codePost != ""){
	//Le code postal est spécifier on fait une recherche sur ce champs
	//Pour couper le plus de réultats possible
	$strScript = "SELECT dossierID, versionDossier, civiquePerte, ruePerte, villePerte, clientAssureNom, clientAssurePrenom, DATE_FORMAT(ouvertureDossier,'%d/%c/%Y') AS ouverture ";
	$strScript .= "FROM tbldossier ";
	$strScript .= "INNER JOIN tblclientassure ON tbldossier.clientassurerID = tblclientassure.clientAssureID ";
	$strScript .= "WHERE cpPerte = '".$codePost."' AND ouvertureDossier BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY) AND NOW()";
 
	$req = $objCon->dbQuery($strScript);
	if(mysql_num_rows($req) > 0){
		//Entre ici il y a plusieur réclamation avec le meme code postal...
		//On vérifie s'il y en a avec une adresse semblable et ville
		echo"OUI avec meme code ".mysql_num_rows($req)."<br>";
		$newAddress = $_SESSION['newDossier']->getValeur("ruePerte");
		$newTown = $_SESSION['newDossier']->getValeur("villePerte");
 
		while($res = mysql_fetch_array($req)){
			if($_SESSION['newDossier']->getValeur("civiquePerte") == $res['civiquePerte']){
				//$returnedAddress = $res['ruePerte'].', '.$res['villePerte'];
				echo ressemblance($newAddress, $res['ruePerte']).'---Ville---';
				echo ressemblance($newTown, $res['villePerte']).'<br>';
			}
		}
	}
	else{
		//Entre ici il y a auncue réclamation avec le meme code postal...
		echo"NON aucune réclamation avec ce code ".mysql_num_rows($req)."<br>";
	}
Voici le code de la fonction pour comparer les adresses
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
function ressemblance($chaine_recherchee, $chaine_de_contenu) {
  //on supprime des caracteres de la chaine recherchée, n'entrant pas en compte dans le calcul de la ressemblance.
  //trim() sert a supprimer les espaces potentielles en debut et fin de chaine.
  //et strtolower() renvoie la chaîne en minuscules
  echo $chaine_recherchee.'>>>>'.$chaine_de_contenu.'->>>';
  //on renvoie aussi la chaîne de contenu en minuscules et on explose les chaines, pour obtenir des tableaux
  $explode_contenu = explode(" ", strtolower(trim(str_replace(array(".", ",", ";", ":" ), "", $chaine_de_contenu))));
  $explode_cle = explode(" ", strtolower(trim(str_replace(array(".", ",", ";", ":" ), "", $chaine_recherchee))));
//on compte le contenu des tableau    
    $count_tab_cle = count($explode_cle);
    $count_tab_contenu = count($explode_contenu);
 
//on compare les tableaux 	
	for($i = 0; $i != $count_tab_contenu; $i++) $pointage[$i] = (in_array($explode_contenu[$i], $explode_cle))?1:0; 
 
// on calcule la somme des valeurs du tableau, et on la retourne sous forme de pourcentage
 return round(((array_sum($pointage)/$count_tab_contenu)*100), 2) . "%";
}
Voilà..en gros ca me retourne cela pour l'instant puisque je fait mes teste
mais c'est mon cheminement sur ce probleme
Citation:
SELECT dossierID, versionDossier, civiquePerte, ruePerte, villePerte, clientAssureNom, clientAssurePrenom, DATE_FORMAT(ouvertureDossier,'%d/%c/%Y') AS ouverture FROM tbldossier INNER JOIN tblclientassure ON tbldossier.clientassurerID = tblclientassure.clientAssureID WHERE cpPerte = 'j0r 1t0' AND ouvertureDossier BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY) AND NOW()
OUI avec meme code 2
beaulieu>>>> Beaulieu->>>100%---Ville---Prévost>>>>Prévost->>>100%
beaulieu>>>> Beaulieu->>>100%---Ville---Prévost>>>>Prévost->>>100%
Il va me rester a jouer un peu avec les chiffre a voir qu'est ce qui est significatif...dans l'exemple ca donne 100%
en voici un autre
Citation:
SELECT dossierID, versionDossier, civiquePerte, ruePerte, villePerte, clientAssureNom, clientAssurePrenom, DATE_FORMAT(ouvertureDossier,'%d/%c/%Y') AS ouverture FROM tbldossier INNER JOIN tblclientassure ON tbldossier.clientassurerID = tblclientassure.clientAssureID WHERE cpPerte = 'j0r 1t0' AND ouvertureDossier BETWEEN DATE_SUB(NOW(),INTERVAL 30 DAY) AND NOW()
OUI avec meme code 1
du lac-renaud>>>> Chemin du Lac-Renaud->>>66.67%---Ville---prévost>>>>Prévost->>>100%
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h46.


 
 
 
 
Partenaires

Hébergement Web