Récupérer les valeurs par défaut d'un champ enum.

Eléphant du PHP | 172 Messages

12 avr. 2006, 16:56

Bonjour,

Voilà, je souhaite récupérer dans un array les valeurs par défaut d'un champ de type enum, pour ainsi si modification de table il y a, je ne sois pas aussi obligé de modifier également le php.
$categorie = $_GET['categorie'];
    
    $sql = "DESC table categorie";
    $req = mysql_query($sql);
    $valeurs = mysql_fetch_array($req);
    print_r($valeurs);
    echo '<br /><br />';
    print_r($valeurs[1]); 
Avec ce code, j'obtiens pour print_r($_valeurs);

Code : Tout sélectionner

Array ( [0] => categorie [Field] => categorie [1] => enum('cat1','cat2','cat3','cat4','cat5') [Type] => enum('cat1','cat2','cat3','cat4','cat5') [2] => NO [Null] => NO [3] => [Key] => [4] => [Default] => [5] => [Extra] => )
Et pour donc print_r($valeurs[1]);

Code : Tout sélectionner

enum('cat1','cat2','cat3','cat4','cat5')
Comment faire pour récupérer dans mon tableau seulement cat1, cat2, etc...

C'est possible ?

Merci.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

12 avr. 2006, 17:10

Je ne connais pas de fonctions MySQL pour ça, mais en PHP tu devrais pouvoir arriver à tes fins en utilisant preg_match_all()

Eléphant du PHP | 172 Messages

12 avr. 2006, 17:21

Ok, merci je vais regardé ça, mais comme j'ai encore jamais trop utiliser les expressions régulières, je sens que je vais ramer :mrgreen:

Enfin, c'est une occasion pour m'y mettre :D

Eléphant du PHP | 172 Messages

14 avr. 2006, 17:24

Salut,

Je me suis plongé dans les expressions régulières, et je suis presque arrivé à faire ce que je voulais, mais le tableau que j'obtiens est à 2 dimensions, ce qui fait que lorsque je teste si une chaine est dans mon tableau, cela me retourne faux(absent).

Comment faire pour obtenir un tableau "normal" ?

Ce que j'ai fait :
<?php

  $recherche = "`[^enum,'][a-z0-9_]+`i";
  $get = 'cat1';
  preg_match_all($recherche, "enum('cat1','cat2','cat3','cat4','cat5')", $autorise);
  echo '<br />';
  print_r($autorise);
  print '<br />' . $autorise[0][0];
  echo '<br />';
  if( in_array($get, $autorise) )
  {
      echo '<br />Présent<br />';
  }
  else
  {
      echo '<br />Absent<br />';
  }
  
?>
Le print_r de $autorise me donne :

Code : Tout sélectionner

Array ( [0] => Array ( [0] => cat1 [1] => cat2 [2] => cat3 [3] => cat4 [4] => cat5 ) )
J'aurais aussi une question subsidiaire, quel est la différence entre PREG_PATTERN_ORDER et PREG_SET_ORDER, j'ai bien lu la doc, mais j'avoue avoir du mal à comprendre :?

Merci.