8722 sujets

Développement web côté serveur, CMS

Bonjour,
Il y a quelques temps, j'ai mis en place pour un formulaire des zones qui se remplissent automatiquement selon des choix effectués par différents menus déroulants. Tout marche bien.

Aujourd'hui je bloque pour faire la même chose mais suite à la saisie manuelle d'un numéro dans une case. Je souhaite que lorsque l'utilisateur rentre un n° de commune dans une case, il s'affiche le n° du département et le code du pays dans 2 autres cases. Ci-dessous ce que j'ai tenté de faire et qui ne marche pas bien sûr. Je n'ai pas de message d'erreur mais quand je saisi un code de commune dans mon formulaire rien ne se passe.

Un grand merci par avance si quelqu'un avait 2 mn pour jeter un oeil à mon code.
Evelyne


.....
//l'utilisateur saisi manuellement le code d'une commune dans un case de formulaire
<label for="code">Code INSEE de la commune : </label>
<input type="text" name="codeCommune"size="8" maxlength="4" value="code commune :" onfocus="this.value='';" /></br></br>

<?php
if (isset($codeCommune))
{   
//requete pour récuperer le code du pays et le code du département 
$code = parcoursRs(SQLSelect("SELECT codePays, codeDepartement FROM GITE WHERE numGite ='". $numGite ."'"));
}
?>

<label for="numEchantillon">N° échantillon (automatique) : </label>

<input type="text" name="codePays" size="5" maxlength="5" value="<?php echo (isset($codePays)) ?>"/>
<input type="text" name="codeDepartement" size="5" maxlength="5" value="<?php echo (isset($codeDepartement)) ?>"/>

.....
Salut à toi,

sans vouloir te paraître trop méchant, il me semble que tu utilise une vielle versions de PHP. Sinon tu ne pourrais pas utiliser de variables non déclarées comme
$codeCommune, $numGite, $codePays et $codeDepartement
Ou alors c'est déclaré plus haut et tu ne nous a pas tout montré.

Donc 1èrement un
$codeCommune = $_GET['codeCommune'];
(ou $_POST selon ta méthode).

Ensuite, si j'était à ta place (mais ça dépends de tes compétences), je verrai bien une requête via AJAX.

Le visiteur entre le numéro INSEE de la commune, un jquery te récupère le numéro, l'envoi à un fichier qui traite la requête (recherche dans la bd et récupération de tous les gites de cette commune) et qui renvois la réponse dans ton formulaire.

Si tu le souhaites, je peux t'aider à le réaliser. Sinon, ben passe le num par l'url ou le POST et récupère le pour la recherche.


.....
//l'utilisateur saisi manuellement le code d'une commune dans un case de formulaire
<label for="code">Code INSEE de la commune : </label>
<input type="text" name="codeCommune"size="8" maxlength="4" value="code commune :" onfocus="this.value='';" /></br></br>

<?php
 $codeCommune = isset($_GET['codeCommune']) ? int($_GET['codeCommune']): '';
if (!empty($codeCommune ))
{   
//requete pour récuperer le code du pays et le code du département 
$code = parcoursRs(SQLSelect("SELECT codePays, codeDepartement FROM GITE WHERE codeCommune ='". $codeCommune ."'"));
}
?>

<label for="numEchantillon">N° échantillon (automatique) : </label>

<input type="text" name="codePays" size="5" maxlength="5" value="<?php echo (isset($codePays)) ?>"/>
<input type="text" name="codeDepartement" size="5" maxlength="5" value="<?php echo (isset($codeDepartement)) ?>"/>
Bonjour Sp4tz,
et merci pour cette réponse. Je ne peux pas utiliser Ajax, je dois rester en Php.
Ce que je ne comprends pas c'est que quand la personne saisi un n° il n'y a pas d'action pour déclencher le remplissage des autres cases ???

Je me permets de te soumettre ci-dessous ce que j'avais fait pour l'autre cas : sélection par menus déroulants imbriqués d'un pays, puis d'un département, puis d'une commune et attribution d'un numéro. Là, il y avait l'action de sélectionner quelque chose ? Le code des menus déroulants imbriqués est à part.

J'espère que ma question n'est pas trop idiote mais je ne vois pas.

Merci,
Evelyne

<?php
//idp = id du pays
if (isset($idp))
{
    if ($idp > 0)
    {
//requete pour récuperer UN champ en bdd 
        $codePays = SQLGetChamp("SELECT codePays FROM PAYS where ID_pays=" . $idp);
//la requete est là pour vous donner une idée
    }
}
?>

<?php
if (isset($iddp))
{
//iddp = id du département
    if ($iddp > 0)
    {
//requete pour récuperer UN champ en bdd 
        $codeDepartement = SQLGetChamp("SELECT codeDepartement FROM DEPARTEMENT where ID_departement=" . $iddp);
//la requete est là pour vous donner une idée
    }
}
?>

<?php
if (isset($idc))
//idc = id de la commune
{
    if ($idc > 0)
    {

//requete pour récuperer UN champ en bdd 
        $codeCommune = SQLGetChamp("SELECT codeCommune FROM COMMUNE where ID_commune=" . $idc);
//la requete est là pour vous donner une idée
    }
}
?>


Code html pour l'affichage automatique des codes pays/département/commune et attribution d'un nouveau n° incrémenté de +1 :
<div class="cadre_gite">
    <titre>Gîte</titre>
    <p>
        <label for="numGite">Numéro gîte : </label>
        <input type="text" name="codePays" size="5" maxlength="5" value="<?php echo (isset($codePays)) ? $codePays : null; ?>"/>
        <input type="text" name="codeDepartement" size="5" maxlength="5" value="<?php echo (isset($codeDepartement)) ? $codeDepartement : null; ?>" />
        <input type="text" name="codeCommune" size="5" maxlength="5"  value="<?php echo (isset($codeCommune)) ? $codeCommune : null; ?>"/>
<?php        
//requete attribuer automatiquement le n° du gîte
		$numGite = SQLGetChamp("SELECT max(numGite) FROM GITE WHERE ID_commune=$idc");
?>      
        <input type="text" name="numGite" size="5" maxlength="5" value="<?php echo ($strnumGite=sprintf("%03d", $numGite + 1)); ?>"/>