Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AJOUT VALEUR CHAMP ENUM


Information sur la source

Description

Ajout d'une valeur à la liste existante d'un champ de type ENUM dans MySQL. Ce code ne renvoie rien à l'affichage.
 

Source

  • <?php
  • include('ma_connexion_mysql.php');
  • $table = "MA_TABLE"; /* Nom de la table qui contient le champ ENUM */
  • $nom_enum = "MON_CHAMP_ENUM"; /* Nom du champ ENUM */
  • $valeur = "NOUVELLE_VALEUR"; /* Nouvelle valeur a affecter au champ */
  • function MAJ_Enum($table, $nom_enum, $valeur)
  • {
  • $sql1 = mysql_query("show columns from $table LIKE '$nom_enum'");
  • $data1 = mysql_fetch_assoc($sql1);
  • $enum1 = preg_replace ('!^enum\((.+)\)$!', '$1', $data1['Type']) . ",'" . $valeur . "'";
  • $sql2="ALTER TABLE $table CHANGE $nom_enum $nom_enum ENUM($enum1) NULL DEFAULT NULL";
  • mysql_query($sql2);
  • }
  • MAJ_Enum($table, $nom_enum, $valeur);
  • ?>
<?php
include('ma_connexion_mysql.php');

$table = "MA_TABLE";           /* Nom de la table qui contient le champ ENUM */
$nom_enum = "MON_CHAMP_ENUM";  /* Nom du champ ENUM */
$valeur = "NOUVELLE_VALEUR";   /* Nouvelle valeur a affecter au champ */

function MAJ_Enum($table, $nom_enum, $valeur)
{
$sql1 = mysql_query("show columns from $table LIKE '$nom_enum'");
$data1 = mysql_fetch_assoc($sql1);
$enum1 = preg_replace ('!^enum\((.+)\)$!', '$1', $data1['Type']) . ",'" . $valeur . "'";

$sql2="ALTER TABLE $table CHANGE $nom_enum $nom_enum ENUM($enum1) NULL DEFAULT NULL";
mysql_query($sql2);
}

MAJ_Enum($table, $nom_enum, $valeur);
?>

Commentaires et avis

signaler à un administrateur
Commentaire de neigedhiver le 17/04/2008 20:33:12

Salut,

C'est une source ça ?
Ce serait pas plutôt un snippet ?
Sinon, j'ai du mal à bien comprendre l'intérêt, mais bon...

signaler à un administrateur
Commentaire de depression le 18/04/2008 08:01:27

@neigedhiver

Je vois deux cas d'utilisation:
- Pour ceux qui font l'erreur de ne pas faire de cahier des charges.
- Dans le cas de l'extension d'un projet.


Sinon oui, c'est un snippet.

signaler à un administrateur
Commentaire de neigedhiver le 18/04/2008 08:10:20

Non mais l'intérêt du code, ok, mais d'en faire un snippet, je vois pas, quoi...
C'est une bête requête SQL...

Quant à ceux qui font passer le développement avant l'analyse, ben... ils n'ont qu'à se mordre les doigts plus tard et penser à ne pas négliger l'analyse la prochaine fois.

Pour ce qui est de l'extension d'un projet, mouais... Je suis pas complètement d'accord avec toi : si je fais évoluer mon projet, je vais modifier ma base de données avec un logiciel d'administration (ligne de commande, MySQL Admin, phpMyAdmin), pas avec un script PHP...

signaler à un administrateur
Commentaire de Tetechercheuse le 18/04/2008 08:18:57

L'intéret de cette source n'est pas pour l'administrateur du site qui bien évidemment peux changer les valeurs directement sur la base MySQl mais plutot pour l'utilisateur des pages qui va créer sa liste déroulante lui-même. Je vous trouve très dur les gars. Tout est certainement très facile pour vous mais pas forcément pour les gens comme moi. La vie est une jungle ou seuls les plus forts survivront -> moi je viens de mourrir sous les critiques négatives.

signaler à un administrateur
Commentaire de neigedhiver le 18/04/2008 08:50:02

C'est bien d'être open comme ça...

Si ton script sert pour que l'utilisateur rajoute des valeurs enum en utilisant une requête de type ALTER TABLE, c'est que ta base de données est particulièrement mal foutue.
Désolé de te le dire, mais c'est pas comme ça qu'il faut gérer ses données.

Donc si tu veux plus de détails sur la manière de faire proprement, je t'invite à en discuter en privé, je me ferai un plaisir de te donner quelques rudiments de construction de base de données.

signaler à un administrateur
Commentaire de TheSin le 18/04/2008 11:04:35

Manque une chtite gestion d'erreur, on ne sait pas si la requete s'est exécutée correctement.
Sinon, sûr que c'est plus un snippet qu'un code, et que l'intérêt n'est que très limité puisque ce code n'est utilisé que par "mal conception" de base de données (on ne change jamais la structure d'une table ou de toute une base post développement, sauf mise à jour du code, on ne travaille que sur des ajouts/suppression/modification de leur contenu).

signaler à un administrateur
Commentaire de depression le 18/04/2008 13:13:06

@neigedhiver

Je suis désolé, mais si on est rigoureux, et qu'on sait s'y tenir, on peut largement se passer de phpmyadmin, surtout qu'alter table est simplissime (et des fois t'as des administrateurs réseaux paranoïaques et chiants qui ne veulent pas de phpmyadmin).

Et quand tu fais évoluer un projet, tu peux avoir besoin d'un alter table. C'est pas que le projet est forcément mal conçu, mais simplement que dans le cas d'une nouvelle version, tu peux en avoir besoin. Les nouvelles versions sont bien faites pour ajouter des fonctionnalités non? (ou alors pour faire des corrections).

Et au lieu de juste parler des bonnes techniques de construction à notre nouvel ami en mp, t'aurais meilleur temps de faire un tutoriel dessus, pour que tout le monde en profite.

signaler à un administrateur
Commentaire de Tetechercheuse le 18/04/2008 13:31:27

WOUAAAAAA je pensais pas qu'en postant 3 lignes de code qui correspondent effectivement à un snippet (c'est aussi pour ça que je n'ai pas surchargé avec des contrôles et autres gestions d'erreurs) vous en arriveriez à refaire le monde. Mais au fait, le matin, au réveil, vous vous posez toujours la question beurre ou confiture ??? Ceci dit, j'accepte volontier vos remarques sur l'intéret de mettre à jour un champ ENUM avec une page de code.

A++

signaler à un administrateur
Commentaire de depression le 18/04/2008 22:35:08

@Tetechercheuse

Le matin je mange de la brioche et du nutella.

Non, dans une page, c'est sympa. A la rigueur, tu pourrais agrémenter cela avec un beau formulaire, un select qui te permet de choisir ta base, un autre ta table, le tout avec de l'AJAX en XHTML 1.1 strict et une gestion des erreurs au top, ça fera une source nickel chrome, et un développement qui te sera très profitable.

Pour ma part, j'utilise MySQL en ligne de commande dans un terminal sous GNU/Linux.

Et quand je refais le monde, tout le monde a déja pris au moins 3 bières ^^

signaler à un administrateur
Commentaire de neigedhiver le 18/04/2008 22:43:37

@Depression :

C'est vrai, je pourrais faire un tuto. Mais :
1/ Je ne suis pas DBA : mon truc à moi, c'est le PHP.
2/ J'ai pas forcément le temps de faire un joli tuto => parce que donner des infos en MP et faire un tuto, c'est pas le même niveau... Le tuto, il doit être facile d'accès, faut faire attention à tout ce qu'on dit, donner des exemples génériques, tout ça tout ça
3/ Si je fais un tuto, je le mettrai plutôt sur le site sur lequel je travaille...

signaler à un administrateur
Commentaire de depression le 19/04/2008 00:33:44

Pas de problème.

Mais toi le matin, c'est beurre ou confiture?

(T'as pas répondu à la question).

signaler à un administrateur
Commentaire de neigedhiver le 19/04/2008 01:00:14

Ca dépend. Quel matin ? Celui de 8 ou 9h, ou celui de 14 ou 15h ?

signaler à un administrateur
Commentaire de Delphiprog le 19/04/2008 10:09:02 administrateur CS

tetechercheuse a écrit :
"L'intéret de cette source n'est pas pour l'administrateur du site qui bien évidemment peux changer les valeurs directement sur la base MySQl mais plutot pour l'utilisateur des pages qui va créer sa liste déroulante lui-même."
Alors, cela s'appelle une faute frave : si l'utilisateur lambda a tous les droits sur une base, y compris le droit ALTER, ça craint ! Et pourquoi pas les droits DROP DATABASE ? Les commandes CREATE USER et GRANT ne sont pas faites pour faire bien mais pour servir.

Et que se passe-t-il si l'utilisateur ajoute une valeur déjà existante ? Comme le fait si bien remarquer TheSin, une "ch'tite gestion d'erreur" serait la bienvenue.

Personnellement, j'ai même déjà vu des sites web en ligne où l'on se connecte en root et sans mot de passe à la base de données ! Si, je vous le jure. Et encore, je ne vous parle pas de la non vérification des entrées utilisateur dans les formulaires...

Pour en revenir au débat code/snippet, je ne pencherais ni pour l'un ni pour l'autre dans la mesure où l'intérêt réside uniquement dans la formulation de la requête SQL et qu'elle peut être saisie directement en ligne de commande.

A quand un snippet pour les champs de type SET ? :)

signaler à un administrateur
Commentaire de gerarddupneu le 21/04/2008 16:27:20

