Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1762 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Ecraser une table dans MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ecraser une table dans MySQL

n°979192
astik89
Posté le 11-02-2005 à 22:39:08  profilanswer
 

Bonsoir,
j'ai encore un problème (hé oui c'est dur d'être débutant!)
j'ai rempli toute une base de données avec 44 tables et je viens de me rendre compte que j'ai oublié un caractère aux chaînes d'un champ répété dans chaque table.
Je m'explique: dans toutes mes tables je retrouve le champ "traduction" seulement j'ai rentré le mot traduit et je me rend compte qu'il faut que je l'encadre de doubles guillemets.
Ma question est donc la suivante:
est-ce qu'il est possible
   -de lire les tables existantes et d'écraser chaque enregistrement par le nouveau
   -ou alors de lire les tables existantes et de tout réécrire correctement dans une nouvelle base
 
Et je voudrais surtout savoir comment, parce que j'ai bien ma boucle pour lire la base (donc il ne devrait pas y avoir grand chose à changer pour écrire dedans) il me manque simplement la ligne pour écrire dans la table. j'ai cherché sur google mais je n'ai rien compris, j'ai trouvé une commande INSERT TO mais je n'arrive pas la faire fonctionner.
 
merci pour votre aide
 
Astik


Message édité par astik89 le 11-02-2005 à 22:39:22
mood
Publicité
Posté le 11-02-2005 à 22:39:08  profilanswer
 

n°979197
omega2
Posté le 11-02-2005 à 22:52:11  profilanswer
 

update matable SET macolone1="valeur1" where mesconditions
 
Si je me souviens bien, il y a aussi une solution qui ressemble à:
update matable (macolone1,macolone2) ("valeur1","valeur2" )where mesconditions
mais j'ai jamais retenu la syntaxe exacte.

n°979209
astik89
Posté le 11-02-2005 à 23:09:05  profilanswer
 

Je ne le place pas comme ça dans ma page php, il lui faut une fonction, non? Est-ce que c'est mysql_query()?
Sinon je voulais savoir si je pouvais mettre une variable à la place de ma_table (j'ai essayé mais je n'ai pas réussi) comme ça je la définirai avec un switch.
 
Merci

n°979213
KangOl
Profil : pointeur
Posté le 11-02-2005 à 23:13:27  profilanswer
 

phpmyadmin tu connais ?


---------------
Nos estans firs di nosse pitite patreye...
n°979222
omega2
Posté le 11-02-2005 à 23:23:13  profilanswer
 

Ben d'aprés ses dire, il a déjà fait un script qui liste tout le contenu de sa table, c'est pas difficile de l'adapter pour envoyer une requête pour chaque ligne qui pose probléme.
Je vais quand même pas lui créer un script tout prés. ;) Par contre, je lui ai indiqué la bonne requête de mise à jour de la ligne. Enfin, c'est vrai que je suis partie que l'idée qu'il s'y conait un minimum en sql et en php.

n°979245
astik89
Posté le 11-02-2005 à 23:53:43  profilanswer
 

je n'avais pas penséà passer par phpmyadmin (j'ai pas encore acquis tous les réflexes).
J'ai donc entré cette commande dans la console sql:

Citation :

UPDATE admin_menu SET `traduction`='\"'`traduction`'\"'


Il y a apparemment un problème de syntaxe.
Pouvez vous m'aiguiller
merci encore

n°979251
omega2
Posté le 12-02-2005 à 00:05:11  profilanswer
 

'\"'`traduction`'\"'
 
chaine 1 : '\"'
nom de colone : `traduction`
chaine 2 : '\"'
Soit tu inséres une chaine auquel cas il faut pas la refermer avant la fin du texte soit tu inséres du texte autour du contenu actuel de la colone auquel cas il faut que u mettes des + entre les chaines de caractéres et le nom de la colone.
Au fait, si tu met pas de where condition il va te modifier le contenu de cette colone pour toutes les lignes.

n°979258
astik89
Posté le 12-02-2005 à 00:16:46  profilanswer
 

ce qui revient à ça,non?  

Citation :

UPDATE admin_menu SET `traduction`='\\"'+`traduction`+'\\"'


mais ça ne fonctionne encore pas
pour le WHERE, c'est voulu, je veux corriger tous mes enregistrements.

n°979294
omega2
Posté le 12-02-2005 à 00:59:46  profilanswer
 

Vu que les chaines de caractéres commencent par des ' simple, je suis pas sur qu'il y ai besoin d'un \ devant le ".
 
