Plusieurs ID ds un champ:php/mysql

Fermé
ben1403 Messages postés 21 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 7 juillet 2008 - 29 mai 2008 à 12:28
macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 - 29 mai 2008 à 12:40
Bonjour, je n'arrive pas a afficher des donnees provenant d'une requete.je m'explik:
j'ai 2 tables:
- Contact (id,nom,prénom,sectorId) le champ sectorId est de type blob.
- Sector ( id,name) ici le champ id est de type varchar
il existe une relation entre les 2 tables(sector.id=contact.sectorId). Un contact peut avoir plusieurs sector. Donc on retrouve des contacts ki ont ds le champs sectorid,plusieurs sector.
exemples:
Dupond 84638534290183
Octave 84638534290183,12543210987640,58574543423232
dupond a un seul sector et octave en a 3. les differents sector sont separes par une virgule ds le champs contact.sectorId de type blob
je veux afficher un contact et le ou les noms de ses sector.
voici ce ki se trouve dans ma page php:

<?php
include("connections/connex.php");

// on se connecte à MySQL
MYSQL_CONNECT($hostname_connex,$username_connex,$password_connex) or die("Impossible de se connecter à la base de données");
$ok=mysql_db_query($database_connex,"SELECT contact.lastName as lname,sector.name as sname from
contact,sector where contact.sectorId=sector.id");
while($data=mysql_fetch_array($ok)){
echo '<div>'.$data['lname'].' '.$data['sname'].'<div>';
}
?>

avec ce code, il affiche seulement les contacts qui ont un seul sector. il n'affiche pas les contacts ki ont 0 ou plusieurs sector. alors kil doit m'afficher par exemple pour dupond: agriculture et pour octave: agriculture,santé,éducation
NB:ce n'est pas moi ki est concu la BD,je l'ai trouve com ca ds l'entreprise,et je ne dois pas toucher a sa structure.
comment faire pr afficher les differents sector d'un contact, ou ne rien n'afficher kan il n'a pas de sector????
merci d'avance.

1 réponse

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
29 mai 2008 à 12:40
Arrrgh !

il existe une relation entre les 2 tables(sector.id=contact.sectorId).
Un contact peut avoir plusieurs sector.

Et un Sector a plusieurs contacts.
=> Relation N-N
=> Il faut créer une table intermédiaire
ContactSector :
IdContact
IdSector
Et en plus SectorId est un Blob !!!

Vu que tu ne peux pas toucher à la structure d ela BDD, il faudra bidouiller sévère...
je veux afficher un contact et le ou les noms de ses sector.

Commence par chercher le Contact dans la table CONTACT.
Puis prends le CONTACT.sectorId, décompose le en Ids (avec la fonction php explode, par exemple)
Et enfin, SI il y a au moins un sectorId, fais un SELECT dans la table SECTOR avec la clause SECTOR.ID IN (<les Ids que tu as récupérés>)


PS :
Règles décriture
0

Discussions similaires