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 :

Count, tester des valeurs d'attributs de deux tables [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Count, tester des valeurs d'attributs de deux tables
    Bonjour,

    je développe un site d organisation de tournois de poker.
    Sur la page d'accueil s'affichent des tournois auxquels les membres du site peuvent s'inscrire.
    Lorsqu'un membre est inscrit à un tournoi, le bouton "s'inscrire" doit passer à "se désinscrire" or cela ne fonctionne pas.

    Il y a deux tables auxquelles je fais appel dans la requête : la table "tournois" ou sont enregistrés les tournois créés par les membres. Ce sont ces tournois de la table "tournois" qui s'affichent sur la page d'accueil.
    la table "tournois_inscrits" ou sont enregistrés chaque inscription de membre à un tournoi avec entre autres 2 champs fk_ti_num_tournoi clé étrangère de num_tournoi de la table "tournois" et fk_ti_pseudo clé étrangère de pseudo de la table "tournois".


    Voici le code que j'ai tenté plusieurs fois de modifier sans succès ( il y a au moins les lignes avec req execute et fetch qui ne vont pas mais je ne sais plus quoi faire avec ) :
    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
     
    $prog_tournois = get_prog_tournois(0, 5);  
     
    foreach($prog_tournois as $cle => $champs)
    {
        $prog_tournois[$cle]['typ_jeu'] =htmlspecialchars ($champs['typ_jeu']);
        $prog_tournois[$cle]['num_tournoi'] = $champs['num_tournoi'];
        $prog_tournois[$cle]['date_tournoi'] = $champs['date_tournoi'];
        $prog_tournois[$cle]['lieu'] = $champs['lieu'];
        $prog_tournois[$cle]['buy_in'] = $champs['buy_in'];
        $prog_tournois[$cle]['prize_pool'] = $champs['prize_pool'];
        $prog_tournois[$cle]['nb_joueur'] = $champs['nb_joueur'];
        $prog_tournois[$cle]['blind'] = $champs['blind'];
        $prog_tournois[$cle]['jetons'] = $champs['jetons'];
        $prog_tournois[$cle]['recave'] = $champs['recave'];
        $prog_tournois[$cle]['gagnant'] = ($champs['gagnant']);
        $prog_tournois[$cle]['createur_tournoi'] = ($champs['createur_tournoi']);
     
    }
    ?>
     
     
     
     
                    <ul id="prog-tournoi">
     
                 <?php       foreach($prog_tournois as $champs)
     
     
    {
     
             ?>
                         <li class="ligne-tournoi">
     
                                     <ul class="grille-tournoi">
                                            <li>   
     
                                                <h3> <?php echo $champs['typ_jeu']; ?></h3>
                                                <form method="post" action="<?php  echo $MVC_BASE_HTTP_DIR?>/?action=inscrip_tournoi">
                                                    <input type="hidden" name="send" >
                                                    <input type="hidden" name="fk_ti_num_tournoi"  value="<?php echo $champs['num_tournoi'] ;?>">
                                                    <?php 
     
                                                   if(!empty($_SESSION["pseudo"])){
                                                    $num_tournoi=$champs['num_tournoi'];
                                                    $req=$bdd->prepare('SELECT COUNT(*) AS nbre_ligne FROM tournois_inscrits WHERE fk_ti_pseudo = $_SESSION["pseudo"] AND fk_ti_num_tournoi = $champs["num_tournoi"]');
                                                    $req->execute (); 
                                                   $result=$req->fetch();
     
                                                    if ($result['nbre_ligne'] == 1 ){  
                                                             $statut_inscrip= "SE DESINSCRIRE";
                                                        } else{
                                                            $statut_inscrip="INSCRIPTION";
                                                        }
                                                      }else{     
     
                                                        $statut_inscrip="INSCRIPTION";  
                                                      }
                                                    ?> 
     
                                                    <input type="submit" id="btn_inscrip_tour" value="<?php echo $statut_inscrip ;?>" >
     
                                                </form>
    etc....

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La premiere chose à faire est déjà de présenter ton code proprement, sinon tu ne peux pas t'y retrouver.

    Ensuite une requête préparée sert à repeter la même opération avec des valeurs différentes.
    La préparation ne se met donc pas dans une boucle :

    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
    <?php
    $req=$bdd->prepare('SELECT COUNT(*) AS nbre_ligne FROM tournois_inscrits WHERE fk_ti_pseudo = :pseudo AND fk_ti_num_tournoi = :tournoi');
    foreach($prog_tournois as $champs) {
    	echo '<li class="ligne-tournoi">
    			<ul class="grille-tournoi">
                    <li>   
    					<h3>' . $champs['typ_jeu'] . '</h3>
                        <form method="post" action="' . $MVC_BASE_HTTP_DIR . '/?action=inscrip_tournoi">
                        <input type="hidden" name="send" >
                        <input type="hidden" name="fk_ti_num_tournoi"  value="' . $champs['num_tournoi']  . '">';
    	if(!empty($_SESSION["pseudo"])){
    		$req->execute(array(':pseudo'=>$_SESSION["pseudo"], ':tournoi'=>$champs["num_tournoi"]));
    		$result=$req->fetch(PDO::FETCH_ASSOC);
    		if ($result['nbre_ligne'] == 1 ){  
                $statut_inscrip= "SE DESINSCRIRE";
            }
    		else{
    			$statut_inscrip="INSCRIPTION";
            }
        }
    	else{     
    		$statut_inscrip="INSCRIPTION";  
        }
    	echo '<input type="submit" id="btn_inscrip_tour" value="' . $statut_inscrip .' " >
    	</form>';
    }
    ?>
    Maintenant pour debuguer, la premiere étape est de contrôler les valeurs en jeu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       }
    	echo '<input type="submit" id="btn_inscrip_tour" value="' . $statut_inscrip .' " >
            PSEUDO : ' . $_SESSION["pseudo"] . ';TOURNOI : ' .  $champs["num_tournoi"] . ';INSCRIPTION : ' . $result['nbre_ligne'] . '
    	</form>';
    }
    Au passage, je ne vois pas du tout a quoi sert ton premier foreach
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    oh!! merci beaucoup ça marche t'es fortiche toi ! je vais pouvoir continuer le site. je te tiendrai au courant de l'avancée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/02/2012, 22h53
  2. [Toutes versions] Tester des valeurs dans différents onglets
    Par Freud44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2010, 12h51
  3. Réponses: 6
    Dernier message: 29/08/2007, 07h49
  4. count sur des valeurs de champs
    Par Braillane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2007, 17h27
  5. [variables] Tester des valeures à 1 ou 2
    Par elitemedia dans le forum Langage
    Réponses: 5
    Dernier message: 04/12/2006, 21h03

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