Et bête de moi, je viens de réaliser que j'ai mal compris ta demande. En fait, c'est pas le contenue de la colone que tu veux changer mais le nom de la colone.
Avec phpmyadmin, tu peux le faire directement en cliquant sur le petit stylo qu'est situé sur la ligne de la colone à corriger quand on regarde la desciption de la table.
en SQL de mysql, c'est la requête
"ALTER TABLE `nomTable` CHANGE `nomColone` `nouveauNom` typeDeLaColone " le type de la colone doit contenir aussi bien la taille que le type de donnée (char, interger ...) que les "not null" éventuel. Bref, c'est plus simple de le changer sans erreur en utilisant mysql.
 
Désolé de t'avoir fait perdre tant de temps sur une fausse piste.

n°979317
Profil sup​primé
Posté le 12-02-2005 à 04:45:13  answer
 

omega2 a écrit :

Vu que les chaines de caractéres commencent par des ' simple, je suis pas sur qu'il y ai besoin d'un \ devant le ".
 
Et bête de moi, je viens de réaliser que j'ai mal compris ta demande. En fait, c'est pas le contenue de la colone que tu veux changer mais le nom de la colone.
Avec phpmyadmin, tu peux le faire directement en cliquant sur le petit stylo qu'est situé sur la ligne de la colone à corriger quand on regarde la desciption de la table.
en SQL de mysql, c'est la requête
"ALTER TABLE `nomTable` CHANGE `nomColone` `nouveauNom` typeDeLaColone " le type de la colone doit contenir aussi bien la taille que le type de donnée (char, interger ...) que les "not null" éventuel. Bref, c'est plus simple de le changer sans erreur en utilisant mysql.
 
Désolé de t'avoir fait perdre tant de temps sur une fausse piste.


heu non comme je le comprends il veut bien changer le contenu des enregistrement du champ traduction de chaque table
 
 
essaye ainsi :  
UPDATE tatable set traduction = CONCAT('\"',traduction,'\"')  
avec ton script t'as juste a modifier le nom de la table  
 
 


Message édité par Profil supprimé le 12-02-2005 à 04:51:42
mood
Publicité
Posté le 12-02-2005 à 04:45:13  profilanswer
 

n°979322
astik89
Posté le 12-02-2005 à 08:50:08  profilanswer
 

En effet je veut modifier le contenu de mon champ
 
Merci spike, ta solution fonctionne
Je vais maintenant essayer de l'intégrer dans un script.
 
Je voulais donc savoir s'il est possible de définir une variable $table et de l'appeler ensuite

Citation :

$table="matable";
$sql = 'UPDATE .$table. set traduction = CONCAT(''\\"'',traduction,''\\"'')';
mysql_query($sql);


Ca devrait fonctionner, non?
 
Merci encore


Message édité par astik89 le 12-02-2005 à 08:52:06
n°979334
cerel
Posté le 12-02-2005 à 10:44:54  profilanswer
 

Oui et non,  
tu utilises des simples quotes, donc php ne parse pas les noms des vars.
Donc faut que tu fasse comme ca :

Code :
  1. $table="matable";
  2. $sql = 'UPDATE '.$table.' set traduction = CONCAT(''\\"'',traduction,''\\"'')';
  3. mysql_query($sql);

n°979337
astik89
Posté le 12-02-2005 à 10:54:50  profilanswer
 

Merci
Ca fonctionne.
Il y a néammoins eu un petit problème, lorsque l'enregistrement à modifier était juste un seul mot pas trop long (max 8 caractères env.) il a recopié ce mot devant tous les enregistrements suivants. A la fin j'arrivai à "mot1"mot2"mot3"mot3"plusieurs mots"
Mais j'ai tout modifié à la main pour gagner du temps.
Mais il faudrait savoir d'où viens le problèmes.

n°979360
cerel
Posté le 12-02-2005 à 11:51:47  profilanswer
 

Pour ca il faudrait voir le code que tu as utilise.

n°979362
astik89
Posté le 12-02-2005 à 11:53:27  profilanswer
 

Je l'ai utilsé directement en sql
UPDATE matable set traduction = CONCAT('\"',traduction,'\"')


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Ecraser une table dans MySQL

 

Sujets relatifs
[PHP/MySQL] LIMIT en partant de la finProblème de connexion Mysql 4.1x PHP 4
Erreur MySQL Illegal mix of collations, Help me please !![mysql] ne pas s'interrompre en cas d'erreur d'execution
help php liste déroulante via mysql[Java MySQL] Problème de Savepoints !
probleme avec l'api c Mysqlerreur sur une commande MySql...
dump MySQLMigration Access/VBA/Windows=> PHP/MySQL/Linux
Plus de sujets relatifs à : Ecraser une table dans MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR