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

AJAX Discussion :

[AJAX] Listes liées et table dans bdd


Sujet :

AJAX

  1. #1
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut [AJAX] Listes liées et table dans bdd
    Bonjour à tous.
    J'aurais besoin d'un peu d'aide concernant 4 listes liées et 4 tables dans ma bdd.
    Je voudrai savoir si au lieu d'avoir 4 table liée entre elles par id je pouvais en avoir qu'une seul ou je trierais les infos avec un DISTINCT lors de la requête pour récupérer les infos.
    Voici les tables et les listes associées je pense que ce sera plus claire.
    1èr liste qui affiche le type de cartouche d'encre et qui récupère l'id en value :
    table type_generique
    INSERT INTO `type_generique` (`id`, `type`) VALUES
    (1, 'Cartouche jet d''encre'),
    (2, 'Kit de recharge'),
    (3, 'Cartouche laser'),
    (4, 'Cartouche de nettoyage'),
    (5, 'Papier'),
    (6, 'Ruban de transfert');

    L'id du type est envoyé à la liste des marques et affiche les marques qui correspondes la colonne id_cor_type
    table marques_generique
    INSERT INTO `marques_generique` (`id_mar`, `marque`, `id_cor_type`, `id_marque`) VALUES
    (1, 'BROTHER', 4, 1),
    (2, 'APPLE', 4, 2),
    (3, 'EPSON', 4, 3),
    (4, 'BROTHER', 1, 4),
    (5, 'CANON', 1, 5),
    (6, 'APPLE', 1, 6),
    (7, 'ALCATEL', 1, 7),
    (8, 'SIEMENS', 1, 8),
    (9, 'HEWLETT PACKARD', 1, 9),
    (10, 'LEXMARK', 1, 10),
    (11, 'UTAX', 1, 11),
    (12, 'BROTHER', 3, 12),
    (13, 'MINOLTA', 3, 13),
    (14, 'LEXMARK', 3, 14),
    (15, 'DELL', 3, 15),
    (16, 'IBM', 3, 16),
    (17, 'OKI', 3, 17),
    (18, 'SAMSUNG', 3, 18),
    (19, 'BROTHER', 3, 19),
    (20, 'BROTHER', 6, 20),
    (21, 'EPSON CANON BROTHER HEWLETT PACKARD LEXMARK XEROX', 2, 21),
    (22, 'PAPIER', 5, 22);

    L'id_marque de la marque est envoyé à la liste des gammes et affiche les gammes qui correspondes la colonne id_cor_marque de la table gammes_generique
    table gammes_generique
    INSERT INTO `gammes_generique` (`id_gen`, `GAMME`, `id_cor_marque`, `id_gamme`) VALUES
    (1, 'PCRF', 4, 1),
    (2, 'BJ', 4, 2),
    (3, 'DCP', 4, 3),
    (4, 'Fax', 4, 4),
    (5, 'HJ', 4, 5),
    (6, 'IntelliFax', 4, 6),
    (7, 'MFC', 4, 7),
    (8, 'MFC-J', 4, 8),
    (9, 'P', 4, 9),
    (10, 'QBJ', 4, 10),
    (11, 'DCP', 12, 11),
    (12, 'HL', 12, 12),
    (13, 'MFC', 12, 13),
    (14, 'DCP', 1, 14),
    (15, 'Fax', 1, 15),
    (16, 'MFC', 1, 16),
    (17, 'Fax', 20, 17),
    (18, 'Fax T', 20, 18),
    (19, 'MFC', 20, 19);

    et pour finir ma table principale affiche les valeurs qui corresponde à id_gamme.
    Je pense que la c'est plus claire

    Ce que je voudrai c'est faire tous ça avec une seule table car c'est la folie de mettre tous ces numéro d'id.
    J'ai donc essayé de faire ma requête avec un DISTINCT mais le problème c'est de pouvoir récupérer les valeurs des différente liste.
    Je m'explique.
    Voici la liste qui récupère le type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <select id="types" name="type" onchange="refreshMarques();">
    	<option value="">-- Sélectionnez --</option>
    	<?php while($data = mysql_fetch_assoc($exec)): ?>
    	<option value="<?php echo ''.$data['TYPE'].''; ?>"><?php echo $data['TYPE']; ?></option>
    	<?php endwhile; ?>
    </select>
    et le js associé :
    function refreshMarques() {
    var listTypes = document.getElementById('types');
    var idType = listTypes.options[listTypes.selectedIndex].value;
     if (idType != '') {
    callAndRefresh('marques', '<?php echo ROOTPATH; ?>/insert/refreshMarques.php', 'type='+idType);
         }
    }
    La page refreshMarques.php est bien appelée et elle affiche la seconde liste, celle de la marque.
    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
    page refreshMarques.php
    if (isset($_POST['type'])  && $_POST['type'] !='')
    	{
    		$_SESSION['type'] = htmlspecialchars($_POST['type']);
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT marque FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' ORDER BY marque");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
    		while ($back = mysql_fetch_assoc($query))
    			{
    				echo '<option value="'.$back["marque"].'">'.$back["marque"].'</option>';
    			}
    	}
    header("Content-Type: text/html"); 
    et le js associé
    function refreshGammes() {
                       var listMarques = document.getElementById('marques');
                       var idMarque = listMarques.options[listMarques.selectedIndex].value;
                       if (idMarque > 0) {
                          callAndRefresh('gammes', '<?php echo ROOTPATH; ?>/insert/refreshGammes.php', 'marque='+idMarque);
                       }
                    }
    Jusque là tous va bien.
    Le souci est ici lors de la sélection de la marque, je voudrai que la liste gamme affiche que les gammes qui corresponde au type et à la marque choisi mais je ne sais pas comment faire pour récupérer ces valeurs.
    Voici la page refreshGammes.php
    J'ai essayé ça mais ça fonctionne pas, rien n'est affiché.
    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
    <?php
    // Ajax : Liste des marques après sélection d'un type
    if (isset($_POST['marque']) && $_POST['marque'] != '')
    	{
    		//$idMarque = htmlspecialchars($_POST['marque']);
    		$_SESSION['marque'] = htmlspecialchars($_POST['marque']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT gamme FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' AND marque='".$_SESSION['marque']."' ORDER BY gamme");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["gamme"].'">'.$back["gamme"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    par contre si je met cette requête
    $query = mysql_query("SELECT DISTINCT gamme FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' AND marque='".$_SESSION['marque']."' ORDER BY gamme");?>
    ça fonctionne mais ça m'affiche toutes les gammes et pas celle qui corresponde au type et à la marque.
    Idem pour la quatrième liste.
    J'espère avoir été assai claire dans mes explications.
    Un grand merci à tous ceux qui pourrons m'aider.

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    Euh, c'est pas très clair tout ça.
    Déjà pour commencer tu devrais te faire un formulaire de saisie en bonne et due forme avec des listes et tout ce qu'il faut pour que l'alimentation de ta base soit confortable. Par ailleurs, ce formulaire pourra te servir pour gérer aussi les modifications.
    Je serais toi, je ne gérerai pas la gamme. C'est inutile à mon sens. Le modèle de l'imprimante suffit amplement : MFC-7420 ou MP-810...
    Pas la peine de s'embêter plus.

  3. #3
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Bonsoir.
    j'ai besoin du select gamme car il y a plusieurs gamme disponible pour une même marque de même type.
    Je sais que ce n'est pas très claire mais c'est pas facile à expliquer.
    il faudrait en gros que mes quatre select recherche et affiche les informations qui sont dans une seule table plutôt que quatre.
    il faudrait pour ça que je récupère la valeur de la liste une et deux pour faire la requête de mon troisième select.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bon si tu veux, mais je pense que c'est pas gagné.
    Déjà je ne comprends pas trop tes champs de table...
    Pour arriver à faire ce que tu veux il faut faire une jointure entre les tables :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT 
       gamme
    FROM
       gammes_generique gg
          INNER JOIN marques_generique mg ON gg.id_cor_marque = mg.id_mar
    WHERE
       mg.id_cor_type = $type
       AND mg.id_mar = $marque

    Enfin, là c'est le b.a.ba de la base de données, il faudrait que tu bouquines un peu parce que tu vas perdre patience en moins de temps qu'il ne faut pour l'écrire.

    Tu n'échappes pas tes valeurs avec htmlspecialchars() pour la base de données, c'est soit requêtes préparées (PDO) soit mysql_real_escape_string()
    htmlspecialchars() ne sert qu'à échapper des données potentiellement dangereuses à l'affichage dans le navigateur.
    Je t'invite à passer un peu de temps ici

  5. #5
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Bonjour et merci.
    J'ai du mal m'exprimer mais justement je ne veux pas avoir plusieurs table.
    Ok pour le htmlspecialchars() je pensé que pour un simple appel c’était bon.
    Je met mes pages en dessous je pense que ce sera plus explicite.
    page cartouche_generique.php
    dans le head
    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
     
    <script type="application/javascript">
                    /* Initialisation XMLHttpRequest */
                    function getXhr(){
                       var xhr = null;
                       if(window.XMLHttpRequest) // Firefox et autres
                          xhr = new XMLHttpRequest();
                       else
                       if(window.ActiveXObject){ // Internet Explorer
                          try {
                             xhr = new ActiveXObject("Msxml2.XMLHTTP");
                          } catch (e) {
                             xhr = new ActiveXObject("Microsoft.XMLHTTP");
                          }
                       }
                       else { // XMLHttpRequest non supporté par le navigateur
                          alert ("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                          xhr = false;
                       }
                       return xhr;
                    };
     
                    function refreshMarques() {
                       var listTypes = document.getElementById('types');
                       var idType = listTypes.options[listTypes.selectedIndex].value;
                       if (idType != '') {
                          callAndRefresh('marques', '<?php echo ROOTPATH; ?>/insert/refreshMarques.php', 'type='+idType);
                       }
                    }
     
                    function refreshGammes() {
    					var listMarques = document.getElementById('marques');
    					var idMarque = listMarques.options[listMarques.selectedIndex].value;
                       if (idMarque != '') {
                          callAndRefresh('gammes', '<?php echo ROOTPATH; ?>/insert/refreshGammes.php', 'marque='+idMarque);
                       }
                    }
     
                    function refreshImprimantes() {
                       var listGammes = document.getElementById('gammes');
                       var idGamme = listGammes.options[listGammes.selectedIndex].value;
                       if (idGamme != '') {
                          callAndRefresh('imprimantes', '<?php echo ROOTPATH; ?>/insert/refreshImprimantes.php', 'gamme='+idGamme);
                       }
                    }
     
                    function callAndRefresh(id, url, params) {
                       var xhr = getXhr();
                       xhr.onreadystatechange = function(){
                          // si on a tout reçu et que le serveur est ok
                          if(xhr.readyState == 4 && xhr.status == 200)
                          {
                             // On se sert de innerHTML pour rajouter les options a la liste des "selections"
                             document.getElementById(id).innerHTML = xhr.responseText;
                          }
                       }
                       // on defini la methode (post) + le fichier de traitement + asynchrone (true)
                       xhr.open("POST", url , true);
                       xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                       // on poste les parametres a transmettre au fichier qui fera le traitement
                       xhr.send(params);
                    } 
                     </script>
    dans le body
    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
     
    <?php
    echo'<form method="post" action="'.ROOTPATH.'/index.php?page=cartouche_generique">'; ?>
    			<fieldset>
    				<legend>Recherchez votre produit générique par sélection</legend>
    				<div class="texte_lien"><ul>
    					<li><label for="types"><strong class="espacement_texte_lien">
    					Sélectionnez le type : </strong></label>
    					<select id="types" name="type" onchange="refreshMarques();">
    					<option value="">-- Sélectionnez --</option>
    					<?php while($data = mysql_fetch_assoc($exec)): ?>
    					   <option value="<?php echo ''.$data['TYPE'].''; ?>"><?php echo $data['TYPE']; ?></option>
    					<?php endwhile; ?>
    					</select>
    					</li>
    					<li><label for="marques"><strong class="espacement_texte_lien">
    					Sélectionnez votre marque : </strong></label>
    					<select id="marques" name="marque" onchange="refreshGammes();">
    					<option value="">-- Sélectionnez le type --</option>
    					</select>
    					</li>
    					<li><label for="gammes"><strong class="espacement_texte_lien">
    					Sélectionnez la gamme : </strong></label>
    					<select id="gammes" name="gamme" onchange="refreshImprimantes();">
    					<option value="">-- Sélectionnez la marque --</option>
    					</select>
    					</li>
    					<li><label for="imprimantes"><strong class="espacement_texte_lien">
    					Sélectionnez le produit : </strong></label>
    					<select id="imprimantes" name="imprimante">
    					<option value="">-- Sélectionnez la gamme --</option>
    					</select>
    					</li>
    				</ul></div>
    			</fieldset>
    			<fieldset>
    				<legend>Ou entrez la référence OEM</legend>
    				<input type="hidden" name="selection" value="REF_OEM" />
    				<input type="hidden" name="page" value="Panier_generique_1" />
    				<input type="hidden" name="choix" value="resultats" />
    				<input type="text" size="40" name="ref_oem"/>
    				<!--<input type="submit" value="Rechercher" name="Rechercher" />-->
    			</fieldset>
    			<p class='center'>
    					<input type="submit" name="btenvoi" value="OK" />
    			</p>
    		</form>
    page refreshMarques.php
    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
     
    <?php
    // Ajax : Liste des marques après sélection d'un type
    if (isset($_POST['type'])  && $_POST['type'] !='')
    	{
    		//$idType = htmlspecialchars($_POST['type']);
    		$_SESSION['type'] = htmlspecialchars($_POST['type']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT marque FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' ORDER BY marque");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["marque"].'">'.$back["marque"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    page refreshGammes.php
    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
     
    <?php
    if (isset($_POST['type']) && $_POST['type'] != '')
    	{
    		$_SESSION['type'] = htmlspecialchars($_POST['type']);
    	}
    if (isset($_POST['marque']) && $_POST['marque'] != '')
    	{
    		//$idMarque = htmlspecialchars($_POST['marque']);
    		$_SESSION['marque'] = htmlspecialchars($_POST['marque']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT gamme FROM cartouche_generique WHERE marque='".$_SESSION['marque']."' ORDER BY gamme");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["gamme"].'">'.$back["gamme"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    page refreshImprimantes.php
    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
     
    <?php
    // Ajax : Liste des marques après sélection d'un type
    if (isset($_POST['gamme']) && $_POST['gamme'] != '')
    	{
    		$_SESSION['gamme'] = htmlspecialchars($_POST['gamme']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT POUR_IMPRIMANTE FROM cartouche_generique WHERE gamme='".$_SESSION['gamme']."' 
    		ORDER BY POUR_IMPRIMANTE");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["POUR_IMPRIMANTE"].'">'.$back["POUR_IMPRIMANTE"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    il faudrait en faite que la requête de la page refreshGammes.php ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("SELECT DISTINCT gamme FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' AND  marque='".$_SESSION['marque']."' ORDER BY gamme");
    Sauf que si je met TYPE='".$_SESSION['type']." ça affiche plus rien comme si la session type était vide par contre tel qu'est la requête actuel ça affiche toutes les gammes.
    Pour la requête de la page refreshImprimantes.php çe sera le même problème.
    Voila j'espère que c'est plus claire comme ça et encore merci.

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Postes moi plutôt le code sql des tables marques, gammes, types, cartouches
    Je ne veux pas les données juste la structure.

  7. #7
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Désolé je comprend pas ce que tu veux.
    les tables type, marque,gamme et imprimante sont posté plus haut au début du post, je l'ai avaient créer pour faire fonctionner le code que tu m'a donné dans l'autre post (4 listes liées) sur le forum.
    par contre je veux utiliser qu'un seul table la table cartouche_generique qui regroupe tous ces champs dans des colonnes.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Sergio_zero Voir le message
    Désolé je comprend pas ce que tu veux.
    les tables type, marque,gamme et imprimante sont posté plus haut au début du post, je l'ai avaient créer pour faire fonctionner le code que tu m'a donné dans l'autre post (4 listes liées) sur le forum.
    Je voudrais voir la DDL de tes tables c'est le code sql qui permet de les créer, le code commençant par CREATE TABLE...

  9. #9
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Voici, désolé je n'avais pas compris
    --
    -- Structure de la table `cartouche_generique`
    --

    Code sql : 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
    CREATE TABLE IF NOT EXISTS `cartouche_generique` (
      `id` int(11) NOT NULL auto_increment,
      `REF_ACMX` char(50) collate latin1_general_ci NOT NULL,
      `REF_OEM` char(50) collate latin1_general_ci NOT NULL,
      `marque` char(50) collate latin1_general_ci NOT NULL,
      `TYPE` char(50) collate latin1_general_ci NOT NULL,
      `gamme` char(50) collate latin1_general_ci NOT NULL,
      `POUR_IMPRIMANTE` text collate latin1_general_ci NOT NULL,
      `NBRS_PAGES` char(50) collate latin1_general_ci NOT NULL,
      `Couleur` char(50) collate latin1_general_ci NOT NULL,
      `TARIF_1` decimal(10,2) NOT NULL,
      `TARIF_2` decimal(10,2) NOT NULL,
      `TARIF_3` decimal(10,2) NOT NULL,
      `TARIF_4` decimal(10,2) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=13247 ;

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    C'est ce que je soupçonnais, tu utilises le moteur MyISAM de MySql alors que dans ton cas il aurait été préférable d'utiliser InnoDb. Je me demande bien comment tu gères tes intégrités référentielles ? Tout est codé à la mano non ? Procédures stockées ?
    Sinon, pour ta table cartouche_generique tu as des erreurs de types pour les champs suivants : marque, type et gamme. Ils devraient être en int(11) et devraient également référencer les id autonum des tables correspondantes.
    Vu que tu es en MyISAM, t'es marron.
    La correction n'est pas simple. Changer le type d'un champ est généralement impossible à cause des données déjà présentes dedans. Sans compter que tu as dû dupliquer les valeurs textes entre tes tables (marque, type, gamme) et leurs champs correspondants dans la table cartouche_generique. Bref, pas simple pour revenir à un schéma correcte et maintenable.
    Il faudrait que tu te documentes quand même un peu plus sur les bases de données parce que là tu t'embarques dans un système qui est ou sera ingérable à très court terme.
    Je te conseille de reprendre intégralement ton design après t'être documenté et avoir pratiqué quelques cas d'école.

  11. #11
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Merci pour tous ces renseignement mais je pensai que int(11) était à utiliser pour des nombres entier.
    côté code oui tous est fait à la mano comme tu dit.
    Je n'ai pas encore fait mes quatre tables, je voulais d'abord savoir si il existait un moyen de faire avec ma table actuelle cartouche_generique car jusqu’à présent mon système fonctionne avec quatre select qui passe leur valeur en valident le choix les uns après les autres (en php).
    Dans le second je récupère la valeur du premier, dans le troisième je récupère la valeur du premier et du second pour faire ma requête (WHERE type=$type AND marque=$marque) et dans le quatrième je récupère la valeur du premier du second et du troisième (WHERE type=$type AND marque=$marque AND gamme=$gamme)
    J'aurais voulu faire la même chose mais avec des listes liées.
    pourtant il me semble que si j'arrive à récupérer toutes les valeurs des select au fur et à mesure c'est faisable.

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    essaies avec ça pour refreshGammes.php :
    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
    <?php
     
    if (isset($_POST['marque']) && $_POST['marque'] !== '') {
       mysql_connect("***","***","***");
       mysql_select_db("***");
     
       $where   = array();
       $where[] = "marque = '" . mysql_real_escape_string($_POST['marque']) . "'";
     
       if (isset($_POST['type']) && $_POST['type'] !== '') {
          $where[] = "type = '" . mysql_real_escape_string($_POST['type']) . "'";
       }
     
       $sql  = "SELECT DISTINCT gamme FROM cartouche_generique WHERE " . implode(' AND ', $where) . " ORDER BY gamme";
       $data = mysql_query($sql);
     
       $options   = array();
       $options[] = '<option value="">-- Sélectionnez --</option>';
     
       while($row = mysql_fetch_assoc($data)) {
          $value     = htmlspecialchars($row["gamme"], ENT_QUOTES);
          $options[] = '<option value="'.$value.'">'.$value.'</option>';
       }
    }
    header("Content-Type: text/html");
    echo implode("\n", $options);
     
    ?>

  13. #13
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Il me semble avoir déjà essayer if (isset($_POST['type']) pour pouvoir récupérer la valeur et l'utiliser dans ma requête mais sans succès car le $_POST['type'] n'a pas l'air d’exister.
    Je réessayerais ce soir on ne sais jamais, la je suis au boulot.
    Par contre je comprend pas pourquoi tu fait un tableau associatif
    $where = array(); ce n'est pas se compliquer pour rien ?

  14. #14
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    J'ai modifié ma page refreshGammes.php comme tu me la dit mais ça affiche toutes les gammes et pas uniquement la gamme qui correspond au type et à la marque sélectionné dans le deux premier select (type et marque).
    Désolé je vient de comprendre pourquoi tu me dit de mettre int(11), mes champs marque, type et gamme ne sont pas des nombres mais des champs de texte.
    Voici le contenu de ma table cartouche_generique (enfin une partie car elle fait 13000 lignes)
    --
    -- Structure de la table `cartouche_generique`
    --

    Code sql : 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
    CREATE TABLE IF NOT EXISTS `cartouche_generique` (
      `id` int(11) NOT NULL auto_increment,
      `REF_ACMX` char(50) collate latin1_general_ci NOT NULL,
      `REF_OEM` char(50) collate latin1_general_ci NOT NULL,
      `marque` char(50) collate latin1_general_ci NOT NULL,
      `TYPE` char(50) collate latin1_general_ci NOT NULL,
      `gamme` char(50) collate latin1_general_ci NOT NULL,
      `POUR_IMPRIMANTE` text collate latin1_general_ci NOT NULL,
      `NBRS_PAGES` char(50) collate latin1_general_ci NOT NULL,
      `Couleur` char(50) collate latin1_general_ci NOT NULL,
      `TARIF_1` decimal(10,2) NOT NULL,
      `TARIF_2` decimal(10,2) NOT NULL,
      `TARIF_3` decimal(10,2) NOT NULL,
      `TARIF_4` decimal(10,2) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=13247 ;
    --
    -- Contenu de la table `cartouche_generique`
    --

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO `cartouche_generique` (`id`, `REF_ACMX`, `REF_OEM`, `marque`, `TYPE`, `gamme`, `POUR_IMPRIMANTE`, `NBRS_PAGES`, `Couleur`, `TARIF_1`, `TARIF_2`, `TARIF_3`, `TARIF_4`) VALUES
    (1, 'AG120-A420', 'NEUTRE', 'NEUTRE', 'PAPIER PHOTO', 'A4', 'PHOTO BRILLANT ADHESIF A4 (210mmx297mm) 120grs 20 pages', '120 GRS - 5760 dpi', 'BLANC ADHESIF BRILLANT', 3.00, 2.80, 2.70, 2.50),
    (2, 'AG125-A620', 'NEUTRE', 'NEUTRE', 'PAPIER PHOTO', 'A6', 'PHOTO BRILLANT ADHESIF A6 (105mmx148mm) 125grs 20 pages', '125 GRS - 5760 dpi', 'BLANC ADHESIF BRILLANT', 1.00, 0.90, 0.80, 0.70),
    (3, 'BJ21B', 'LC-600BK / LC-21BK', 'BROTHER', 'JET D''ENCRE GENERIQUE', 'IntelliFax', 'BROTHER IntelliFax 1800', '25ml', 'NOIRE', 1.30, 1.20, 1.10, 1.00),
    (4, 'BJ21B', 'LC-600BK / LC-21BK', 'BROTHER', 'JET D''ENCRE GENERIQUE', 'MFC', 'BROTHER MFC-3100C', '25ml', 'NOIRE', 1.30, 1.20, 1.10, 1.00),
    (5, 'BJ21B', 'LC-600BK / LC-21BK', 'BROTHER', 'JET D''ENCRE GENERIQUE', 'MFC', 'BROTHER MFC-3200J', '25ml', 'NOIRE', 1.30, 1.20, 1.20, 1.20),
    Voila dit moi si tu vois des erreurs de types dans ma table.
    Je vais reprendre depuis le début car je pense que je me suis mal fait comprendre et on part dans tous les sens.
    Je voudrai faire fonctionner 4 listes liées qui iraient chercher les informations dans une seule table (la table cartouche_generique ci-dessus)
    Je remet mon code
    Tout d'abord la page cartouche_generique
    Dans le head
    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
     
    <script type="application/javascript">
                    /* Initialisation XMLHttpRequest */
                    function getXhr(){
                       var xhr = null;
                       if(window.XMLHttpRequest) // Firefox et autres
                          xhr = new XMLHttpRequest();
                       else
                       if(window.ActiveXObject){ // Internet Explorer
                          try {
                             xhr = new ActiveXObject("Msxml2.XMLHTTP");
                          } catch (e) {
                             xhr = new ActiveXObject("Microsoft.XMLHTTP");
                          }
                       }
                       else { // XMLHttpRequest non supporté par le navigateur
                          alert ("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                          xhr = false;
                       }
                       return xhr;
                    };
     
                    function refreshMarques() {
                       var listTypes = document.getElementById('types');
                       var idType = listTypes.options[listTypes.selectedIndex].value;
                       if (idType != '') {
                          callAndRefresh('marques', '<?php echo ROOTPATH; ?>/insert/refreshMarques.php', 'type='+idType);
                       }
                    }
     
                    function refreshGammes() {
    					var listMarques = document.getElementById('marques');
    					var idMarque = listMarques.options[listMarques.selectedIndex].value;
                       if (idMarque != '') {
                          callAndRefresh('gammes', '<?php echo ROOTPATH; ?>/insert/refreshGammes.php', 'marque='+idMarque);
                       }
                    }
     
                    function refreshImprimantes() {
                       var listGammes = document.getElementById('gammes');
                       var idGamme = listGammes.options[listGammes.selectedIndex].value;
                       if (idGamme != '') {
                          callAndRefresh('imprimantes', '<?php echo ROOTPATH; ?>/insert/refreshImprimantes.php', 'gamme='+idGamme);
                       }
                    }
     
                    function callAndRefresh(id, url, params) {
                       var xhr = getXhr();
                       xhr.onreadystatechange = function(){
                          // si on a tout reçu et que le serveur est ok
                          if(xhr.readyState == 4 && xhr.status == 200)
                          {
                             // On se sert de innerHTML pour rajouter les options a la liste des "selections"
                             document.getElementById(id).innerHTML = xhr.responseText;
                          }
                       }
                       // on defini la methode (post) + le fichier de traitement + asynchrone (true)
                       xhr.open("POST", url , true);
                       xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                       // on poste les parametres a transmettre au fichier qui fera le traitement
                       xhr.send(params);
                    } 
                     </script>
    Puis dans le body
    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
    connexionbdd();
    		$exec = mysql_query("SELECT DISTINCT TYPE FROM cartouche_generique ORDER BY TYPE") or die(mysql_error());
    		echo'<form method="post" action="'.ROOTPATH.'/index.php?page=cartouche_generique">'; ?>
    			<fieldset>
    				<legend>Recherchez votre produit générique par sélection</legend>
    				<div class="texte_lien"><ul>
    					<li><label for="types"><strong class="espacement_texte_lien">
    					Sélectionnez le type : </strong></label>
    					<select id="types" name="type" onchange="refreshMarques();">
    					<option value="">-- Sélectionnez --</option>
    					<?php while($data = mysql_fetch_assoc($exec)): ?>
    					   <option value="<?php echo ''.$data['TYPE'].''; ?>"><?php echo $data['TYPE']; ?></option>
    					<?php endwhile; ?>
    					</select>
    					</li>
    					<li><label for="marques"><strong class="espacement_texte_lien">
    					Sélectionnez votre marque : </strong></label>
    					<select id="marques" name="marque" onchange="refreshGammes();">
    					<option value="">-- Sélectionnez le type --</option>
    					</select>
    					</li>
    					<li><label for="gammes"><strong class="espacement_texte_lien">
    					Sélectionnez la gamme : </strong></label>
    					<select id="gammes" name="gamme" onchange="refreshImprimantes();">
    					<option value="">-- Sélectionnez la marque --</option>
    					</select>
    					</li>
    					<li><label for="imprimantes"><strong class="espacement_texte_lien">
    					Sélectionnez le produit : </strong></label>
    					<select id="imprimantes" name="imprimante">
    					<option value="">-- Sélectionnez la gamme --</option>
    					</select>
    					</li>
    				</ul></div>
    			</fieldset>
    Ensuite les pages qui sont appelées par AJAX
    refreshMarques.php
    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
    <?php
    // Ajax : Liste des marques après sélection d'un type
    if (isset($_POST['type'])  && $_POST['type'] !='')
    	{
    		//$idType = htmlspecialchars($_POST['type']);
    		$_SESSION['type'] = htmlspecialchars($_POST['type']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT marque FROM cartouche_generique WHERE TYPE='".$_SESSION['type']."' ORDER BY marque");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["marque"].'">'.$back["marque"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    refreshGammes.php
    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
     
    <?php
    if (isset($_POST['type']) && $_POST['type'] != '')
    	{
    		$_SESSION['type'] = htmlspecialchars($_POST['type']);
    	}
    if (isset($_POST['marque']) && $_POST['marque'] != '')
    	{
    		//$idMarque = htmlspecialchars($_POST['marque']);
    		$_SESSION['marque'] = htmlspecialchars($_POST['marque']);
    	   // recuperation de id_liste1
    		mysql_connect("***","***","***");
    		mysql_select_db("***");
    		$query = mysql_query("SELECT DISTINCT gamme FROM cartouche_generique WHERE marque='".$_SESSION['marque']."' ORDER BY gamme");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["gamme"].'">'.$back["gamme"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    page refreshImprimantes.php
    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
     
    <?php
    // Ajax : Liste des marques après sélection d'un type
    if (isset($_POST['gamme']) && $_POST['gamme'] != '')
    	{
    		$_SESSION['gamme'] = htmlspecialchars($_POST['gamme']);
    	   // recuperation de id_liste1
    		mysql_connect("62.193.208.224","acmx","Acmx13");
    		mysql_select_db("acmx");
    		$query = mysql_query("SELECT DISTINCT POUR_IMPRIMANTE FROM cartouche_generique WHERE gamme='".$_SESSION['gamme']."' 
    		ORDER BY POUR_IMPRIMANTE");?>
    		<option value="">-- Sélectionnez --</option>
    		<?php
                    while ($back = mysql_fetch_assoc($query))
                            {
                                    echo '<option value="'.$back["POUR_IMPRIMANTE"].'">'.$back["POUR_IMPRIMANTE"].'</option>';
                            }
            }
    header("Content-Type: text/html");
    ?>
    Voila je pense que si j'arrive à récupérer la valeur des deux premier select (type et marque) pour mettre dans ma requête pour rechercher la gamme du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $selection_recherche = mysql_query("SELECT * FROM cartouche_generique 
    								WHERE TYPE='".$_SESSION['type']."' AND marque='".$_SESSION['marque']."' AND gamme='".$_SESSION['gamme']."' ORDER BY gamme");
    								$queries++;
    Et si j'arrive à récupérer la valeur des trois premier select (type,marque et gamme) pour faire la recherche pour remplir le dernier select imprimante du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $selection_recherche = mysql_query("SELECT * FROM cartouche_generique 
    								WHERE TYPE='".$_SESSION['type']."' AND marque='".$_SESSION['marque']."' AND gamme='".$_SESSION['gamme']."' AND POUR_IMPRIMANTE='".$_SESSION['imprimante']."' ORDER BY imprimante");
    								$queries++;
    c'est gagné.
    Merci encore.

  15. #15
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Voilà comment récupérer les valeurs de marque et de type pour mettre à jour les gammes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function refreshGammes() {
       var listMarques = document.getElementById('marques');
       var idMarque = listMarques.options[listMarques.selectedIndex].value;
       var listTypes = document.getElementById('types');
       var idType = listTypes.options[listTypes.selectedIndex].value;
       if ((idMarque != '') && (idType != '')) {
          callAndRefresh('gammes', '<?php echo ROOTPATH; ?>/insert/refreshGammes.php', 'marque='+idMarque+'&type='+idType);
       }
    }
    Procèdes par analogie pour le reste.

  16. #16
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Oh merci, je croix que la ce sera bon.
    Il me tarde ce soir pour tester ça.
    Je teste ce soir et EDIT.

    EDIT :
    Merci beaucoup rawsrc tous fonctionne comme je le voulais.
    Merci et bravo.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 08/06/2010, 09h22
  2. Réponses: 6
    Dernier message: 20/07/2006, 16h15
  3. [AJAX]Listes liées multiples
    Par Schuss dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 27/06/2006, 16h31
  4. Réponses: 9
    Dernier message: 04/04/2006, 16h59
  5. Relation entre tables dans bdd différentes
    Par Mandotnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 29/03/2006, 08h03

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