PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 09-06-2010 13:52:44

adnagi
Membre
Inscription : 03-06-2010
Messages : 10

insértion base SQL du nom de la ville sélectionnée depuis un menu

Bonjour,

Je cherche a insérer dans ma base SQL le nom de la ville sélectionnée depuis un menu déroulant
celui ci a été code en php et ajax
dans le post ou est sité le nom de la ville celle ci est défini par le non user_town


   1. name="user_town"
 

qui lui même est bien répercuté dans le script php pour l'insertion SQL

 

    $sql_insert = "INSERT into `users`
           (`full_name`,`user_town`,`user_email`,`pwd`,`date`,`user_name`
   )

 


voici le code POST du menu ville


 

<td nowrap="nowrap" align="right">Departement:</td>
    <td><select name="departement" id="departement" onchange="getVilles(this.value);">
      <option value="vide">- - - Choisissez un departement - - -</option>
       <?php
 
    foreach($departements as $nr => $nom)
    {
        ?>
  <option value="<?php echo($nr); ?>" name="user_town" id="user_town" ><?php echo($nom); ?></option>

     
  <?php
    }
  ?>
 
    </select></td>
    <tr valign="baseline">
        <td nowrap="nowrap" align="right">Ville:<span class="required"></td>
      <td><option name="user_town" type="text" ><span id="blocVilles"></span></tr>
    </td>
  </tr>      

 


je n 'arrive pas a récupérer le nom de la ville dans ma DB
c est le

 <span id="blocVilles">

qui affiche le nom de la ville.

Pouvez vous m'aider? car la je ne vois pas !

Merci d avance.

Hors ligne

#2 09-06-2010 17:12:14

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Bon j'ai pas tout compris mais ce qui me choque c'est ta requête d'insertion en premier lieu.

Où sont donc les valeurs à insérer ? ^^

Hors ligne

#3 09-06-2010 18:09:29

adnagi
Membre
Inscription : 03-06-2010
Messages : 10

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

c est un menu codé en Ajax et php ,il suffit de placer le id="blocVilles" pour faire apparaitre le menu a sa convenance

dans la page index.php


<?php
$sql = "SELECT `id_departement` AS idr, `departement` ".
       "FROM `departement` ".
       "ORDER BY `id_departement`;";

