IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Système "d'abonnement a la facebook" en php/pdo


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut Système "d'abonnement a la facebook" en php/pdo
    Bonsoir tout le monde ,bon je vous explique mon problème ,et comme ça je partage pour ceux qui pourrais ce retrouver bloqué comme moi ,je suis encore loin d'être un pro mais voila.

    j’essaie par tout les moyens de faire une sorte de bouton d'abonnement ,qui soit relié a chaque membres connecté ,j'ai déjà fais l'espace membres ,qui passe de page en page par SESSION ,et sur une de ces page il y a des centaines de pages auxquels s'abonner ,avec chacun un bouton ,et je voudrais que les gens ne puissent s'abonner qu'a un maximum de 10 pages par utilisateur, dans ma base de données il y a des lignes pour chaque utilisateur avec id,pseudo... et une valeur (je suis pas sur du terme) qui s'appelle jeu1 ,une autre jeu2 ,jeu3 ,jeu4 ,ect jusque 10,et selon le nombre de cet valeur je sait a quel page(jeu) il est abonné (ex : jeu1 =132 = battlefield) Je penses que vous me suivez jusque la ^^

    Et donc je voudrais qu'en appuyant sur les boutons cela change les valeur des jeu1 a jeu10 le problème c'est : comment faire pour que le premier bouton sur lequel je vais appuyer ce disent de lui même qu'il rentre cela dans jeu1 ,puis plus tard quand on appui sur le 2eme bouton = jeu2 ,déjà la ça se complique trop pour moi (mais j'apprends beaucoup plus vite par la pratique et j'ai soif de savoir ^^) ,comment faire pour bloquer a 10 ? comment faire une page ou je pourrais choisir les jeux dans une liste...(bon ça ce sera peut être un peu plus tard) ou encore plus magnifique ,une page qui permettrais de retrouver d'autres joueur qui ont des jeux en commun avec l'utilisateur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    session_start();
     
    $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
     
     
    if(isset($_SESSION['id']))
    {
    	$requser = $bdd->prepare("SELECT * FROM membre WHERE id = ?");
    	$requser->execute(array($_SESSION['id']));
    	$user = $requser->fetch();
     
    		if(isset($_POST['newpseudo']))
    	{
    		$newpseudo = htmlspecialchars($_POST['newpseudo']);
    		$insertjeu = $bdd->prepare("UPDATE membre SET jeu = ? WHERE id = ?");
    		$insertjeu->execute(array($newpseudo, $_SESSION['id']));
     
    	}
    }
     
     
    ?>
    Et en dessous l'un des bouton pour envoyer l'information 15 a la valeur jeu1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div align="center">
        <form method="POST" action="">
        <input type="hidden" name="newpseudo" placeholder="Pseudo" value="15" 
     
        />
        <br />
        <input type="submit" value="Mettre à jour mon profil !" />
        </form>
    Du coup en gros si vous avez des conseils a me donné ou quoi pour m'aider je suis preneur d'absolument tout !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est un problème de conception au niveau TABLE de la base de données :

    1/ La table des utilisateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T_USER
    id_user (INT, autoincrément)
    ...
    2/ La table des jeux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T_JEUX
    id_jeu (INT, autoincrément)
    ...
    2/ il faut une 3ème table, dite de liaison/jointure entre T_USER et T_JEUX :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    T_USER_JEUX
    id_user
    id_jeu
    Cette table va relier un utilisateur aux jeux auquels il s'est abonné.

    Ensuite, il suffit de compter dans la table T_USER_JEUX le nombre de ligne avec l'id_user courant pour savoir à combien de jeux il est abonné, et interdire l'ajout (pour ce user) si ce nombre atteint 10.

    Voir les JOINTURES SQL : LE SQL de A à Z : 3e partie - les jointures

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut Me revoila
    Hey ,donc bon ,j'ai pas trop compris ce que tu m'avais dis ,donc j'ai bosser de mon côté ,et j'ai totalement changer de technique ,j'ai créer une page rien que pour choisir avec une selection les jeux auxquels l'inscris souhaite s'abonner ,et après un petit moment j'ai réussi a faire ce que je voulais ,je vous donne mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
    session_start();
     
    $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
     
    if(isset($_SESSION['id']))
    {
     
    	$destinataire = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire2 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire3 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire4 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire5 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire6 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire7 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
    	$destinataire8 = $bdd->query('SELECT jeu FROM jeu ORDER BY id');
     
     
     
    	if(isset($_POST['destinataire1']))
    	{
    		$newpseudo = htmlspecialchars($_POST['destinataire1']);
    		$insertjeu1 = $bdd->prepare("UPDATE membre SET jeu1 = ? WHERE id = ?");
    		$insertjeu1->execute(array($newpseudo, $_SESSION['id']));
    		$message = htmlspecialchars($_POST['destinataire1']);
    		$id_destinataire = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire = $id_destinataire->fetch();
    		$id_destinataire = $id_destinataire['id'];
     
    	}
     
     
     
    	if(isset($_POST['destinataire2']))
    	{
    		$newpseudo2 = htmlspecialchars($_POST['destinataire2']);
    		$insertjeu2 = $bdd->prepare("UPDATE membre SET jeu2 = ? WHERE id = ?");
    		$insertjeu2->execute(array($newpseudo2, $_SESSION['id']));
    		$message2 = htmlspecialchars($_POST['destinataire2']);
    		$id_destinataire2 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire2 = $id_destinataire2->fetch();
    		$id_destinataire2 = $id_destinataire2['id'];
     
    	}
     
    		if(isset($_POST['destinataire3']))
    	{
    		$newpseudo3 = htmlspecialchars($_POST['destinataire3']);
    		$insertjeu3 = $bdd->prepare("UPDATE membre SET jeu3 = ? WHERE id = ?");
    		$insertjeu3->execute(array($newpseudo3, $_SESSION['id']));
    		$message3 = htmlspecialchars($_POST['destinataire3']);
    		$id_destinataire3 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire3 = $id_destinataire3->fetch();
    		$id_destinataire3 = $id_destinataire3['id'];
     
    	}
     
    			if(isset($_POST['destinataire4']))
    	{
    		$newpseudo4 = htmlspecialchars($_POST['destinataire4']);
    		$insertjeu4 = $bdd->prepare("UPDATE membre SET jeu4 = ? WHERE id = ?");
    		$insertjeu4->execute(array($newpseudo4, $_SESSION['id']));
    		$message4 = htmlspecialchars($_POST['destinataire4']);
    		$id_destinataire4 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire4 = $id_destinataire4->fetch();
    		$id_destinataire4 = $id_destinataire4['id'];
     
    	}
     
    		if(isset($_POST['destinataire5']))
    	{
    		$newpseudo5 = htmlspecialchars($_POST['destinataire5']);
    		$insertjeu5 = $bdd->prepare("UPDATE membre SET jeu5 = ? WHERE id = ?");
    		$insertjeu5->execute(array($newpseudo5, $_SESSION['id']));
    		$message5 = htmlspecialchars($_POST['destinataire5']);
    		$id_destinataire5 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire5 = $id_destinataire5->fetch();
    		$id_destinataire5 = $id_destinataire5['id'];
     
    	}
    			if(isset($_POST['destinataire6']))
    	{
    		$newpseudo6 = htmlspecialchars($_POST['destinataire6']);
    		$insertjeu6 = $bdd->prepare("UPDATE membre SET jeu6 = ? WHERE id = ?");
    		$insertjeu6->execute(array($newpseudo6, $_SESSION['id']));
    		$message6 = htmlspecialchars($_POST['destinataire6']);
    		$id_destinataire6 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire6 = $id_destinataire6->fetch();
    		$id_destinataire6 = $id_destinataire6['id'];
     
    	}
    			if(isset($_POST['destinataire7']))
    	{
    		$newpseudo7 = htmlspecialchars($_POST['destinataire7']);
    		$insertjeu7 = $bdd->prepare("UPDATE membre SET jeu7 = ? WHERE id = ?");
    		$insertjeu7->execute(array($newpseudo7, $_SESSION['id']));
    		$message7 = htmlspecialchars($_POST['destinataire7']);
    		$id_destinataire7 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire7 = $id_destinataire7->fetch();
    		$id_destinataire7 = $id_destinataire7['id'];
     
    	}
    			if(isset($_POST['destinataire8']))
    	{
    		$newpseudo8 = htmlspecialchars($_POST['destinataire8']);
    		$insertjeu8 = $bdd->prepare("UPDATE membre SET jeu8 = ? WHERE id = ?");
    		$insertjeu8->execute(array($newpseudo8, $_SESSION['id']));
    		$message8 = htmlspecialchars($_POST['destinataire8']);
    		$id_destinataire8 = $bdd->prepare('SELECT id FROM membre WHERE pseudo = ?');
    		$id_destinataire8 = $id_destinataire8->fetch();
    		$id_destinataire8 = $id_destinataire8['id'];
     
    	}
     
    					   }
     
    ?>
    Je sait ,c'est très long ,mais bon j'ai repomper un peu de mon ancien code et modifié a ma sauce pour en arrivé a ce que je voulais ,et ça marche ! Du coup y a deux table dans la base de données ,l'une nommé jeu et l'autres membre ,on va chercher dans jeu les jeux a selectionner ,puis on les envoi dans la table membre sur la ligne de l'inscris dans une valeur nommé jeu1,jeu2,jeu3 ect ,je vous met en dessous l'appel le formulaire qui permet d'appeler ces selections et d'envoyer a la table membre les jeux selectionné ,voila pour si quelqu'un pourrais en avoir besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <form method="POST">
    <label>Jeux favoris : </label>
    <br /><br />
     
    	<select name="destinataire1">
        <?php while($d = $destinataire->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire2">
        <?php while($d = $destinataire2->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire3">
        <?php while($d = $destinataire3->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire4">
        <?php while($d = $destinataire4->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire5">
        <?php while($d = $destinataire5->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire6">
        <?php while($d = $destinataire6->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire7">
        <?php while($d = $destinataire7->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
        	<select name="destinataire8">
        <?php while($d = $destinataire8->fetch()) { ?>
        	<option><?= $d['jeu'] ?></option>
            <?php } ?>
         </select>
         <br /><br />
     
     
         <br /><br />
         <input type="submit" value="Envoyer" name="envoi_message"/>
         <br /><br />
     
         </form>
    Du coup l'utilisateur ne peut sélectionné que 8 jeu max ,bon cependant il peut choisir deux fois le même jeu mais ça me parait pas si génant que ça ,ou au pire je verrais plus tard pour bloquer cela ,je penses déja avoir ma petite idée sur l'affaire ,mais maintenant j'ai une question qui va dans la continuité de tout cela ,comment sur ma page index qui affiche les différent jeux auxquels l'ont pourrais s'inscrire sur la page editionjeux ,puis je mettre le nombre d'id qui ce trouve dans la table membre ,inscris a chacun de ses jeux : du genre il y a 45 abonnées a "the division" en allant chercher dans chaque ligne de la table membre le nombre d'id inscris a the division en allant chercher dans la valeur jeu1 ,jeu2 ,ect ,vous me suivez ? je vous demande pas la soluce total ,je sait qu'ont me la donnera pas mais si je pouvais avoir un poil plus de conseil que dans le dernier message ce serait super mega top ,merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...et bravo : tu as construit une magnifique usine à gaz !

    Citation Envoyé par fostraceur Voir le message
    ...comment [...] ,puis je mettre le nombre d'id qui ce trouve dans la table membre ,inscris a chacun de ses jeux : du genre il y a 45 abonnées a "the division" ...
    Quant à la question subsidiaire... compte tenu de l'usine à gaz... bon courage...
    Idem si un jour tu décides d'autoriser 10 jeux max, ou plus (20 ? 30 ?)...


    C'était justement tout l'intérêt de la TROISIEME TABLE, celle de jointure.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Par défaut et donc ?
    Merci ,mais on a pas tous la chance d'être pro ,et c'est pour ça que j'essai ,ça fais tout juste deux semaines que j'essaye d'apprendre php ,ce site c'est juste de l'entrainement ,et c'est cela que j'essai de faire ,m’entraîner ,apprendre ,donc je veux bien utilisé la troisième table de liaison ,mais avec le très peu de détail donné oui j'ai pas compris ,donc je me suis débrouiller par moi même et pourtant c'est pas faute d'avoir donné le plus de détail possible ,pour avoir en échange le plus de conseil détaillé possible sur une solution ,je sait bien qu'il faut essayer par soi même et qu'ont donne pas de solution ,mais franchement ton premier message c'était plutôt : tu veux faire ça ,hop va voir par la ,j'ai était voir ,j'ai pas le niveau ,donc j'ai fais par mes propres moyens .

    Et si donc ton deuxième conseil c'est : maintenant bonne chance .
    Bah ça m'avance bien ,merci a toi ^^ Recommencez ,ça me dérange pas ,mais franchement autant le premier message que le deuxième n'a servis a rien ,a par dire : tu veux faire ça ,c'est bien.

    L'entraide c'est bien ^^ et pourtant je suis loin de demandé comme sur pas mal de sujet que j'ai vu : donner moi le code en entier .
    Mais être un petit plus dirigé c'est cool aussi

    Sinon m'inscrire au forum servais a rien ,suffit que je fasse le tour des forums de ce qui a déjà était dis ,piqué un peu partout le peu de réponses donné ,et me débrouiller avec ça ,mais moi je croit plus en la "coopération" même si pour l'instant tout ce que j'ai trouver ,c'est pas en demandant que je l'ai trouvé

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo