begin process at 2012 05 30 21:33:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Web 2.0

 > 

Ajax

 > 

Formulaires : Listes déroulantes dynamiques liées AJAX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Formulaires : Listes déroulantes dynamiques liées AJAX

mercredi 10 juin 2009 à 12:06:27 | Formulaires : Listes déroulantes dynamiques liées AJAX

kinl2005


Bonjour,

Je suis novice et je me suis appuyé un petit bout de code , et je n'arrive pas à le faire fonctionner :

Le code d'origine est là :=>
J'ai comme erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\LABO\AJAX_11\index3.php on line 35

Alors que mes quotes sont correctes...

Voici les 3 pages.

<= DEBUT index3.php =>
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Liste déroulantes dynamiques liées</title>

<script type="text/javascript" src="./dept_xhr.js" charset="iso_8859-1"></script>
<?php
/* Requête SQL de récupération des données de la première liste */
$sql =     "SELECT `country.idcountry` AS idr, `name_country` ".
        "FROM `country`, `packs` ".
        "WHERE `country.idcountry` = `packs.idcountry` ".
        "AND `status_pack` = `'I search'` ".
        "GROUP BY name_country` ".
        "ORDER BY name_country`;";

/* Connexion et exécution de la requête */
$connexion = mysql_connect($serveur, $admin, $mdp);
if($connexion != false)
{
    $choixbase = mysql_select_db($base, $connexion);
    $recherche = mysql_query($sql, $connexion);
    /* Création du tableau PHP des valeurs récupérées */
    $country = array();
    /* Index du département par tableau régional */
    $id = 0;
    while($ligne = mysql_fetch_assoc($recherche))
    {
        $country[$ligne['idr']] = $ligne['name_country'];
    }
?>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<h3>Version Utilisant AJAX</h3>
<p>Vous constaterez que le délai de latence entre la sélection et la mise à jour est quasiment intermédiaire entre les versions 100% PHP et JavaScript.</p>
<h3>Les Séries qu'il me manque</h3>

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
  <fieldset style="border: 3px double #333399">
  <legend>Sélectionnez un pays</legend>
    <select name="country" id="country" onchange="getDepartements(this.value);">
      <option value="vide">- - - Choisissez un pays - - -</option>
    <?php
    /* Construction de la première liste : on se sert du tableau PHP */
    foreach($country as $nr => $nom)
    {
        ?>
    <option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
<?php
    }
    ?>
    </select>
    <!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
         la seconde liste déroulande -->
  <span id="blocDepartements"></span><br />
  <input type="submit" name="ok" id="ok" value="Envoyer" />
  </fieldset>
</form>
<p><a href="./index.php" title="Aller vers la version 100% PHP">Aller vers la version 100% PHP</a></p>
<p><a href="./index2.php" title="Aller vers la version JavaScript">Aller vers la version JavaScript</a></p>
<?php
}
else
{
    /*  Si vous arrivez ici, vous avez un gros problème avec la connexion au serveur de base de données */
?>
</head>
<body>
<p>La connexion au serveur de base de données a échoué. Aucun élément ne peut être affiché.</p>
<?php
}
?>
</body>
</html>
<= FIN index3.php =>

<= DEBUT departements.php =>
<?php
/**
 * Code qui sera aeeplé par un objet XHR et qui
 * retournera la liste déroulante des départements
 * correspondant à la région sélectionnée.
 */
/* Paramètres de connexion */
$serveur = "localhost";
$admin   = "root";
$mdp     = "";
$base    = "";

