Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
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 29/03/2006, 09h29   #1
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Par défaut Ex. d'une fonction PHP à partir d'un évènement...

Bonjour à tous ...

Je ne sais pas trop si ce que je veux faire est possible, tout du moins avec du PHP seul.

J'aimerais, à partir d'un évènement (ex: perte de focus d'un contrôle) exécuter une fonction PHP ou du code.
Ici je développe une applic "non Internet" donc qui tourne sur un serveur local, et je voudrais récupérer une localité dans ma DB, et la placer dans une zone, le tout lorsque l'utilisateur quitte la zone d'encodage du code postal

Le mieux que j'arrive à faire c'est ça :
<td width="200"><input name="nom_rue" type="text" maxlength="30" onblur="document.location='test.php';"></td>
Le problème est que, si je choisi cette solution, j'aimerais revenir à la page qui exécute ce code, avec une valeur que j'aurai récupérée dans 'test.php' ...
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 10h09   #2
Membre éclairé
 
Avatar de hisy
 
Inscription : novembre 2004
Messages : 373
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 373
Points : 300
Points : 300
Salut,

Il existe 2 facon de gérer le pb ...

Soit tu précharges tes localités ( si t'en as pas 300000000) et tu géres ensuite avec du javascript.

Soit tu passes effectivement par un page intermédiaire de traitement PHP et tu reviens avec un
Code :
 header("Location: maPageDeDepart.php?localite=$resultat") ;
Dans un cas tu es limité en quantité dans l'autre tu fais un accès serveur ...

Entre la peste et le choléra ...
__________________
Take it HiSy
hisy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 11h26   #3
Rédacteur
 
Homme
Geek entrepreneur
Inscription : novembre 2004
Messages : 1 035
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Geek entrepreneur

Informations forums :
Inscription : novembre 2004
Messages : 1 035
Points : 1 813
Points : 1 813
Ajax te permet aussi de récupérer des données dynamiquement sans recharger ta page. Il y a d'ailleurs quelques tutoriaux dans la section php.
hugo123 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 11h33   #4
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Je vais choisir le choléra et faire un accès serveur

Maintenant, autre question, toujours à ce sujet ...

J'ai donc tenté le code suivant (qui ne fonctionne pas) :

<td><input name="nom_rue" type="text" maxlength="30" size="35" onblur="document.location=\'Fonctions/GetCR.php?'.$nom_rue.'\';"></td>';

En fait, j'aimerais passer à ma page PHP la valeur de ce champ texte (input du nom de rue) ...
Mais, et bien je n'y arrive pas ...

Qu'est-ce que je pourrais mettre pour qu'il passe directement la valeur à la page ?
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 11h40   #5
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
tu essayes de passer une valeur en parametre du GET.
Tres bien, mais il faut que tu donne un nom à cette variable, la valeur seule ne suffit pas.
L'url appelée doit être de la forme :
Code :
http://monserveur.com/mapage.php?variable=valeur
Donc, dans ton cas ca doit donner quelque chose du genre :
Code :
1
2
3
<td>
   <input name="nom_rue" type="text" maxlength="30" size="35" onblur="document.location=\'Fonctions/GetCR.php?nomrue'.$nom_rue.'\';">
</td>;
puis dans le script GetCR.php tu recuperes cette variable en faisant un :
Code :
$le_nom_rue = $_GET['nomrue'];
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 11h59   #6
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Erf, effectivement, j'avais oublié une partie du code ...

Malgré tout, en corrigeant, cela ne marche quand même pas ... J'ai l'impression que dans le code de l'input il n'initialise pas la variable
$nom_rue

Et donc, dans ma page GetCR.php le nom_rue est vide ...
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 12h01   #7
Membre éclairé
 
Inscription : janvier 2004
Messages : 424
Détails du profil
Informations personnelles :
Âge : 39
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 424
Points : 311
Points : 311
j'ai fait ca.. tu tapes le code postal et ca t'affiche la ville ou une div contenant les diverses villes repondant a ce CP...

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?
require_once ("../inc_mysql.php");
require_once ("../inc_client.php");
require_once ("../inc_form.php");
$dbconn = Connection();
$cp = $_GET['cp'];
 
// VERIFICATION
if (empty($cp) || !(is_numeric($cp)))
{
	echo("alert('Le code postal est invalide')");
	exit();
}
$requete = "SELECT ville FROM ref_ville_cp WHERE cp='".$cp."' ORDER BY ville;";
	$result = mysql_query($requete,$dbconn);
	if (!$result) {
	  echo "Une erreur s'est produite.\n".mysql_error();
	  exit();
	}
	else
	{
		unset($ville);
		//echo ("<clients>");
		//echo('<script type="text/javascript">');
		//echo('var customarray_client=new Array(');
		$nb = mysql_num_rows($result);
		if ($nb > 0)
		{
			if ($nb > 1)
			{
				while ($row = mysql_fetch_assoc($result))
				{
					//$ville[]=$row['ville'];
					//Array_iso($ville);
					//Bouton_Creation_dossier($client_export);
					$id = strtolower(remove_accents(str_replace(' ','',$row['ville'])));
					$out .= "<a name=\'".$id."\'></a>";
					$out .= "<a href=\'#".$id."\' Onclick=\'document.getElementById(\"client[ville]\").value=\"".$row['ville']."\"\'>".$row['ville']."</a><br/>";
				}
				echo("writedivcp('".$out."')");
			}
			else
			{
				$row = mysql_fetch_assoc($result);
				//echo ("test");
				//echo("<script type='text/javascript'>");
				echo("document.getElementById('client[ville]').value='".$row['ville']."';");
				//echo ("</script>");
				//echo ("test");
			}
		}
		else
		{
			echo ("alert('Code introuvable')");
		}
	}
Deconnection($dbconn);
?>


et dans ma page principale, l'appel de ce script, au moyen d'xmlhttprequest :



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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
require_once("inc_strings.php");
function Form_client($client)
{
 
echo <<<EOF
 
<script language="javascript" type="text/javascript" src="js/actb.js"></script>
<script language="javascript" type="text/javascript" src="js/common.js"></script>
 
 
<script type="text/javascript">
function writediv(texte)
     {
     document.getElementById('VerifClient').innerHTML = texte;
     document.getElementById('VilleCp').style.display='none';
     document.getElementById('VerifClient').style.display='block';
 
 
     }
function writedivcp(texte)
	{
 
     document.getElementById('VerifClient').style.display='none';
     document.getElementById('VilleCp').style.display='block';
     document.getElementById('VilleCp').innerHTML = texte;
	}
 
function verifClient(client)
     {
     if(client != '')
               {
               if(client.length>1)
               {
               texte = file('http://10.0.0.163/scripts/V2_mysql/ajax/VerifClient.php?client='+escape(client))
               ok='1';
               writediv(texte);              
              }
              else
              {
              	writediv('Aucune correspondance'); 
              }
            }
 
     }
function verifVille (cp)
{
	if(cp.length == 5)
	{
		texte = file2('http://10.0.0.163/scripts/V2_mysql/ajax/VilleCp.php?cp='+escape(cp))
		//writedivcp(texte);
	}
 
}
 
function file(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }
 
function file2(fichier)
     {
     if(window.XMLHttpRequest) // FIREFOX
          xhr_object = new XMLHttpRequest();
     else if(window.ActiveXObject) // IE
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
     else
          return(false);
     xhr_object.open("GET", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) eval(xhr_object.responseText);
     else return(false);
     }
</script>
 
EOF;
	echo ("<div id='VerifClient'>Tapez le début du nom pour voir les correspondances</div>");
	echo ("<div id='VilleCp'>Tapez le code postal pour voir les villes correspondantes</div>");
 
 
 
	Debut_formulaire($_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']);
 
	Debut_fieldset("Commentaires", "oui");
 
	Creation_champ_select('client[connu_par]', $client['connu_par'], 'Connu par ...', 'id_referrer', 'referrer', 'ref_referrer', 'id_referrer', "Selectionnez");
	Creation_champ_textearea('client[commentaire_client]', $client['commentaire_client'], 'Commentaire client'); 
	Creation_champ_textearea('client[commentaire_vendeur]', $client['commentaire_vendeur'], 'Commentaire vendeur'); 
 
	Fin_fieldset();
 
 
	Debut_fieldset("Coordonnées");
 
	Creation_champ_select('client[civilite]', $client['civilite'], 'Civilité', 'id_civilite', 'nom', 'ref_civilite', 'id_civilite');
	Creation_champ_texte('client[nom]', $client['nom'], 'Nom', 'normal', 'onKeyUp="verifClient(this.value)"'); 
 
	Creation_champ_texte('client[prenom]', $client['prenom'], 'Prénom'); 
	Creation_champ_texte('client[mail]', $client['mail'], 'Mail'); 
	Creation_champ_texte('client[adresse1]', $client['adresse1'], 'Adresse 1'); 
	Creation_champ_texte('client[adresse2]', $client['adresse2'], 'Adresse 2'); 
	Creation_champ_texte('client[cp]', $client['cp'], 'Code postal','normal', 'onKeyUp="verifVille(this.value)"'); 
	Creation_champ_texte('client[ville]', $client['ville'], 'Ville'); 
 
	Creation_champ_texte('client[tel1]', $client['tel1'], 'Téléphone domicile'); 
	Creation_champ_texte('client[tel2]', $client['tel2'], 'Téléphone professionel'); 
	Creation_champ_texte('client[tel3]', $client['tel3'], 'Téléphone mobile'); 
	Creation_champ_texte('client[fax]', $client['fax'], 'Fax'); 
 
	Fin_fieldset();
 
 
 
	Creation_champ_hidden('client[id_client]',$client['id_client']);
	Creation_champ_hidden('etape','insert');
 
	Creation_bouton_submit('Enregistrer');
 
	Fin_formulaire();
}


Bon, je sais bien que le code donné comme ca, sans commentaire ne doit pas etre tres clair.. surtout qu'il fait appel a pas mal d'autres fonctions.. mais la plupart sont assez explicites "Creation_champ_texte"... etc..


Mais un coup tu parles de localité, l'autre coup de nom de rue ..? enfin, en esperant que ca t'aide.. !
zevince est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 12h06   #8
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Nom de rue = localité en fait ... My mistake

Oui, c'est une solution en effet merci beaucoup pour le code ...
Mais j'ai bien peur que je ne suis pas encore suffisament doué en PHP pour arriver à comprendre le comprendre ...

Par hasard, quelqu'un ne saurait pas pourquoi, dans l'exemple que je mettais au dessus, la variable n'est pas initialisée ?
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 13h16   #9
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Fais voir le code des deux scripts php mis en jeu, ainsi que celui de la page html générée qui contient le formulaire
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 13h34   #10
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Voilà le code du formulaire "principal" ...
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
30
31
32
33
34
 
 
<form name="Fiche_complet" method="get" action="Fonctions/Complet.php">
<table border="1" cellspacing="1" cellpadding="5">
<tr>
<colgroup align="center"><th colspan="6"><font face="Comic sans MS" size="2">Fiche rue</font></th>
</tr>
<tr>
<td width="100"><b><font size="2" face="Comic sans MS">Nom :</font></b></td>
<?php
echo '<td><input name="nom_rue" type="text" maxlength="30" size="35" onblur="document.location='Fonctions/GetCR.php?nom_rue='.$nom_rue.'\';"></td>';
?>
<td width="100"><b><font size="2" face="Comic sans MS">Numéro :</font></b></td>
<td><input name="num_rue" type="text" maxlength="5" size="10"></td>
<td width="100"><b><font size="2" face="Comic sans MS">Index :</font></b></td>
<td><input name="index_rue" type="text" maxlength="5" size="10"></td>
</tr>
<tr>
<td width="100"><b><font size="2" face="Comic sans MS">Nuitée :</font></b></td>
<td><input name="nuitee" type="checkbox" id="nuitee"></td>
<td width="100"><b><font size="2" face="Comic sans MS">Seconde résidence :</font></b></td>
<td><input name="sresidence" type="checkbox" id="sresidence"></td>
</tr>
<tr>
<td width="100"><b><font size="2" face="Comic sans MS">Remarque: </font></b></td>
<td colspan="5" width="100"><textarea name="remarque_cat" cols="20" rows="5"></textarea></td>
</tr>
</table>
<table>
<tr>
<colgroup align="center"><td colspan="6"><input type="submit" name="submit" value="Valider"></td>
</tr>
</table>
</form>
Et voilà la page GetCR
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$dbconnect = mysql_connect('localhost','root','');
mysql_select_db ('fichier_rue',$dbconnect);
$sql_query = 'Select * From correspondance_code Where nom_rue="'.$_GET['nom_rue'].'"';
$query = mysql_query ($sql_query);
if ($query != 0)
{
	$rows = mysql_fetch_array($query);
	mysql_close();
	header ('Location: ../accueil.php?page=Ajout_complet&cr='.$rows['code_rue'].'&nom_rue='.$_GET['nom_rue'].'');
 
}
L'appel à GetCR se fait convenablement et quand je le souhaite ... Mais la variable que j'essaie de lui passer ($nom_rue) n'est apparemment pas initialisée ...
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 13h41   #11
NoT
Membre confirmé
 
Inscription : février 2004
Messages : 237
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 237
Points : 261
Points : 261
Tu confonds un peu les traitements coté client et coté serveur ( ce qui est une faute classique qd on débute )

si on reprend le code :

Code :
1
2
3
<td>
   <input name="nom_rue" type="text" maxlength="30" size="35" onblur="document.location=\'Fonctions/GetCR.php?nomrue'.$nom_rue.'\';">
</td>;
au moment ou PHP génère la page demandant la localité, est-ce qu'il connait deja la localité qui a été choisit ? non ! Donc comment pourrait-il remplir la variable $nom_rue ?

C'est qu'une fois que l'utilisateur a rempli ton chps nom_rue qu'on va connaitre la valeur de cette variable, c'est donc une variable coté client qu'il faut renvoyer, donc du javascript.

Code :
1
2
3
<td>
   <input name="nom_rue" type="text" maxlength="30" size="35" onblur="document.location=\'Fonctions/GetCR.php?nomrue\' + document.Fiche_complet.nom_rue.value;">
</td>;
Ca devrait déjà etre plus correct.
NoT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2006, 14h55   #12
Futur Membre du Club
 
Inscription : mars 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 57
Points : 17
Points : 17
Merci énormément NoT ... Ca marche

Effectivement, lorsque l'on y réfléchit, c'est logique ... Mais bon, comme tu le fais remarquer, je suis débutant en la matière.

Encore merci
Sangdrax1604 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h52.


 
 
 
 
Partenaires

Hébergement Web