$connexion = mysql_connect($serveur, $admin, $mdp);
if($connexion != false)
{
       $choixbase = mysql_select_db($base, $connexion);
    $recherche = mysql_query($sql, $connexion);

    $departements = array();

    $id = 0;
    while($ligne = mysql_fetch_assoc($recherche))
    {
        $departements[$ligne['idr']] = $ligne['departement'];
    }

?> 
 


fichier Js


 * Lister les départements d'une région avec un objet
 * XMLHTTPRequest.
 */
/* Création de la variable globale qui contiendra l'
objet XHR */
var requete = null;
/**
 * Fonction privée qui va créer un objet XHR.
 * Cette fonction initialisera la valeur dans la variable globale définie
 * ci-dessus.
 */

function creerRequete()
{
    try
    {
        /* On tente de créer un objet XmlHTTPRequest */
        requete = new XMLHttpRequest();
    }
    catch (microsoft)
    {
        /* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
        try
        {
            requete = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch(autremicrosoft)
        {
            /* La première méthode a échoué, on en teste une seconde */
            try
            {
                requete = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch(echec)
            {
                /* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
                requete = null;
            }
        }
    }
    if(requete == null)
    {
        alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
    }
}
/**
 * Fonction privée qui va mettre à jour l'affichage de la page.
 */

function actualiserVilles()
{
    var listeVille = requete.responseText;
    var blocListe = document.getElementById('blocVilles');
    blocListe.innerHTML = listeVille;
}

/**
 * Fonction publique appelée par la page affichée.
 * Cette fonction va initialiser la création de l'objet XHR puis appeler
 * le code serveur afin de récupérer les données à modifier dans la page.
 */

function getVilles(idr)
{
    /* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
    if(idr == 'vide')
    {
        document.getElementById('blocVilles').innerHTML = '';
    }
    else
    {
        /* À cet endroit précis, on peut faire apparaître un message d'attente */
        var blocListe = document.getElementById('blocVilles');
        blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
        /* On crée l'objet XHR */
        creerRequete();
        /* Définition du fichier de traitement */
        var url = 'villes.php?idr='+ idr;
        /* Envoi de la requête à la page de traitement */
        requete.open('GET', url, true);
        /* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
        requete.onreadystatechange = function()
        {
            /* Lorsque l'état est à 4 */
            if(requete.readyState == 4)
            {
                /* Si on a un statut à 200 */
                if(requete.status == 200)
                {
                    /* Mise à jour de l'affichage, on appelle la fonction apropriée */
                    actualiserVilles();
                }
            }
        };
        requete.send(null);
    }
}

le fichier ville.php

<?php
/* On récupère l'identifiant de la région choisie. */
$idr = isset($_GET['idr']) ? $_GET['idr'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr)
{
    /* Cération de la requête pour avoir les départements de cette région */
    $sql2 = "SELECT `id_ville`, `ville`, `code` ".
            " FROM `ville`".
            " WHERE `id_departement` = ". $idr ."".
            " ORDER BY `id_ville`;";
    $connexion = mysql_connect($serveur, $admin, $mdp);
    mysql_select_db($base, $connexion);
    $rech_ville = mysql_query($sql2, $connexion);
    /* Un petit compteur pour les départements */
    $nd = 0;
    /* On crée deux tableaux pour les numéros et les noms des départements */
    $code_ville = array();
    $nom_ville = array();
    /* On va mettre les numéros et noms des départements dans les deux tableaux */
    while(false != ($ligne_ville = mysql_fetch_assoc($rech_ville)))
    {
        $code_ville[] = $ligne_ville['id_ville'];
        $nom_ville[]  = $ligne_ville['ville'];
        $code_dept[] = $ligne_ville['code'];
        $nd++;
    }
    /* Maintenant on peut construire la liste déroulante */
    $liste = "";
    $liste .= '<select name="ville" id="ville">'."\n";
    for($d = 0; $d < $nd; $d++)
    {
        $liste .= '  <option value="'. $code_ville[$d] .'">'. htmlentities($nom_ville[$d]) .' ('. $code_dept[$d] .')</option>'."\n";
    }
    $liste .= '</select>'."\n";
    /* Un petit coup de balai */
    mysql_free_result($rech_ville);
    /* Affichage de la liste déroulante */
    echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
    echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>

Hors ligne

#4 09-06-2010 19:41:59

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Je serai tenté de dire : as-tu testé ton fichier PHP ? Car Ajax c'est bien beau mais avant faut que le PHP fonctionne en solitaire.
Vérifies donc qu'il t'affiche ce qu'il faut, après on s'occupe du transfert.

Ensuite parlons du code pas propre du tout :

<td><option name="user_town" type="text" ><span id="blocVilles"></span></tr>

Si on regarde ton fichier PHP tu affiches un select que tu insères dans un span qui lui même est inséré dans un option qui lui se balade toute seule !?
Les contraintes html ne sont pas suivies déjà, donc il paraitrait normal de ne pas avoir l'affichage voulu.
Commences par coder une bonne imbrication qui puisse fournir un affichage aux normes. ^_-

Hors ligne

#5 09-06-2010 21:12:26

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

<option name="user_town" type="text" >

désolé, mais moi, je ne connais pas cette balise wink

a++

Hors ligne

#6 09-06-2010 22:11:20

adnagi
Membre
Inscription : 03-06-2010
Messages : 10

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

le voila bien formaté


<td><span id="blocVilles"></span></tr>
 

la liste déroulante liées fonctionne correctement pourtant
je veux juste récupérer le nom de la ville
dans le fichier ville.php le sélecteur apparait bien

 $liste .= '<select name="ville" id="ville">'."\n";

je vais peut être chercher un autre script pour les listes déroulante liées !
je désespère ...........

Hors ligne

#7 10-06-2010 10:02:47

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Je suis pas sûr de comprendre.
Tu veux récupérer la liste select de nom = ville, tu dis qu'elle s'affiche désormais mais tu dis que tu ne récupères pas le nom de la ville ?

Pourrais-tu nous expliquer, car pour moi si tu récupères la liste tu obtiens ce que le script est fait pour.
Mais si je comprends bien ce n'est pas une liste mais juste une seule ville que tu veux ?

Hors ligne

#8 10-06-2010 17:43:09

adnagi
Membre
Inscription : 03-06-2010
Messages : 10

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Oui en effet la liste fonctionne parfaitement,
je veux récupérer la ville que  l utilisateur sélectionne pour l'insérer dans ma base SQL
mais  je n arrive pas a formater correctement mon code pour la récupérer(la ville sélectionnée)
La liste des villes est affichée grâce a


<td><span id="blocVilles"></span></tr>
 

et je cherche donc a l'insérer dans ma base (user_town)


$sql_insert = "INSERT into `users`
        (`full_name`,`user_town`,`user_email`,`pwd`,`date`,`users_ip`,`activation_code`,`country`,`user_name`
      )
        VALUES
        ('$data[full_name]','user_town','$usr_email','$sha1pass'
      ,now(),'$user_ip','$activ_code','$data[country]','$user_name'
      )
      "
;
     

 

encore merci a toi xTG

Hors ligne

#9 10-06-2010 18:26:59

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Que donnes l'affichage de $_POST['ville'] à la réception du formulaire ?

Hors ligne

#10 10-06-2010 18:38:18

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Saluton,
Grosse incompréhension du fonctionnement des formulaires HTML.
Je ne vois pas comment ceci

<td><span id="blocVilles"></span></tr>

pourrait permettre de sélectionner une quelconque information.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 10-06-2010 18:56:35

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Le code Ajax retourne une liste déroulante(select) Kris.
Donc si ce span est à l'intérieur d'un form il ne devrait pas y avoir de problèmes.

Hors ligne

#12 10-06-2010 21:44:33

adnagi
Membre
Inscription : 03-06-2010
Messages : 10

Re : insértion base SQL du nom de la ville sélectionnée depuis un menu

Il me manquais

$ville = htmlentities($_POST['ville']);

 <td nowrap="nowrap" align="right">Ville:</td>
              <option name="ville"><span id="blocVilles">Ville</span>

   </tr>    
 

         
   

Vu que je n ai pas posté l intégralité de ma page index il était dur de voir ce qui y manquait

il est vrai que je n ai pas verifier le champ sad aie desolé
Merci beaucoup de vos réponses !

Hors ligne

Pied de page des forums