/* On récupère l'identifiant du pay choisi. */
$idr = isset($_GET['idr']) ? $_GET['idr'] : false;
/* Si on a un pay, on procède à la requête */
if(false !== $idr)
{
    /* Cération de la requête pour avoir les series de ce pay*/
    $sql2 =
    "SELECT `idpack`, `idcountry`, `name_series` ".
    "FROM `packs` ".
    "WHERE `idcountry` = ".$idr."".
    "GROUP BY `name_series` ".
    "ORDER BY `name_series ASC`;";
   
    $connexion = mysql_connect($serveur, $admin, $mdp);
    mysql_select_db($base, $connexion);
    $rech_series = mysql_query($sql2, $connexion);
   
    /* Un petit compteur pour les series */
    $nd = 0;
   
    /* On crée deux tableaux pour les numéros et les noms des départements */
    $code_country = array();
    $nom_series = array();
   
    /* On va mettre les numéros et noms des départements dans les deux tableaux */
    while(false != ($ligne_series = mysql_fetch_assoc($rech_series)))
    {
        $code_country[] = $ligne_series['idcountry'];
        $nom_series[]  = $ligne_series['name_series'];
        $nd++;
    }
    /* Maintenant on peut construire la liste déroulante */
    $liste = "";
    $liste .= '<select name="series" id="series">'."\n";
    for($d = 0; $d < $nd; $d++)
    {
        $liste .= '  <option value="'. $code_country[$d] .'">'. htmlentities($nom_series[$d]) .' ('. $code_country[$d] .')</option>'."\n";
    }
    $liste .= '</select>'."\n";
    /* Un petit coup de balai */
    mysql_free_result($rech_series);
    /* 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");
}
?>
<= FIN departements.php =>
<= DEBUT dept_xhr.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 actualiserDepartements()
{
    var listeDept = requete.responseText;
    var blocListe = document.getElementById('blocDepartements');
    blocListe.innerHTML = listeDept;
}

/**
 * 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 getDepartements(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('blocDepartements').innerHTML = '';
    }
    else
    {
        /* À cet endroit précis, on peut faire apparaître un message d'attente */
        var blocListe = document.getElementById('blocDepartements');
        blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
        /* On crée l'objet XHR */
        creerRequete();
        /* Définition du fichier de traitement */
        var url = 'departements.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 */
                    actualiserDepartements();
                }
            }
        };
        requete.send(null);
    }
}
<= FIN dept_xhr.js =>

Merci d'avance pour vote aide !!!!!
samedi 13 juin 2009 à 13:12:17 | Re : Formulaires : Listes déroulantes dynamiques liées AJAX

nautilus99

Bonjour,

Warning
: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\LABO\AJAX_11\index3.php on line 35

signifie tout bêtement que la reque n'a pas renvoyé une resource, mais une erreur. Que raconte exactement mysql_error()... En général, ça signifie que la requête est mauvaise et a généré une erreur MySQL...

Poste sdonc le résultat de mysql_error()
Pour savoir comment l'utiliser, regardes dans le manuel de php... Il y a même des exemples...




Cette discussion est classée dans : liste, connexion, requete, series, country


Répondre à ce message

Sujets en rapport avec ce message

resultat d'une requete dans listbox [ par herveguedj ] bonjour, je suis tout nouveau en php et je debute ma premiere appli j'aimerai mettre la liste complte d'une requete que je recupere dans un listebox m pb avec une liste... [ par sepul ] Et oui au secours ! nan j'ai un pb avec une liste. En effet, je dispose d'une liste et lorsque que l'on clic sur un élément je dois recupérer l'élémen requete tri alphabet [ par bob ] salut tout le monde je fais des requetes de tri alphabetique sur mon site par exemple, si l'utilisateur clic sur A, j'affiche une liste avec tous les Problème requete [ par iomega ] Bonjour à tous j'ai un problème avec une requete!!!je dois récuperer dans une liste déroulante que voici le mois et l'année de cette liste et mettre l requete [ par poupinette10 ] Voila jai un formulaire avec 2 listes déroulantesla premiere liste déroulante contient des matiereset la deuxieme contient des fichiers!je voudrais en Alimentation d'une liste déroulante via Mysql [ par Eric25 ] Bonjour, Mon code est tout simple et pourtant je n'arrive pas a trouver ce qui cloche . Je souhaite alimenter une liste déroulante à travers une requê Probleme d'exécution d'un requete avec un parametre récupéré d'un lien ... [ par Poolky ] Salut à vous ... voila j'ai un petit problème avec l'exécution d'une requête "delete" contenant une variable que je passe par un lien. J'ai deux pages executer une requete en selectionnant une ligne ds une liste déroulante [ par mnoussa ] salut je voudrais savoir comment en selectionnant une ligne ds une liste déroulante afficher un tableau contenant les resultat d'une requete.ps: les e selectionner une ligne ds une liste deroulante et executer une requete [ par mnoussa ] salut je voudrais savoir comment en selectionnant une ligne ds une liste déroulante afficher un tableau contenant les resultat d'une requete. ps: les sous formulaire à réactualiser [ par niche ] salut à tous,j'ai un problème de réactualisation d'un sous formulaire au sein d'un formulaire.Ce sous formulaire est lié à une requete.Cette requete e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales