Page 1 sur 1
inverse de concat?
Posté : 21 janv. 2007, 13:11
par Invité
bonjour
j ai cherché un commande mysql pour faire le contraire de concat mais j ai pas trouvé, qlqun peut me donner une piste pour faire ca .
exemple:
j ai une liste d id dans un champs : -50-15-48-45-50
pour ajouter un autre id au champs j utilise concat mais pour le retirer?
merci pour vos rep.
Posté : 21 janv. 2007, 13:52
par Cyrano
Regarde du coté de la fonction SUBSTRING()
Posté : 21 janv. 2007, 19:02
par Invité
merci mais je vois pas trop comment m en servir, jai regarde la doc et je bloque completement!
du coup je passe en array
$Req = "SELECT * FROM parametres WHERE IdMemb=".$_SESSION['IdMemb']."";
$Cur = mysql_query($Req);
$Id = mysql_result($Cur,0,"champs");
$N = explode ("-",$Id);
$A = explode ("-",$_GET['Raz']);
$result = array_diff ($N, $A);
$c = implode ("-",$result);
print_r($c);
// et je refais l update
mais c est super lourd comme code!! y a pas mieuxc que ca ?
Posté : 21 janv. 2007, 20:54
par zeus
Bonsoir,
je commencerais pas une recommandation : si, dans un champ, tu as une liste d'id, c'est que ta base n'est pas normalisée. Normalement, tu devrais avoir une seule information par champ.
Sinon, SUBSTRING ne peut faire que des opérations basique.
Sans procédures stockées, je ne vois pas comment tranformer ton code PHP en SQL
Désolé
Posté : 22 janv. 2007, 00:26
par Invité
ok pour substring tant pis
par contre normalisé je vois pas trop comment faire
je propose aux membres d enregistrer les liens qu ils ont clickes.
donc dans un champs idlien, je mets les id des liens, sachant qu il peut y avoir plus de 400 id dans le champs par membre,
idmembre idlien(-23-48-46-45-48-78 etc etc =)
je ne voulais pas faire une table avec
idmembre idlien
idmembre idlien
etc etc 2000 membres * 400 liens !!!
ai je eu tort ???!

Posté : 22 janv. 2007, 02:57
par Ajoloca
Bonsoir,
Je ne vais pas te dire si tu as eu tort ou raison, mais poses-toi la question autrement.
Avec cette méthode
Je dois faire du code qui fait
Un accès à la base en lecture (pour récupérer les infos)
Transformation des infos en tableaux (création en mémoire de 3 tableaux)
Comparer les résultats
Reconstruction de l'enregistrement
Un autre accès à la base pour réécrire les infos (qui en plus d'une écriture demande aussi une recherche)
Avec l'autre méthode Code : Tout sélectionner
DELETE FROM ta_table WHERE idlien = 'lien_id' AND idmembre='membre_id'
et le PB est résolu.
À toi d'en tirer une conclusion.
Et dans le sens de l'ajout ??? réfléchis aux deux solutions.
Posté : 22 janv. 2007, 09:04
par zeus
Comme le montre trés bien Ajoloca, dans une base de données, la place utilisée n'est pas le critère de choix.
Non seulement l'espace utilisé par une table suplémentaire serait infime par rapport à ta méthode, mais les traitements sur cette table serait beaucoup plus performant. cf exemple d'Ajoloca
Posté : 22 janv. 2007, 10:30
par Invité
merci pour la reponse, je vais tester ca ..
merci encore.