Ajout valeur champ enum

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 079 fois - Téléchargée 16 fois

Contenu du snippet

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

Source / Exemple :


<?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);
?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
18 juin 2009

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.
;-)
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
# 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 ;-)
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
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.
Messages postés
1
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
21 avril 2008

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.
@++
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
28
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 ? :)
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_Tetechercheuse)