[MySQL] Modifications valeurs sur un champ

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [MySQL] Modifications valeurs sur un champ

par eMule-Star » 04 déc. 2005, 12:25

Ah oui c'est vrai c'est plus logique en tronquant au moins c'est sur que ça coupe la chaine au début ;)

Encore merci c'est super :wink: :lol:

par ouckileou » 03 déc. 2005, 23:43

Je trouve aussi que la doc MySQL est un peu fouillie, et le moteur de recherche pas vraiment performant...

Pour savoir si ta requête est bonne il suffit de la tester :lol:
D'abord avec un SELECT hein ;)

Mais je pense qu'elle marche, je trouve ça un peu plus tordu puisqu'en fait ce que tu veux faire c'est tronquer, et toi tu remplaces par "rien"...

M'enfin le résultat est le même :)

Moi j'avais ça :

Code : Tout sélectionner

UPDATE table SET referer=SUBSTRING(referer,24) FROM tablename WHERE referer LIKE ('http://www.monsite.com/%');

par eMule-Star » 03 déc. 2005, 23:33

Merci beaucoup pour ce lien, ça fait quelques temps que je le cherche mais je trouve que la doc MySQL est énorme pour trouver quelque chose :lol: :roll:
Je vois que la fonction REPLACE existe ! je pense que c'est ce qu'il me faut !
Je testerais demain tout cela, et encore merci ;)

EDIT: rapidement, une requete comme celle là ferait-elle ce que je veux ?
UPDATE `pagesvues` SET referer=REPLACE(referer,'http://www.monsite.com/','') WHERE referer LIKE 'http://www.monsite.com/%'
Parce qu'en fait, il faut supprimer 'http://www.monsite.com/' uniquement s'il est en début de chaine, et non pas ici par exemple:
http://autresite.com/?referer=http://www.monsite.com

par ouckileou » 03 déc. 2005, 23:28

Salut,

ça me semble possible, et si toutes les url "referer" correspondant à ton site sont bien de cette forme : http://www.tonsite.com/ ça va être très simple

Tu as la liste des fonctions de manipulation de chaîne ici :
http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

On y voit notamment SUBSTRING, équivalent de substr() en PHP

Pour remplacer dynamique la valeur d'une colonne, il suffit de faire ça :

Code : Tout sélectionner

UPDATE comptes_clients SET solde = ABS(solde)
On met dans la colonne, la valeur de la colonne traitée par la fonction

Voici des pistes, fait quelques essais tout seul et je t'aiderai s'il faut ;)

[MySQL] Modifications valeurs sur un champ

par eMule-Star » 03 déc. 2005, 23:13

Hello à tous,

Le titre n'est pas très explicite, donc je m'explique plus clairement.
En fait, je possède une table où j'enregistre toutes les pages vues par mes visiteurs, et j'ai un champ "referer" qui contient donc la page d'où ils viennent.
Actuellement je suis un peu à la recherche d'optimisation pour tout ça, et je voudrais donc que pour le referer, si le site est le mien, que son adresse ne s'affiche pas.
Par exemple, mon site est www.monsite.com, j'ai ces enregistrements:
Page vue - Referer
/?page=accueil - http://www.monsite.com/index.php
/?page=accueil - http://autresite.com/test.php

Je voudrais donc modifier les enregistrement comme le premier:
Page vue - Referer
/?page=accueil - http://www.monsite.com/index.php

en :

Page vue - Referer
/?page=accueil - /index.php

En clair, ces enregistrements sont retournés par la requete:
SELECT * FROM `pagesvues`WHERE referer LIKE 'http://www.monsite.com/%'
Mais est-il possible de faire cela en une requete sans passer par plusieurs INSERT, UPDATE et SELECT en PHP ?

En fait, me faudrait une fonction MySQL qui puisse me modifier une chaine dans un champs, genre un truc comme ça:
UPDATE `pagesvues`SET referer= REPLACE('http://www.monsite.com/', '', referer) WHERE referer LIKE 'http://www.monsite.com/%'
Ca serait donc pour modifier les enregistrements déjà enregistrés, pour les prochains ça je sais faire avec PHP ...

Vous avez compris ce que je voudrais dire ?

Merci d'avance si vous avez une solution pour cela :wink:

@++