[RESOLU] Cacher ou afficher les infos du membre

Eléphant du PHP | 386 Messages

01 avr. 2013, 22:56

Bonjour,

Dans ma base de donnée j'ai :

- Une table wa_communaute :

Code : Tout sélectionner

id = Auto Increment ; pseudo ; pass ; nom ; prenom ; mail ; sexe ; ville ; jour ; mois ; annee etc...
- Une table wa_showhide :

Code : Tout sélectionner

id_membre = Auto Increment, Qui correspond à l'id du membre dans la table "wa_communaute" ; mail = INT ; jour = INT ; mois = INT ; annee = INT ; ville = INT etc...
Les champs de la table wa_showhide sauf id_membre ont pour valeur 0 au départ et 1 si les champs sont cachés

Maintenant, à partir des tables, j'aimerais afficher un select à coté de chaque infos : Public (Afficher les infos au public), Amis (Afficher les infos uniquement aux amis), Moi (Afficher les infos qu'à moi).
Pour les amis, j'ai au préalable, une table wa_amis avec :

Code : Tout sélectionner

id_membre = Qui correspond au membre qui veut ajouter un ami ; id_ami = Qui correspond à l'ami ; confirm = '0','1', date
Ca fait 4 jours que je suis dessus et je ne sais pas comment faire en PDO pour faire la relation avec tout ça :( même en lisant les tutos sur le site du zéro :cry:

J'aimerais qu' un membre puisse choisir d'afficher les infos à ses amis, ou à lui seulement, ou au public, tout ça avec un select.

Merci beaucoup d'avance pour votre aide ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 avr. 2013, 23:19

salut,

ce n'est pas un problème due à pdo, mais un problème SQL.

il te faut stocker le "type de diffusion" (amis, tous, que moi). A toi de savoir s'il y a un paramètre général (pour tout ce qui me concerne) ou détaillé (par partie, jusqu'a que élément).
Dans le 1er cas, une colonne dans la table membre suffit, dans le second il faut l'ajouter au autre table (celle de publication).

Ensuite, coté requête lorsque tu sélectionne les infos, tu regarde si la personne qui affiche la page est amis, ou pas avec la personne dont on affiche le profile (ou autre) et si le flag.

l'algorithme
- Quel est le type de diffusion de ce que j'affiche (à toi de sélectionner dans la bonne table)
- Si la diffusion est "public" tu affiche
- Si la diffusion est "privé" (que moi) tu affiche que si c'est le propriétaire qui affiche la page
- Si la diffusion est "amis" il faut que tu fasse un select sur la table amis pour voir si la personne qui affiche la pages est un amis du propriétaire.
si oui affiche, si non affiche pas.
tu récupère les type de diffusion avec le reste des données de ce que tu affiche, après les requete au fur et a mesure, tu ne pourras le faire en une seule fois les données étant différentes.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

02 avr. 2013, 00:16

Merci pour ta réponse.

J'aimerais utiliser un type de diffusion pour chaque infos à afficher.
J'ai pas trop compris l'histoire d'ajouter une autre table (celle de publication)
Donc si je résume :

Je créer un nouveau champs dans la table membre "type_diffusion".

Dans ma page profil, le type de diffusion est réglé par défaut au Public.
Maintenant je veux que mon email et ma ville soit visible que par mes amis, je fais un select :
<form action="modif.php" method="post">
<select name="type_diffusion">
<option value="Public">Public</option>
<option value="Amis">Amis</option>
<option value="Moi">Moi</option>
</select>
<input type="submit" value="Modifier" />
</form>
Ensuite ma page modif.php contiendrais :
$type_diffusion = $_POST['type_diffusion'];
$id = $_SESSION['id'];

$req = $connect->prepare('UPDATE wa_communaute SET type_diffusion = :type_diffusion WHERE id = :id');
$req->execute(array('type_diffusion' => $type_diffusion,'id' => $id));
$req ->closeCursor;
Ensuite imaginons que je suis un membre avec l'id = 1. Je suis amis avec l'id = 2.
Et je veux afficher certaines infos à mes amis :
$req = $connect->query('SELECT ville, mail FROM wa_communaute WHERE ..................');
$result = $req->fetch();

if(..............) {
    echo $result['ville'];
    echo $result['mail'];
} else {
    echo 'Vous devez être amis avec ce membre pour voir ces infos !';
}
Le problème c'est que je ne sais pas quoi mettre après WHERE et quel condition faire pour afficher uniquement les infos à mes amis :?