IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Ex. d'une fonction PHP à partir d'un évènement...


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    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' ...

  2. #2
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     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

  3. #3
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    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.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    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 ?

  5. #5
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    http://monserveur.com/mapage.php?variable=valeur
    Donc, dans ton cas ca doit donner quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $le_nom_rue = $_GET['nomrue'];

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    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 ...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    489
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 489
    Points : 388
    Points
    388
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.. !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    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 ?

  9. #9
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    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

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Voilà le code du formulaire "principal" ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

  11. #11
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2008, 17h08
  2. Réponses: 5
    Dernier message: 07/04/2008, 14h58
  3. Réponses: 4
    Dernier message: 21/09/2007, 15h14
  4. appel d'une fonction php à partir d'un bouton
    Par Jesmar dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 19h07
  5. [XSLT] Utiliser une fonction PHP à partir de la feuille de style XSL
    Par sayou84 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 25/04/2007, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo