Supprimer des champs ?

Résolu
Signaler
Messages postés
104
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
19 août 2015
-
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
Bonjour,
J'ai une table dont la stucture est la suivante :
-- Structure de la table `datelevp`
CREATE TABLE `datelevp` (
  `id_nom` int(10) NOT NULL auto_increment,
  `nom` text NOT NULL,
  `act1`  NOT NULL,
  `act3`  NOT NULL,
  PRIMARY KEY  (`id_nom`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
-- Contenu de la table `datelevp`
--
INSERT INTO `datelevp` VALUES (1, Nom, '15', '12');
INSERT INTO `datelevp` VALUES (2, BIBI, '10', '17');

Lorsque je fait des remise à zéro de mon application  et donc de ce genre de table,( en PHP)je souhaiterais conserver les deux premier champ ( id_nom et nom)avec leur enregistrements et supprimer tous les autres champs de la forme actn ( ces champs sont créés et supprimeés dans l'appliation et donc le nombre indice peut être n'importe lequel)
Le piste, c'est avec :

sql="ALTER TABLE datelevp   DROP act1";
mysql_query($sql);

mais peut t'on faire un truc du style :
sql="ALTER TABLE datelevp   DROP  tous les champs comme %act% ";
mysql_query($sql);
mais je vois pas comment.
j'espère avoir été clair ?

4 réponses

Messages postés
104
Date d'inscription
samedi 6 novembre 2004
Statut
Membre
Dernière intervention
19 août 2015

En fait en attendant j'ai essayé ceci :( je récupère les enregistrements, je supprme la table , je recré la tale et je rajoute les enregistrement seulement pour les champs gardé) c'est tarabicoté, mais ça marche.
Merçi pour vos solutions

$result = mysql_query("SELECT * FROM datelevp ");
$nblignes = mysql_numrows($result);
for ($j=0;$j<$nblignes;$j=$j+1)
{$id =  mysql_result($result,$j,"id_nom");
array_push ($dateid,$id);
$nom =  mysql_result($result,$j,"nom");
array_push ($datenom,$nom);}
$sql="DROP TABLE datelevp";
mysql_query($sql);
$sql="CREATE TABLE datelevp (
  id_nom int(10) NOT NULL auto_increment,
  nom text NOT NULL,
  PRIMARY KEY  (id_nom)
) TYPE=MyISAM AUTO_INCREMENT=1
";
mysql_query($sql);
for ($j=0;$j<$nblignes;$j=$j+1)
{$requete="INSERT INTO datelevp(id_nom,nom)
        VALUES('$dateid[$j]','$datenom[$j]')";
$verif = mysql_query($requete,$id_connex);
if($verif);}
Messages postés
289
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2010
3
tu a essayer de faire :
$sql = "ALTER TABLE datelevp DROP act%";
mysql_query($sql);


Personne ne peut se permettre de juger l'autre....
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,

listes les colonnes à supprimer avec SHOW COLUMNS

SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern']

Et ensuire, fait ton alter pour chacune d'entre elles...

A+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut...

Je me permet d'insister car ta façon de faire n'est vraiment pas propre :

$fields = mysql_query("SHOW COLUMNS FROM datelevp LIKE 'act%'");
while ( $row = mysql_fetch_row($fields) {
$field = $row[0];
mysql_query("ALTER TABLE datelevp DROP $field");
}


A+