Supprimer des champs ?

Résolu
cs_brezoneg Messages postés 104 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 19 août 2015 - 25 juin 2007 à 17:46
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 - 26 juin 2007 à 10:55
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

cs_brezoneg Messages postés 104 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 19 août 2015
25 juin 2007 à 22:42
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);}
3
cs_sebastien_et_typh Messages postés 289 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 11 juin 2010 3
25 juin 2007 à 17:52
tu a essayer de faire :
$sql = "ALTER TABLE datelevp DROP act%";
mysql_query($sql);


Personne ne peut se permettre de juger l'autre....
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 juin 2007 à 18:57
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+
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
26 juin 2007 à 10:55
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+
0
Rejoignez-nous