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 :

probléme jointure pour inscrire un joueur


Sujet :

PHP & Base de données

  1. #1
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut probléme jointure pour inscrire un joueur
    Coucou,
    Je suis en train de réaliser un formulaire d'inscription permettant d'inscrire un joueur à un tournoi en considérant que cela est possible seulement si le joueur a été crée au préalable.

    Pour cela j'ai 3 tables :
    joueur : Numlicence,Nom,Prenom,Joueur,Adresse,Classement
    tournoi : id,DateDebut,Lieu,NbRonde,NbMaxInscrit,TournoiClos
    inscription : idinscrit,Lieu,Joueur,idjoueur,Classement

    Dans la table joueur, j'ai la liste de tous les joueurs crées.
    Dans la table tournoi, jai la liste des tournois.
    Dans la table inscription, j'ai la liste des joueurs inscrits, en fait pour alimenter cette table j'utilise un formulaire d'inscription. Ce formulaire d'inscription contient deux listes déroulantes, une l'id et le Lieu du tournoi (dans la table tournoi) et l'autre liste déroulante contient le Nom et Prenom d'un joueur(dans la table joueur), la concaténation de ces deux champs devient le champs Joueur dans la table Inscription.
    Voila pour les explications.

    Ce que je souhaiterai réaliser est de pouvoir obtenir dans la table inscription le classement du joueur sélectionné.

    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
     
     
    <?php 
    include "entete.html";
    include "menuadmin.html";
     
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='gestiontournoi';
    $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
    mysql_select_db($bdd);    
    ?>
     
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
                        <?php
                        $result = mysql_query("SELECT lieu FROM tournoi WHERE TournoiClos='non'");
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option>'.$row["lieu"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <?php
                        $result = mysql_query("SELECT nom,prenom FROM joueur ");
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option>'.$row["nom"].' '.$row["prenom"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    <?php
    if(isset($_POST['Lieu'], $_POST['Joueur']))
    {
    	//récupération des valeurs des champs:
    	//nombre de joueur max inscrits :
    	$lieu = mysql_real_escape_string($_POST['Lieu']) ;
    	//numéro de téléphone:
    	$joueur = mysql_real_escape_string($_POST['Joueur']) ;
    	$sql = mysql_query("SELECT COUNT(*) FROM inscription WHERE Lieu = '$lieu' AND Joueur = '$joueur'");
    	$doublon = mysql_fetch_row($sql);
    	$doublon = $doublon[0];
    	// Cette entrée n'existe pas !
     
    	if(!$doublon)
    	{	
    		//création de la requête SQL:
    		$query= "INSERT INTO inscription VALUES ('', '$lieu', '$joueur','') " ;
    		if(mysql_query($query) or die (mysql_error()))
    		{
    			echo '
    			<p>
    				La nouvelle inscription a été enregistrée !
    			</p>';
    		}
    		else
    		{
    			echo '
    			<p>
    				Erreur dans la requête SQL !
    			</p>';
    		}
    	}
    	else
    	{
    		echo '
    		<p>
    			Cette inscription existe déjà !
    		</p>';
    	}
    }	 
    ?>
    </div> 
     </body>
    </html>
    j'ai testé la requete suivante sur la table inscription mais j'obtient que des valeurs 0 pour idjoueur et classement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT idinscrit,inscription.Lieu,joueur.Joueur,idjoueur,joueur.Classement
    FROM inscription
    LEFT JOIN joueur ON inscription.idjoueur = joueur.NumLicence
    WHERE inscription.Joueur=joueur.Joueur

  2. #2
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    J'aurais deux questions sur ta requête:

    Premièrement, pourquoi est ce que tu mets une clause where en plus de ta jointure et deuxièment, à quoi correspond le champ "joueur" qui sert dans ta clause where

  3. #3
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    si je ne met pas de where j'obtient des valeurs null et pour faciliter ce que je souhaite réaliser je pensais qu'il était utile d'avoir un champs commun.
    En fait j'étais en train de réfléchir à une autre solution totalement différente mais je ne sais pas du tout comment procéder.
    en fait je demande s'il ne serait pas mieux d'avoir la table inscription avec les champs NumLicence,id (id du tournoi) ,Classement , mais comment faire pour que lorsque je selectionne le tournoi et le joueur dans mon formulaire cela se traduit par NumLicence et id au lieu d'obtenir Joueur et Lieu.
    J"espere avoir été claire.

  4. #4
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    En fait, si on reprend un peu ton design, je crois que la table inscription aurait un peu avantage à être repensée de la façon suivante:

    inscription:idinscription,idtournoi,idjoueur

    Les autres champs étant disponibles dans les autres tables, tu peux aller les chercher en faisant des jointures dans ta requête et ça mêle plus les choses de les avoir avec l'inscription. Maintenant, si tu veux aller chercher le classement d'un joueur en particulier faisant parti d'un tournoi, tu peux faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select idinscript, tournoi.lieu, joueur.nom, joueur.prenom, joueur.classement
    from inscription
    left join joueur on inscription.idjoueur = joueur.numlicense
    left join tournoi on inscription.idtournoi = tournoi.id
    where inscription.idjoueur = "numéro de license du joueur" AND
    inscription.idtournoi = "Id du tournoi à vérifier"
    En espérant que ceci te soit utile .

  5. #5
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    je suis d'accord avec toi.
    Je vais reconstruire la table inscription de la façon suivante :
    idinscription, idtournoi,idjoueur

    Mais comment je dois procéder pour que les infos sélectionnées dans le formulaires soient récupérés dans la table inscription de maniére à ce que le lieu du tournoi soit traduit par idtournoi et nom et prenom soit traduit par idjoueur dans la table inscription.

  6. #6
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Lorsque tu fais une liste en HTML, la valeur affichée est détachée de la valeur réelle de l'élément. Voici un exemple concret:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <select name='liste'>
         <option value="1">Élément 1</option>
         <option value="2">Élément 2</option>
         <option value="3">Élément 3</option>
    </select
    Dans ce code, ce que l'utilisateur voit dans la liste est Élément 1, mais la valeur effectivement transmise est 1. Donc, quand tu construit ta liste, tu n'as qu'à mettre l'ID voulu dans la partie "value" et ce que tu veux afficher à la place de "Élément 1".

    Ceci se fait très bien en PHP, voici un exemple d'une liste que j'ai construite et qui fait apparaître le nom de l'employé et stocke son numéro comme valeur effective dans la liste.

    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
     
    <select name='demandeur' style="width:150px">
     
    <?php
     
    	$query = "SELECT * FROM tblcartetempspersonnes WHERE statut=1 ORDER BY NomPersonne ASC";
    	$result = mysql_query($query) or die("Couldn't execute query"); 
     
    //on fait afficher une ligne blanche en début de liste
    	echo "<option value='null'></option>" . "\n";
     
    	while($ligne = mysql_fetch_array($result))
    	{
    		echo "<option value='" . $ligne['NoPersonne'] . "'>" . $ligne['NomPersonne'] . "</option>" . "\n";
    	}
     
    ?>
     
    </select>
    Voilà pour ça, si tu as d'autre questions n'hésite pas .

  7. #7
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    j'ai compris le principe que tu as expliqué mais comment se fait alors l'ajout dans la table inscription dans mon cas.
    Par quoi je dois commencer pour faire les modifications à mon code.

  8. #8
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Normalement, quand le formulaire est rempli, il y a un bouton qui permet de l'envoyer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <form name="tournoi" method="post" action="enregistrer.php">
     
    .... le code avec les listes....
     
    <input type="submit" value="Enregistrer">
     
    </form>
    Dans ce cas, le dernier input va être un bouton écrit "Enregistrer" sur lequel on pourra cliquer. Ceci appellera la page que tu as défini dans action, dans mon cas "enregistrer.php", et c'est dans cette page que l'accès à la base de données se fait.

    Comme j'ai spécifié la méthode "post", je vais pouvoir accéder aux valeurs de tes contrôles en php de la façon suivante:

    $_POST['Nom du controle']

    ou le nom du contrôle est spécifié par le paramètre "name" donné quand tu crée le contrôle. Voici un exemple concret:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <form name="tournoi" method="post" action="enregistrer.php">
    <select name="lieuTournoi">
        <option value="1">Québec</option>
        <option value="2">Montréal</option>
    </select>
     
    <input type="submit" Value="Enregistrer">
     
    </form>
    Maintenant, du côté de enregistrer.php, voici ce que tu vas avoir (si on oublie les lignes de connection à la base de données):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql = "INSERT INTO inscription VALUES(\"$_POST['lieuTournoi']\")";
    $mysql_query($sql) or die (mysql_error());
    Pour ton information, les \" c'est pour mettre des guillemets à l'intérieur d'une chaine de caractères. En espérant que je ne t'ai pas trop embrouillé. Bonne chance

  9. #9
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    si j'ai bien compris tu me conseilles d'avoir deux fichiers? ai-je bien compris ?

  10. #10
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Exactement. Un premier fichier qui contient le formulaire à remplir et un deuxième fichier qui enverra les données qui lui sont soumises dans la base de données.

  11. #11
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voila comment j'ai adapté mon code à tes conseils en faisant dans un premier temps un seul fichier
    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
     
     
    <?php 
    include "entete.html";
    include "menuadmin.html";
     
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='gestiontournoi';
    $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
    mysql_select_db($bdd);    
    ?>
     
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
                        <?php
                        $result = mysql_query("SELECT lieu FROM tournoi WHERE TournoiClos='non'");
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value='.$row["id"].'>'.$row["lieu"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <?php
                        $result = mysql_query("SELECT nom,prenom FROM joueur ");
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value='.$row["NumLicence"].'>'.$row["nom"].' '.$row["prenom"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    <?php
    if(isset($_POST['Lieu'], $_POST['Joueur']))
    {
    	//récupération des valeurs des champs:
    	//nombre de joueur max inscrits :
    	$lieu = mysql_real_escape_string($_POST['Lieu']) ;
    	//numéro de téléphone:
    	$joueur = mysql_real_escape_string($row['NumLicence']) ;
    	$sql = mysql_query("SELECT COUNT(*) FROM inscription WHERE Lieu = '$lieu' AND Joueur = '$joueur'");
    	$doublon = mysql_fetch_row($sql);
    	$doublon = $doublon[0];
    	// Cette entrée n'existe pas !
     
    	if(!$doublon)
    	{	
    		//création de la requête SQL:
    		$query= "INSERT INTO inscription VALUES ('', '$lieu', '$joueur') " ;
    		if(mysql_query($query) or die (mysql_error()))
    		{
    			echo '
    			<p>
    				La nouvelle inscription a été enregistrée !
    			</p>';
    		}
    		else
    		{
    			echo '
    			<p>
    				Erreur dans la requête SQL !
    			</p>';
    		}
    	}
    	else
    	{
    		echo '
    		<p>
    			Cette inscription existe déjà !
    		</p>';
    	}
    }	 
    ?>
    </div> 
     </body>
    </html>
    en sachant que je n'obtient Lieu et Joueur toujours egale à 0
    table inscription : idinscrit,Lieu,Joueur
    ces 3 champs sont de type int

  12. #12
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Donc, en supposant que ta BD ne soit pas vide. Voici ce que je suggère:

    Premièrement, ta requête

    SELECT lieu FROM tournoi WHERE TournoiClos='non'

    ne retourne qu'un seul champ. Or, toi tu en utilises deux. Si tu veux que $row['ID'] fonctionne, tu dois modifier ta requête pour l'inclure de cette façon:

    SELECT ID, lieu FROM tournoi WHERE TournoiClos='non'

    Le problème est le même pour ta requête joueur, tu ne vas chercher que le nom et le prénom sans aller demander la license. Ensuite, sur la ligne ou tu exécutes ta requête, tu peux ajouter la clause "or die" qui va te faire apparaître un message d'erreur si ta requête plante, de cette façon:

    $result = mysql_query("SELECT lieu FROM tournoi WHERE TournoiClos='non'") or die(mysql_error());

    Ensuite, dans la dernière partie du php, la section qui commence avec:

    if(isset($_POST['Lieu'], $_POST['Joueur']))

    Premièrement, cette section doit se trouver dans le fichier inscriptionjoueur.php parce qu'elle a trait à l'enregistrement du joueur... ce qui implique également que ce qui précède se trouve dans un autre fichier également que "inscriptionjoueur.php". Ensuite, il y a une petite erreur dans la condition elle-même puisque pour faire un "et" logique en php, il faut procéder de cette façon:

    if(isset($_POST['Lieu'] && isset($_POST['Joueur']))
    {
    Ton code
    }

    Finalement, fait très attention car PHP est sensible à la casse. Donc:

    $_POST['lieu'] n'est pas du tout la même chose que $_POST['Lieu']

    Alors voilà, j'espère que j'ai pu t'aider à débloquer .

  13. #13
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voici l'ensemble des modifications réalisées :
    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
    <?php 
    include "entete.html";
    include "menuadmin.html";
     
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='gestiontournoi';
    $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
    mysql_select_db($bdd);    
    ?>
     
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
                        <?php
                        $result = mysql_query("SELECT id,Lieu FROM tournoi WHERE TournoiClos='non'") or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="id">'.$row["Lieu"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <?php
                        $result = mysql_query("SELECT NumLicence,Nom,Prenom FROM joueur ")or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="NumLicence">'.$row["Nom"].' '.$row["Prenom"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    <?php
    if(isset($_POST['Lieu']) && isset( $_POST['Joueur']))
    {
    	//récupération des valeurs des champs:
    	//nombre de joueur max inscrits :
    	$lieu = mysql_real_escape_string($_POST['Lieu']) ;
    	//numéro de téléphone:
    	$joueur = mysql_real_escape_string($_POST['Joueur']) ;
    	$sql = mysql_query("SELECT COUNT(*) FROM inscription WHERE Lieu = '$lieu' AND Joueur = '$joueur'");
    	$doublon = mysql_fetch_row($sql);
    	$doublon = $doublon[0];
    	// Cette entrée n'existe pas !
     
    	if(!$doublon)
    	{	
    		//création de la requête SQL:
    		$query= "INSERT INTO inscription VALUES ('', '$lieu', '$joueur') " ;
    		if(mysql_query($query))
    		{
    			echo '
    			<p>
    				La nouvelle inscription a été enregistrée !
    			</p>';
    		}
    		else
    		{
    			echo '
    			<p>
    				Erreur dans la requête SQL !
    			</p>';
    		}
    	}
    	else
    	{
    		echo '
    		<p>
    			Cette inscription existe déjà !
    		</p>';
    	}
    }	 
    ?>
    </div> 
     </body>
    </html>

    dans ma page inscriptionjoueur.php voici l'erreur lorsque je teste :

    Erreur dans la requête SQL !
    voici la structure de ma base :

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    -- phpMyAdmin SQL Dump
    -- version 3.2.0.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Mar 31 Août 2010 à 08:42
    -- Version du serveur: 5.1.36
    -- Version de PHP: 5.3.0
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `gestiontournoi`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `inscription`
    --
     
    CREATE TABLE IF NOT EXISTS `inscription` (
      `idinscrit` int(11) NOT NULL AUTO_INCREMENT,
      `Lieu` int(11) NOT NULL,
      `Joueur` int(11) NOT NULL,
      PRIMARY KEY (`idinscrit`),
      KEY `Lieu` (`Lieu`,`Joueur`),
      KEY `Joueur` (`Joueur`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
     
    --
    -- Contenu de la table `inscription`
    --
     
    INSERT INTO `inscription` (`idinscrit`, `Lieu`, `Joueur`) VALUES
    (2, 13, 14),
    (4, 22, 15);
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `joueur`
    --
     
    CREATE TABLE IF NOT EXISTS `joueur` (
      `NumLicence` int(10) NOT NULL AUTO_INCREMENT,
      `Nom` varchar(150) NOT NULL,
      `Prenom` varchar(150) NOT NULL,
      `Adresse` varchar(150) NOT NULL,
      `Classement` text NOT NULL,
      PRIMARY KEY (`NumLicence`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;
     
    --
    -- Contenu de la table `joueur`
    --
     
    INSERT INTO `joueur` (`NumLicence`, `Nom`, `Prenom`, `Adresse`, `Classement`) VALUES
    (5, 'lavalette', 'virginie', '10 imp da la garenne ', '1054'),
    (14, 'xxxx', 'qsqsqs', '<wx<wx<dxqsd', '2010'),
    (15, 'rrrrr', 'xxx', 'w<xxw<x', '1950');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `match`
    --
     
    CREATE TABLE IF NOT EXISTS `match` (
      `NumMatch` int(11) NOT NULL AUTO_INCREMENT,
      `NumTable` varchar(50) NOT NULL,
      `NumRonde` varchar(50) NOT NULL,
      PRIMARY KEY (`NumMatch`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `match`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `membre`
    --
     
    CREATE TABLE IF NOT EXISTS `membre` (
      `id` int(2) NOT NULL AUTO_INCREMENT,
      `login` varchar(100) NOT NULL,
      `pass` varchar(255) NOT NULL,
      `email` varchar(255) NOT NULL,
      `hash` varchar(255) NOT NULL,
      `actif` int(1) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
     
    --
    -- Contenu de la table `membre`
    --
     
    INSERT INTO `membre` (`id`, `login`, `pass`, `email`, `hash`, `actif`) VALUES
    (1, 'admin', 'ea5c1fa6787ae6e7e9ccefd0f33a31e032b518dc', 'admin@admin.fr', '', 0),
    (20, 'virginie', '9f26a7e30c11faa76d3172144c94f8d0bb891cf6', 'lavalettevirginie87@voila.fr', '084b6fbb10729ed4da8c3d3f5a3ae7c9', 0);
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `tournoi`
    --
     
    CREATE TABLE IF NOT EXISTS `tournoi` (
      `id` int(5) NOT NULL AUTO_INCREMENT,
      `DateDebut` varchar(20) NOT NULL,
      `Lieu` varchar(255) NOT NULL,
      `NbRonde` varchar(2) NOT NULL,
      `NbMaxInscrit` int(50) NOT NULL,
      `TournoiClos` varchar(5) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;
     
    --
    -- Contenu de la table `tournoi`
    --
     
    INSERT INTO `tournoi` (`id`, `DateDebut`, `Lieu`, `NbRonde`, `NbMaxInscrit`, `TournoiClos`) VALUES
    (8, '23-07-2011', 'lamotte', '12', 121221, 'oui'),
    (11, '27-08-2010', 'limoges', '4', 12, 'non'),
    (12, '27-08-2010', 'bellac', '4', 12, 'non'),
    (13, '27-08-2010', 'peyrat', '', 12, 'non'),
    (14, '27-08-2010', 'mezieres', '4', 12, 'non'),
    (16, '27-08-2010', 'dinsac', '4', 12, 'non'),
    (17, '27-08-2010', 'dorat', '4', 12, 'non'),
    (18, '25/12/2011', 'varetz', '5', 20, 'oui'),
    (19, '12/12/2012', 'chaumont', '7', 6, 'non'),
    (20, '02/06/2011', 'chaon', '8', 24, 'non'),
    (21, '08/09/2010', 'vouzon', '9', 52, 'non'),
    (22, '05/05/2010', 'orleans', '5', 26, 'non');
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `inscription`
    --
    ALTER TABLE `inscription`
      ADD CONSTRAINT `inscription_ibfk_2` FOREIGN KEY (`Joueur`) REFERENCES `joueur` (`NumLicence`) ON DELETE CASCADE ON UPDATE CASCADE,
      ADD CONSTRAINT `inscription_ibfk_1` FOREIGN KEY (`Lieu`) REFERENCES `tournoi` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

  14. #14
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    On se rapproche, on se rapproche . Ici, l'erreur que je peux voir est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="id">'.$row["Lieu"].' </option>';
    Cette ligne devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="' . $row['id'] . '">'. $row["Lieu"]. '</option>';
    Et c'est le même problème du côté joueur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<option value="' . $row['NumLicence'] . '">'.$row["Nom"].' '.$row["Prenom"].' </option>';
    Maintenant quelques astuces de déboguage:

    Dans la page d'entrée de paramètres, une fois qu'elle est chargée, fait afficher le code source de la page. Si tout a fonctionné correctement, le code PHP va avoir disparu, remplacé par les valeurs qu'on lui a donné.

    Ensuite, quand tu as une erreur dans la requête avec un super message incroyablement précis comme ça, et bien la meilleure façon de voir ce qui se passe est encore de stocker ta variable de requête dans une variable et de faire un echo de celle-ci. Comme ça tu vois exactement ce que tu passes à la BD et tu peux déceler les erreurs plus facilement.

    Également, je crois qu'il ne prendra pas ta requête insert avec une valeur vide comme ID de ligne. Essaye simplement de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query= "INSERT INTO inscription(lieu, joueur) VALUES ('$lieu', '$joueur') " ;

  15. #15
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    j'ai appliqué tes astuces de débogages :
    j'ai ajouté un echo $query
    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
    <?php 
    include "entete.html";
    include "menuadmin.html";
     
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='gestiontournoi';
    $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
    mysql_select_db($bdd);    
    ?>
     
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
                        <?php
                        $result = mysql_query("SELECT id,Lieu FROM tournoi WHERE TournoiClos='non'") or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="' . $row['id'] . '">'. $row["Lieu"]. '</option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <?php
                        $result = mysql_query("SELECT NumLicence,Nom,Prenom FROM joueur ")or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="' . $row['NumLicence'] . '">'.$row["Nom"].' '.$row["Prenom"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    <?php
    if(isset($_POST['Lieu']) && isset( $_POST['Joueur']))
    {
    	//récupération des valeurs des champs:
    	//nombre de joueur max inscrits :
    	$lieu = mysql_real_escape_string($_POST['Lieu']) ;
    	//numéro de téléphone:
    	$joueur = mysql_real_escape_string($_POST['Joueur']) ;
    	$sql = mysql_query("SELECT COUNT(*) FROM inscription WHERE Lieu = '$lieu' AND Joueur = '$joueur'");
    	$doublon = mysql_fetch_row($sql);
    	$doublon = $doublon[0];
    	// Cette entrée n'existe pas !
     
    	if(!$doublon)
    	{	
    		//création de la requête SQL:
    		$query= "INSERT INTO inscription VALUES ('$lieu','$joueur') " ;
     
    	echo $query;
    		if(mysql_query($query))
    		{
    			echo '
    			<p>
    				La nouvelle inscription a été enregistrée !
    			</p>';
    		}
    		else
    		{
    			echo '
    			<p>
    				Erreur dans la requête SQL !
    			</p>';
    		}
    	}
    	else
    	{
    		echo '
    		<p>
    			Cette inscription existe déjà !
    		</p>';
    	}
    }	 
    ?>
    </div> 
     </body>
    </html>
    voila ce qui s'affiche sur ma page inscriptionjoueur.php
    INSERT INTO inscription VALUES ('20','5')

    Erreur dans la requête SQL !
    voici le code source de ma page inscriptionjoueur.php avec les valeurs
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html>
    	<head>
    		<title>Gestion d'un tournoi d'échec</title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    		<link rel=stylesheet href = "feuille.css" type = "text/css">
    	</head>
     
    <body>
     
     
    <div id="en_tete">
    	<br/> 
        <h2><img src="Images/roi_blanc.png">&nbsp &nbsp Gestion de tournoi d'échec &nbsp &nbsp <img src="Images/roi_blanc.png"></h2>
    </div><div id="menu"> 
     
    	<div class="element_menu"> 
    		<h3>Gestion joueur</h3> 
     
    		<ul>
    	  <li><a href="creerjoueur.php">Créer un joueur</a></li>
     
    	  <li><a href="modifierjoueur.php">Modifier un joueur</a></li>
    	  <li><a href="inscriptionjoueur.php">Inscrir un joueur</a></li>
          </ul>
     
    	</div>
     
     
       <div class="element_menu">
    	  <h3>Gestion Tournoi</h3> 
     
          <ul>
          <li><a href="creertournoi.php">Créer un tournoi</a></li>
     
    	  <li><a href="modifiertournoi.php">Modifier un tournoi</a></li>
    	  <li><a href="consultertournoi.php">Consulter un tournoi</a></li>
    	  <li><a href="cloturertournoi.php">Cloturer un tournoi</a></li>
    	  <p align="center"><a href="index.php">Se déconnecter</a></p>
          </ul>
     
       </div>
     
     
    </div>
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
     
                        <option value="11">limoges</option><option value="12">bellac</option><option value="13">peyrat</option><option value="14">mezieres</option><option value="16">dinsac</option><option value="17">dorat</option><option value="19">chaumont</option><option value="20">chaon</option><option value="21">vouzon</option><option value="22">orleans</option>                </select>
                </td>
            </tr>
     
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <option value="5">lavalette virginie </option><option value="14">xxxx qsqsqs </option><option value="15">rrrrr xxx </option>                </select>
                </td>
     
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    INSERT INTO inscription VALUES ('20','5') 
    			<p>
     
    				Erreur dans la requête SQL !
    			</p></div> 
     </body>
    </html>

  16. #16
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    C'est parce que ta table inscription contient plus de champs que ce que tu lui en fourni. En contrepartie, on voit que la création des listes a bien fonctionné, puisque le echo de ta requête nous a bien renvoyé les ID voulu . Donc, pour corriger cet ultime bogue, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query= "INSERT INTO inscription (Lieu, Joueur) VALUES ('$lieu', '$joueur') " ;
    Dans ce cas, il est intéressant de mentionner que Lieu et Joueur sont des valeurs numériques et que les apostrophes entourant leurs valeurs ne sont pas nécessaires, même si leur présence ne devrait théoriquement pas interférer avec la bonne exécution de la requête (au pire essaye avec les apostrophes et sans les apostrophes pour voir la différence).

    Donc voilà... bravo pour ta persévérance, je crois que cette fois, on approche très sérieusement du but .

  17. #17
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    tout marche correctement
    voila le 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
    <?php 
    include "entete.html";
    include "menuadmin.html";
     
    $serveur='localhost';
    $user='root';
    $motdepasse=''; 
    $bdd='gestiontournoi';
    $connect= mysql_connect($serveur,$user,$motdepasse) or die ("Impossible de se connecter: "); 
    mysql_select_db($bdd);    
    ?>
     
    <div id="corps">
    <h3><p align="center">Inscription d'un joueur</p></h3>
     
     
    <form action="inscriptionjoueur.php" method="post">
        <table border="0" align="center" cellspacing="2" cellpadding="2">
            <tr>
                <td>Tournoi concerné :</td>
                 <td>
                    <select name="Lieu" >
                        <?php
                        $result = mysql_query("SELECT id,Lieu FROM tournoi WHERE TournoiClos='non'") or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="' . $row['id'] . '">'. $row["Lieu"]. '</option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
                <td>Joueurs déjà crée :</td>
                <td>
                    <select name="Joueur" >
                        <?php
                        $result = mysql_query("SELECT NumLicence,Nom,Prenom FROM joueur ")or die(mysql_error());
                        while ($row = mysql_fetch_array($result))
                        {
                            echo '<option value="' . $row['NumLicence'] . '">'.$row["Nom"].' '.$row["Prenom"].' </option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
     
            <tr align="center">
     
                <td colspan="2">
                    <input type=submit value="Inscription" name="submit" />
                </td>
            </tr>
        </table>
    </form>	
     
    <?php
    if(isset($_POST['Lieu']) && isset( $_POST['Joueur']))
    {
    	//récupération des valeurs des champs:
    	//nombre de joueur max inscrits :
    	$lieu = mysql_real_escape_string($_POST['Lieu']) ;
    	//numéro de téléphone:
    	$joueur = mysql_real_escape_string($_POST['Joueur']) ;
    	$sql = mysql_query("SELECT COUNT(*) FROM inscription WHERE Lieu = '$lieu' AND Joueur = '$joueur' ");
     
    	$doublon = mysql_fetch_row($sql);
    	$doublon = $doublon[0];
    	// Cette entrée n'existe pas !
     
    	if(!$doublon)
    	{	
    		//création de la requête SQL:
    		$query= "INSERT INTO inscription VALUES ('', '$lieu', '$joueur','') " ;
    		mysql_query($query) or die (mysql_error());
     
    			echo '
    			<p>
    				La nouvelle inscription a été enregistrée !
    			</p>';
    	}
    	else
    	{
    		echo '
    		<p>
    			Cette inscription existe déjà !
    		</p>';
    	}
     
    }
    ?>
    </div> 
     </body>
    </html>
    il me reste une modification à faire.
    Il s'agit de l'ajout dans la table inscription d'un champ Classement qui correspond à celui de la table joueur


    et je ne sais pas y insérer cela dans mon code car dans phpmyadmin cette requete n'ai pas sauvegardé et je prefererai mettre cettre requete dans mon code. comment procéder ?

    j'ai testé cette requete qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT idinscrit,inscription.Lieu,inscription.Joueur,joueur.Classement FROM `inscription`
    LEFT JOIN joueur ON joueur.NumLicence=inscription.Joueur
    LEFT JOIN tournoi ON tournoi.id=inscription.Lieu
    ORDER BY `Lieu` ASC

  18. #18
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    Content de voir qu'on est arrivé au but . Pour ce qui est du champs de classement, est-il vraiment nécessaire de l'avoir dans la table d'inscription? À mon avis, c'est plutôt relié à un joueur et comme tu as l'identificateur du joueur dans la table inscription maintenant, tu peux aller aisément chercher son classement avec une requête ressemblant à celle-ci:

    select classement, nom, prenom from inscription
    left join joueur on Joueur = NumLicense

    Désolé si le nom des champs n'est pas tout à fait exact, j'y ai été de mémoire, mais avec une requête comme celle-là, tu peux avoir le classement des joueurs de tous les tournois. Si tu veux restreindre un peu, tu peux ajouter une clause where pour choisir le tournoi que tu veux et/ou le joueur que tu désires.

    select classement, nom, prenom from inscription
    left join on joueur = NumLicense
    where tournoi = 34 and joueur = 12

    On s'entend qu'il s'agit de valeurs fictives, mais je crois que ça peut te donner une idée générique de comment procéder.

    Donc voilà pour tout de suite. Au plaisir

  19. #19
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voici l'enoncé de mon projet pour le classement
    Une fois tous les joueurs inscrits à un tournoi (inscriptions closes), les joueurs sont classés par ordre décroissant de leur classement. En cas d’égalité de classement, on classe par nom et prénom. Chacun aura ainsi un numéro d’appariement définitif (1 pour le plus fort).
    ok mais à quel endroit dans le code puis je mettre cette requete

  20. #20
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Points : 210
    Points
    210
    Par défaut
    De ce que je peux comprendre, tu veux maintenant faire apparaître la liste des joueurs qui sont inscrits à un tournoi en particulier. Ceci ne vas carrément pas dans le code que nous avons actuellement puisqu'il s'agit, de mon point de vue, d'une fonctionnalité séparée de celle que nous avons monté actuellement (i.e. insérer et afficher... pas la même chose). Autrement dit, je créerais deux autre page PHP: afficherInscriptionTournoi.php avec une zone de liste permettant de choisir le tournoi duquel on désire voir les inscription et afficherTournoi.php qui elle va contenir la requête permettant d'afficher les inscriptions avec les paramètres donnés.

    Tu remarqueras que c'est un peu le même pattern que pour l'enregistrement... une page pour entrer les paramètre et une page pour les mettre en action. C'est souvent comme ça qu'on procède en PHP. Voici une idée de la requête qui pourra te faire afficher tes données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $requete = "SELECT Nom, prenom, classement from Joueur left join
    inscription on NumLicense = Joueur
    Where Tournoi = $_POST['Tournoi']
    order by classement DESC, nom, prenom
    Alors voilà pour tout de suite à la prochaine question

Discussions similaires

  1. [MySQL] Problème de jointure pour une requête
    Par HAbroc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/08/2014, 13h05
  2. problème de jointure pour archivage
    Par doudou8mc dans le forum Développement
    Réponses: 1
    Dernier message: 07/10/2009, 14h57
  3. Problème pour inscrire une dll
    Par aloisio11 dans le forum Windows
    Réponses: 0
    Dernier message: 22/04/2008, 09h30
  4. [MySQL] Problème avec les jointure pour un menu
    Par Glocman dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2006, 17h44
  5. Problème de jointure pour affichage "speciale"
    Par webjeux dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/06/2006, 12h23

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