Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 13h16   #1 (permalink)
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut Champs unique séparé par le même caractère

Bonjour,

Je possède un champs de type char contenant plusieurs mots (sans espace) séparé toujours par le même caractère (chr 10).

Existe t'il un moyen pour faire une requête en php permettant de faire ceci:
Requêtes recherchées :
  1. récupérer le nombre total de mots
  2. récupérer les mots situé entre une limite basse et une limite haute, par exemple récupérer les mots situés entre le 5ème et le 10ème mot

merci
Daviloppeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 13h54   #2 (permalink)
Membre émérite
 
Avatar de torvalds17
 
Date d'inscription: mars 2004
Localisation: 75013
Âge: 25
Messages: 825
Par défaut

Salut

Qu'est-ce que tu appelles "Champ unique", quel est ton contexte (base de données, fichier texte, fichier xml...) ?

Au pif je te dirais bien de regarder du côté de la fonction explode()...
__________________
référence PHP, référence JavaScript,
mettez-les dans vos marque-pages et lisez-les avant de poster ici ;-)
torvalds17 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 14h10   #3 (permalink)
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut

Pour résumer le contexte, j'utilise une bdd mysql.

Dans cette bdd, je possède une table "test" ayant un champs de type char appelé "listemots" et un de type int appelé "id".

Dans listemots , je stocke un ou plusieurs mots séparé par le caractère chr(10).

par exemple :

id->1 listemots->camionXvoitureXcasserole
id->2 listemots->rougeXvertXbleu
id->3 listemots->solitaire
id->...

(ici X symbolise le chr(10))

En utilisant la fonction explode de php je dois pouvoir effectivement parvenir à mon résultat, mais je souhaiterais autant que possible faire une solution 100% mysql si cela est possible.
Daviloppeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 14h28   #4 (permalink)
Modérateur
 
Avatar de CinePhil
 
Nom : Philippe Leménager
Date d'inscription: août 2006
Localisation: Toulouse
Âge: 46
Messages: 4 797
Envoyer un message via MSN à CinePhil
Par défaut

Pourquoi y a t-il plusieurs mots accolés les uns aux autres et, d'après ton exemple, apparemment sans rapport ?

Si encore tu travaillais sur une phrase, donc des mots séparés par des espaces, on pourrait comprendre mais là il y a vraisemblablement une erreur de modélisation des données.

Parle nous du cas concret plutôt que d'une table test afin qu'on comprenne mieux de quoi il s'agit et ce que tu veux faire.
__________________
Philippe Leménager.
Futur ingénieur CNAM, ingénieur d'étude à l'École Nationale de Formation Agronomique.

« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ».
(Nicolas Boileau)
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 14h40   #5 (permalink)
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut

Alors sans passer par le mode test, voici ma situation réelle.

Je possède une table listeamis comprenant plusieurs champs:

nom : id
type : int (autoincrement)

nom : username
type : varchar(20)

nom : amis
type : text

Le but est de stocker pour un username la liste de tous ces amis dans le champs amis.

id->1 nom->toto amis->victor,paul,valentine
id->2 nom->paul amis->toto,juliette,alex
id->...

Pour le moment je gère l'ajout d'amis en ajoutant chr(10) et en ajoutant l'amis ensuite.
Le champs amis est donc de la forme amis1(chr10)amis2(chr10)amis3...
Daviloppeur est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 15h07   #6 (permalink)
Modérateur
 
Avatar de CinePhil
 
Nom : Philippe Leménager
Date d'inscription: août 2006
Localisation: Toulouse
Âge: 46
Messages: 4 797
Envoyer un message via MSN à CinePhil
Par défaut

C'est bien ce que je disais, il y a une erreur de modélisation !

Règle de gestion :
Un user peut avoir pour ami des users et un user peut être considéré comme ami par d'autres users.

MCD :
user -0,n----etre_ami----0,n- user

Tables :
user (user_id, username...)
amitie (a_id_user, a_id_ami...)

Quels sont les amis de Daviloppeur ?
Code SQL :
SELECT u2.username
FROM user AS u1
INNER JOIN amitie AS a ON u1.user_id = a.a_id_user
  INNER JOIN user AS u2 ON a.a_id_ami = u2.user_id
WHERE u1.username = 'Daviloppeur'
ORDER BY u2.username
__________________
Philippe Leménager.
Futur ingénieur CNAM, ingénieur d'étude à l'École Nationale de Formation Agronomique.

« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ».
(Nicolas Boileau)
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 15h20   #7 (permalink)
Membre à l'essai
 
Date d'inscription: juin 2009
Messages: 49
Par défaut

Merci beaucoup pour ta réponse.

Je vais revoir mon MCD et modifier en conséquence.
Daviloppeur est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 01h48.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.