inverse de concat?

Invité
Invité n'ayant pas de compte PHPfrance

21 janv. 2007, 13:11

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.

Mammouth du PHP | 19672 Messages

21 janv. 2007, 13:52

Regarde du coté de la fonction SUBSTRING()
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

21 janv. 2007, 19:02

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 janv. 2007, 20:54

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 :-k

Désolé
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

22 janv. 2007, 00:26

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 ???! :D :?:

ViPHP
ViPHP | 1961 Messages

22 janv. 2007, 02:57

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 janv. 2007, 09:04

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

22 janv. 2007, 10:30

merci pour la reponse, je vais tester ca ..

merci encore.