Récuperer des enums d'un attribut

Signaler
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009
-
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009
-
bonjour,
voila j'ai une table connexion qui possede un attribut dont ses elements sont deja prefedefinies : "type_connexion". pour etre plus claire: Type Connexion: soit ADSL ou VSAT ou WIMAX.
voila je cherche comment recuperer ses attributs avec une requete pour les mettre dans une liste select dans code php.
j ai essaye une requete avec un select mais cette derniere ne me retourne pas tous les types. seulement ceux qui ont été utilisés pour des connexions saisies dans la table.
j'essaye de chercher une solution mais je vois pas dautre qu'en utilisant une requete.
merci pour votre aide
a bientot

14 réponses

Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
Euh c'est normal que la requête renvoie que ce que tu as dans ta table sinon ca veut dire qu'elle demande a google et parse les resultat tout seul
J'ai peut être pas compris mais je réponds à ce dont j'ai cru comprendre...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,


SHOW COLUMNS FROM nom_table LIKE champ_enum
puis tu parses le résultat.





Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

bonjour;
j ai essaye malalam la requete que tu as postée et voila comment j ai fais:

<?php

    $link = mysql_connect("localhost","root","");
    mysql_select_db('pfe_bd');
   
    $res=mysql_query("SHOW COLUMNS FROM connexion LIKE Type_CNX") or die(mysql_error());
    echo $res;
    while($lig=mysql_fetch_array($res));
    {
    echo ($lig);
    }
 
    mysql_close($link);
?>

mais on me renvoit cette erreur:

Erreur de syntaxe près de 'Type_CNX' à la ligne 1

bon je vois pas exactement où est l'erreur.
merci pour votre aide
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
   $res=mysql_query("SHOW COLUMNS FROM connexion LIKE 'Type_CNX'") or die(mysql_error());
Il manque les apostrophes.
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

resalut,
j'ai ajouté les apostrophes et il me retourne l'ID de l'attribut:
Resource id #3

Devrai-je utliser l'ID pour extraire les enumerations que contient cet attribut??
merci
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Tu fais un echo de la ressource retournée par mysql_query(), c'est normal...
Et mysql_fetch_array() renvoie un tableau...et faire un echo d'un tableau renvoie 1. Donc forcément, tu ne vois rien là...mais tout est là, il faut juste que tu utilises correctement les fonctions. Comment tu fais en général pour aller chercher les résultats d'une requête ? Sûrement pas comme ça.
Tu devrais relire des tutos sur l'utilisation de l'extension mysql.
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

bon, en general j'utilise mysql_fetch_array() car elle répond à mes besoins surtout que l'application que je suis entrain de developper un peu simple.
en tout cas,merci pour les informations. je vais essayer de m'informer un peu plus sur ca et esperons que j'y arriverai.
merci pour ton aide
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

resalut,
Voila comment j'ai fait mais ca ne me retourne rien...


<?php

    $link = mysql_connect("localhost","root","");
    mysql_select_db('pfe_bd');
    
    $res=mysql_query("SHOW COLUMNS FROM connexion LIKE 'Type_CNX'") or die(mysql_error());
 
    while($lig=mysql_fetch_array($res));
    {
    echo ($lig);
    }

    mysql_close($link);
?>

Jimagine personnellement que l'erreur vient au niveau de la ligne en rouge.
a ma connaissance, normalement on fait $lig['attribut_table'] mais la, franchement j'ai la l'impression de ne rien comprendre. si vous pouvez m'eclaircir un peu plus comment faire la suite.
meeerci
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
mysql_fetch_array() renvoie un tableaau je t'ai dit. Quand tu l'utilises en général, tu fais ça ? J'ai des doutes.
Si tu fais echo array(1,2,3); ça renvoie quoi ? Là c'est pareil. C'est un TABLEAU, donc affiche le comme tu affiches un tableau.
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

oui c'est bon merci. j'ai compris.
voila j ai fait de cette façcon là:

<?php

    $link = mysql_connect("localhost","root","");
    mysql_select_db('pfe_bd');
   
    $res=mysql_query("SHOW COLUMNS FROM connexion LIKE 'Type_CNX'") or die(mysql_error());
   
    if (mysql_num_rows($res) > 0)
    {
           $row = mysql_fetch_row($res);
              echo ($row[1]);
     }
mysql_close($link);
?>
 
et ca me retourne :

enum('ADSL','WIMAX','LS','FR','VSAT')

c'est bon en quelque sorte mais je me demande s'il n'y a pas un moyen pour extraire chaque enumeration a part..c'est à dire ADSL pui WIMAX...car j'aurai besoin de les mettre dans une liste deroulante SELECT dans mon code
merci
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Si il y a moyen justement à toi de parser le résultat, comme je te l'ai dit au début.
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

ok merci bcp
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

Bonjour,


voila j ai essaye de chercher comment parser un resultat pour une telle requete mais je n'ai pas su. alors si vous pouviez m'aider un peu svp.


merci d'avance
Messages postés
37
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
30 novembre 2009

salut tout le monde;
voila enfin, ma solution

<?php

    $link = mysql_connect("localhost","root","");
    mysql_select_db('pfe_bd');
   
    $res=mysql_query("SHOW COLUMNS FROM connexion LIKE 'Type_CNX'") or die(mysql_error());

    while($lig= mysql_fetch_array($res))
    {
        if(preg_match('!enum(.+)!',$lig['Type']))
        {
            $enum = preg_replace ('!^enum\((.+)\)$!', '$1', $lig['Type']);

            $enum = str_replace ("'", "", $enum);
            $enum = explode (',', $enum);
            echo '<select name="typ_cnx_mdf">';
            foreach ($enum as $valeur)
            echo ' <option value="'.$valeur.'">'.$valeur.'</option>';
            echo '</select>';
        }
    }

    mysql_close($link);
?>

merci pour l'aide de tout le monde