Php mySQL, comment modifier et recuperer le champs ENUM

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Php mySQL, comment modifier et recuperer le champs ENUM

juste pour afficher une seule table

par saoufe » 06 févr. 2006, 20:29

j'ai tester le code que vous avez fait je l'ai adapté au mien et tout fonctionne
mais e voudrais afficher un seul champs
car la cela affiche tout les champs
comment faire svp
je pense que c'est dans le describe que cela s'affiche mais je n'en suis pa sur

par jalol » 19 nov. 2005, 12:24

Merci pour la piste :)

Voici au final le script que j'ai développé et qui fonctionne :ordi: :
<?php
mysql_connect ('localhost', 'root', '');
mysql_select_db ('test');

$query = 'DESCRIBE `te`';
$retour = mysql_query ($query);
while ($donnees=mysql_fetch_array ($retour)) {
  // On test ici le type de champs pour savoir si c'est un enum. Si on connaît les types de chaque champs, on peut également tester les nom des champs s'appelant 'Field' dans le retour de la requête (accessible ici par $donnees['Field'])
  if (preg_match('!enum(.+)!', $donnees['Type'])) {
    $enum = preg_replace ('!^enum\((.+)\)$!', '$1', $donnees['Type']);
	$enum = str_replace ("'", "", $enum);
    $enum = explode (',', $enum);
	//print_r ($enum);
	echo '<select name="select">';
	foreach ($enum as $valeur) {
	  echo '  <option value="' . $valeur . '">' . $valeur . '</option>';
	}
	echo '</select>';
  }
}
mysql_close();

?>
Et si je veux rajouter une valeur d'énumération, je dois passer par une requête SQL avec un ALTER du style :

Code : Tout sélectionner

ALTER TABLE `te` CHANGE `bidule` `bidule` ENUM( 'chose', 'truc', 'ouais', 'caca', 'prout' ) DEFAULT 'chose' NOT NULL
oups! j'avais pas compris la question.. je vais supprimer mon ancien post pour pas mêler personne
Pas bien grave, merci quand même :lol:

par alexbad » 19 nov. 2005, 04:25

oups! j'avais pas compris la question.. je vais supprimer mon ancien post pour pas mêler personne

par Xenon_54 » 19 nov. 2005, 04:21

Bonjour,

Voici un extrait de phpMyAdmin:
<?php
$type = "ENUM('He''lo','Bonjour')";

if (preg_match('@^(set|enum)\((.+)\)$@i', $type, $tmp)) {
        $tmp[2]       = substr(preg_replace('@([^,])\'\'@', '\\1\\\'', ',' . $tmp[2]), 1);
        $type         = $tmp[1] . '(' . str_replace(',', ', ', $tmp[2]) . ')';
}
echo $type;
?>
Tu peux essayer de travailler avec ça :)

par alexbad » 19 nov. 2005, 04:15

PhpMyAdmin, c'est un logiciel qui fait des requête sql que nous lui demandons de faire. Il les fait à partir de php, à partir des informations qu'on lui donne via des formulaires. Donc, tout ce qu'on peut faire avec phpmyadmin, on peut le faire nous même en php.

Tu veux récupérer les champs? rien de plus simple, tu fais un SELECT *, ensuite, tu fais une boucle avec while et la fonction mysql_fetch_array() pour mettre de l'ordre dans tout ça:
<?
//Connexion et tout le tralala
mysql_connect("localhost", "root", "");
mysql_select_db("database");

$retour = mysql_query("SELECT * FROM table");//On exécute la requête sql et on récupère le résultat dans $retour

         while ($donnees = mysql_fetch_array($retour))
         {
         //Tes données sont utilisables ici sous cette forme : $donnees['champ']
         }

mysql_close();
?>

Pour ton deuxième problème, je comprends pas vraiment où tu veux en venir. Mais, si tu veux ajouter une entrée, c'est un INSERT INTO, si tu veux modifier une entrée, un UPDATE, si tu veux en supprimer une, un DELETE *. Tu dis que tu veux ajouter c au valeur possible du enum. Donc, si je comprends bien (ce dont je ne suis pas sur :P ), tu veux ajouter c à la valeur existante. Donc, la valeur a deviendrait ac.

Si c'est cela, tu dois utiliser un UPDATE et updater la valeur précédente que tu auras récupérer avec un SELECT * pour anciennevaleur + c

Par exemple, tu veux updater les a pour ac:
<?
//Connexion et tout le tralala
mysql_connect("localhost", "root", "");
mysql_select_db("database");

$retour = mysql_query("SELECT * FROM table WHERE enum='a'");//On exécute la requête sql et on récupère le résultat dans $retour

         while ($donnees = mysql_fetch_array($retour))
         {
         $ancien_enum = $donnees['enum'];
         $nouvel_enum = $ancien_enum . 'c';
         mysql_query("UPDATE table SET enum='nouvel_enum' WHERE enum='$ancienenum'");
         }

mysql_close();
?>

Si j'ai bien pigé, ça devrait convenir... y'a seulement que ma concaténation dont je suis pas sur, je vais vérifier, je corrige si je me suis trompé :wink:

Php mySQL, comment modifier et recuperer le champs ENUM

par jalol » 19 nov. 2005, 02:20

bonjour,

je cherche à réaliser une base de donnée constitué principalement de champs ENUM
grace à phpMyAdmin je peus creer sa structure et entrer les valeurs possible pour les champs ENUM:
'a','b','c'

1)
maintenant j'aimerai recupérer ces champs et les formater avec php pour afficher un menu deroulant dans une page web...les entité du menu déroulant etant : a, b et c...

2)
ensuite j'aimerai avoir la possibilité d'ajouter la valeur 'c' aux valeur possible pour mon champs ENUM.
existe t il pour cela une fonction mySQL ou suis-je obligé de recupérer les champs, et de modifier la structure de mon champs ENUM avec un alter ???
le but est de faire ca en php bien sur

quelqu'un pourrait-il me donner des pistes pour mes deux problèmes merci beaucoup