Je suis un petit ouvrier qui apprend tout seul en glanant sur Internet.
Je vous trouve donc très ingrats avec tetechercheuse.
Moi personnellement je trouve un énorme interêt à ce script.
Il permet d'exploiter une base de données directement en ligne comme n'importe quelle
secrétaire devant son bureau.
Ok il faut le compléter, ok il faut protéger au niveau des redondances de valeur.
L'intérêt de cette routine est qu'on peut l'habiller comme on veut et l'utiliser comme
on veut depuis le net quitte à passer par une page d'authentification.
Et puis moi vous savez, un snippet , pas un snippet... En plus je ne sais même pas ce que
c'est. Mais un script est un script.
@++

signaler à un administrateur
Commentaire de neigedhiver le 21/04/2008 18:37:11

Pffffffffffff j'préfère même pas répondre à ce genre de commentaire.

La méthode n'est pas bonne : que l'on soit débutant ou expert, cela ne change rien. La méthode n'est pas bonne, point barre.
Une base de données, qu'on soit débutant ou expert, ne s'utilise ni ne s'administre pas n'importe comment. C'est comme ça.
Donc si toi, sous prétexte que tu apprends par toi même et que c'est pas ton métier d'origine, tu trouves ça bien, il n'en reste pas moins qu'utiliser ce script est une hérésie. A la limite, surtout si tu es débutant. Un expert, on peut considérer qu'il sait ce qu'il fait, s'il laisse un script faire un ALTER TABLE (mais la question ne se pose pas : il ne le fait pas, pour les raisons déjà énoncées).

Donc si toi tu veux progresser, un conseil : n'utilise pas ce genre de script.
Un débutant a beaucoup d'excuses pour faire mal (ou ne pas faire au mieux). Mais un débutant n'aura aucune excuse pour utiliser malgré tout un script que tout le monde déconseille, surtout quand ces personnes là sont, à défaut d'experts, au moins des développeurs un minimum chevronnés et expérimentés.

Donc libre à toi d'utiliser ce script : mais la méthode est mauvaise. C'est tout. C'est comme ça. On ne peut pas dire le contraire, parce qu'il y a des éléments objectifs et absolus qui permettent de le dire et de l'expliquer, alors qu'il n'y en a aucun qui tienne la route.

signaler à un administrateur
Commentaire de stay le 22/04/2008 18:06:03

# WOUAAAAAA vous en arriveriez à refaire le monde.

LOL

Je crois que tu es bien loin de comprendre ce qu'est PHP Tetechercheuse.
Tu devrais regarder du côté PDOMySQL pour la sécurité et ne t'arrête pas à une simple requête ;-)

signaler à un administrateur
Commentaire de fredro le 18/06/2009 09:32:37

Bravo tetechercheuse pour ton snippet !
je me permet de rendre positif ton post, au regard des commentaires précédents (non dénué de sens pour autant).
Une recherche google m'a permit de trouver ta réponse rapidement.
;-)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

pb sur mysql avec requete select * from TABLE IN (select ...) [ par malibu23 ] Salut j ai un pb sur mysql lorsque je fais un requetedu type select CHAMP from TABLE where CHAMP IN ( select CHAMP from TABLE where CHAMP = VARIABLE); MySQL DATETIME [ par eax ] saluty'a qqun qui pourrait me dire comment faire pour rechercher des données dans une table MySQL:j'ai un champ `cree_le` qui est un timestamp (DATETI Insertion MySQL [ par mightteam ] Salut voila je cherche un moyen rapide d'inserer plusieurs enregisrtement en meme temps sans devoir tout retaper .mon problème est le suivant : J'ai Champ Mysql dans textarea...retour à la ligne non conservé. [ par stevethx40 ] Salut !!Voilà j'ai un soucis que j'ai retrouvé plusieurs fois sur le forum...mais pas de réponse qui ont marché avec moi...J'ai un formulaire qui envo Question requete mysql [ par zzzzzz ] salut j'ai plusieurs champs dont 1 champ nommé "id" qui est en auto increment et un autre champ nommé "titre" (et d'autres champs qui sont pas utiles insertion mysql/php [ par yochweill ] Bonjour voila mon probleme lorsque j execute mon script d insertion il m' affiche qu il ne connait pas la variabla action je ne sais pas pourquoi v passage d'une valeur de checkbox ds requête mysql [ par arnold002 ] Bonjour,J'ai créé un formulaire avec champ texte et checkbox. Le voici :&lt;form name="choix" action="test4.php" method="post"&gt;&lt;input type="text insertion texte [ par MasterJmC ] Salut est ce que quelqu'un pourrait me dire comment faire pour insérer des caractères dans un champ texte de formulaire à partir d'une image ou d'un b champ Text BDD Mysql et execution code PHP [ par cecelecyborg ] Bonjour à tous, Je cherche à executer du code php contenu dans un champ Text d'une base de données MySQL. Est-ce que cela est faisable, et si oui, u pertit problème d'insertion de dump mysql [ par luciolis ] Bonjour,je suis chez lycos webcenter et j'ai un problème d'insertion de base dans eskuel (phpmyadmin marche pas) :quand je valide l'insertion du dump


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.