Ecraser une table dans MySQL - PHP - Programmation
Marsh Posté le 11-02-2005 à 22:52:11
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.
Marsh Posté le 11-02-2005 à 23:09:05
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
Marsh Posté le 11-02-2005 à 23:13:27
phpmyadmin tu connais ?
Marsh Posté le 11-02-2005 à 23:23:13
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.
Marsh Posté le 11-02-2005 à 23:53:43
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
Marsh Posté le 12-02-2005 à 00:05:11
'\"'`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.
Marsh Posté le 12-02-2005 à 00:16:46
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.
Marsh Posté le 12-02-2005 à 00:59:46
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.
Marsh Posté le 12-02-2005 à 04:45:13
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 ". |
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
Marsh Posté le 12-02-2005 à 08:50:08
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"; |
Ca devrait fonctionner, non?
Merci encore
Marsh Posté le 12-02-2005 à 10:44:54
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 :
|
Marsh Posté le 12-02-2005 à 10:54:50
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.
Marsh Posté le 12-02-2005 à 11:53:27
Je l'ai utilsé directement en sql
UPDATE matable set traduction = CONCAT('\"',traduction,'\"')
Marsh Posté le 11-02-2005 à 22:39:08
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